黑马程序员技术交流社区

标题: 数据库阶段学习笔记 [打印本页]

作者: minaduki2333    时间: 2018-12-10 17:23
标题: 数据库阶段学习笔记
[Java] 纯文本查看 复制代码
   数据库分类


                关系型
                        mysql
                        oracle
                        db2
                非关系型
                        redis
    SQL
    1.什么是SQL?
                Structured Query Language:结构化查询语言
                其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。
               
        2.SQL通用语法
                1. SQL 语句可以单行或多行书写,以分号结尾。
                2. 可使用空格和缩进来增强语句的可读性。
                3. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
                4. 3 种注释
                        * 单行注释: -- 注释内容
                   或          # 注释内容(mysql 特有)
                        * 多行注释: /* 注释 */
    SQL分类
        1) DDL(Data Definition Language)数据定义语言
           用于定义数据库和表、列等,关键字:create, drop,alter 等
        2) DML(Data Manipulation Language)数据操作语言
                用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
        3) DQL(Data Query Language)数据查询语言
                用来查询数据库中表的记录(数据)。关键字:select, where 等
             4) DCL(Data Control Language)数据控制语言(了解)
                用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等
     数据类型
                VARCHAR(长度)
                CHAR(长度)
                TEXT
                DATE
                DATETIME
                TIMESTAMP        默认当前系统时间
  
                      * MySQL服务启动
                        1. 手动。
                        2. cmd--> services.msc 打开服务的窗口
                        3. 使用管理员打开cmd
                                * net start mysql : 启动mysql的服务
                                * net stop mysql:关闭mysql服务
                * MySQL登录
                        1. mysql -uroot -p密码
                        2. mysql -hip -uroot -p连接目标的密码
                        3. mysql --host=ip --user=root --password=连接目标的密码
                * MySQL退出
                        1. exit
                        2. quit
           *netstat -ano | findStr "3306"
            taskkill /F /PID mysql的进程id
       
        * MySQL目录结构
                        1. MySQL安装目录:basedir="D:/develop/MySQL/"
                                * 配置文件 my.ini
                        2. MySQL数据目录:datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
                                * 几个概念
                                        * 数据库:文件夹
                                        * 表:文件
                                        * 数据:数据
     *数据库/表操作
     //数据库操作
        CREATE DATABASE db2;
        CREATE DATABASE IF NOT EXISTS db2;
        CREATE DATABASE db3 CHARACTER SET gbk;
        CREATE DATABASE IF NOT EXISTS db3 CHARACTER SET utf8;

        DROP DATABASE db3;
        DROP DATABASE IF EXISTS db3;

        ALTER DATABASE db1 CHARACTER SET utf8;

        SHOW DATABASES;
        SHOW CREATE DATABASE db2;
     //表操作
        CREATE TABLE student(id INT,stuname VARCHAR(30),age INT);
        CREATE TABLE student2 LIKE student;

        DROP TABLE student;
        DROP TABLE studnet IF EXISTS;

        ALTER TABLE student RENAME TO class;
        ALTER TABLE student CHARACTER SET utf8;
        ALTER TABLE student ADD weight INT;
        ALTER TABLE student CHANGE age birth DATE;
        ALTER TABLE student MODIFY age INT;
        ALTER TABLE studnet DROP age;

        SHOW TABLES;
        DESC student;
     //表中的数据操作
        INSERT INTO student(id,stuname,age)VALUES(1,zhang,20);
        INSERT INTO student VALUES(2,zuo,30);

        DELETE FROM student WHERE id=2;
        TRUNCATE TABLE student WHERE id=2;

        UPDATE student SET age=20,stuname=zoezuo WHERE id=2;

       SELECT * FROM student;

       ALTER TABLE student CHANGE NAME stuname VARCHAR(30);
       UPDATE student SET stuname="张子琪",weight=160 WHERE id=1;
       USE db1;
事务                                START TRANSACTION;                COMMIT;                ROLLBACK;                        四大特性                        原子                        持久                        一致                        隔离                                隔离级别(脏读,不可重复读,虚读,幻读)                        默认隔离界别                                MYSQL --> 3                                ORACLE --> 2                        jdbc        概念                一套接口(java提供的规范)        -->                要求厂商自己实现操作各自数据库的 驱动                面向接口编程        1.注册驱动        2.获取连接        3.创建sql和执行sql的对象        4.执行sql获取结果        5.处理结果        6.释放资源                ps:                1.ResultSet的遍历                        while(rs.next()){                                rs.getObejct(1);                                rs.getObejct("列名")                        }                2.sql注入                        使用        PrepareStatement        配合占位符  ?                        pst.executeQuery()        --> 没有参数                        pst.executeUpdate() --> 没有参数                3.事务                        conn.setAutoCommit(false);                        conn.commit()                        conn.rollback();                                连接池        C3P0                接入步骤:                        1.导jar                                1.c3p0  2个                                2.mysql驱动                        2.导入配置文件(src目录下)                                c3p0-config.xml                        3.使用                                DataSource dataSource = new ComboPooledDataSource();                                Connection con = dataSource.getConnection();                        DRUID(德鲁伊)                接入步骤                                1.导jar                                        1.druid                                        2.mysql驱动                                2.导入配置文件(src)                                        druid.properties                                3.使用                                        Properties pro = new Properties();                                        pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"))                                        DataSource dataSource = DruidDataSourceFactory.createDataSoure(pro)                                        Connection con = dataSource.getConnection();                                                                                        JdbcUtils实现思路                1.获取数据源(连接池)        DataSource                2.获取连接对象                         Connection                3.释放资源                                重载                思路:                        1,2:                                DataSource在类加载的时候就应该初始化,为了保证对象能够及时创建,在 static{} 静态代码块中创建的对象                                        Properties pro = new Properties();                                        pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"))                                        dataSource = DruidDataSourceFactory.createDataSoure(pro)                                                                提供返回数据源的方法 getDataSource()   ---> return dataSource                                提供返回连接                 getConnection()   ---> return dataSource.getConnection()                                                        3:                                在关闭之前做非空判断!!!JdbcTemplate        SPRING        (基于jdbc来简化数据库的操作)                !!!如果有占位符需要传入参数                DataSource dataSource = new ComboPooledDataSource();        JdbcTemplate template = new JdbcTemplate(dataSource);                        增删改                template.update("sql",[具体参数]);                        查询                单条结果                        Map map = template.queryForMap("sql",[具体参数]);                        Bean bean = template.queryForObject("sql",new BeanPropertyRowMapper(Bean.class),[具体参数]);                多条结果                        List<map> list = template.queryForList("sql",[具体参数]);                        List list = template.query("sql",new BeanPropertyRowMapper(Bean.class),[具体参数]);</map







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2