A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 月落 初级黑马   /  2019-5-9 13:46  /  543 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

MySQL数据库学习小结:

1. 安装MySql和客户端SQLyog


2. 了解SQL的分类:

- DDL:数据定义语言。定义database、table等等
   
- DML:数据操作语言。数据的增、删、改
   
- DQL:数据查询语言。查询数据
   
- DCL:数据控制语言。DBA使用的,管理MySql的用户、权限等等
   
- TCL:事务管理语言。进行事务管理的


3. DDL:操作database
   
- 创建database  create database 数据库名称
   
- 查看database show databases;  show create database 数据库名称
   
- 删除database drop database 数据库名称
   
- 使用database use 数据库名称   select database()


4. DDL:操作table
   
1. 创建table  create table 表名(字段名1 类型, 字段名2 类型,...)
   
2. 查看table  show tables, desc 表名称,  show create table 表名称
   
3. 删除table  drop table 表名
   
4. 修改table
      
   1. 添加字段:alter table  表名  add 字段名 类型
      
   2. 修改字段名:alter table 表名 change 原字段名  新字段名 类型
      
   3. 修改字段类型:alter table  表名 modify 字段名 新类型
      
   4. 删除字段:alter table 表名 drop 字段名
      
   5. 重命名表:rename table 表名 to 新表名


5. DML:
   
1. 添加数据:insert into 表名(字段1, 字段2, ...) values (值1, 值2, ...)
  
2. 修改数据:update 表名 set 字段1=值1, 字段2=值2,... where 条件
   
3. 删除数据:delete from 表名 where 条件


6. DQL:
   
1. 查询所有 select * from 表名
   
2. 查询指定字段 select 字段1, 字段2, .. from 表名
   
3. 查询处理null值 select ifnull(字段,默认值) from 表名
   
4. 查询并运算 select 字段1+100,  字段2-字段1, ... from 表名
   
5. 查询起别名 select 字段1 as 别名1,  字段2  别名2 from 表名
   
6. 去重查询 `select distinct 字段1, 字段2,.. from 表名





1. DQL所有的查询

2. 了解备份和恢复:SQLyog


3. 了解约束:
   
1. 主键约束
         1.) 作用:一张表的唯一标识,非空唯一
   2.) 语法:字段名 类型 primary key auto_increment
   
2. 唯一性约束
      1.) 作用:限制字段值唯一不能重复(可以为null)  2. )语法:字段名 类型 unique
   
3. 非空约束
         1.) 作用:限制字段值不能为空
   2.语法:字段名 类型 not null
   
4. 默认值约束
      1.) 作用:不设置字段值,就取默认值
  2.)语法:字段名 类型 default 默认值
   
5. 外键约束
         1.) 作用:限制字段值,必须从主表的主键取值
  2. )语法:foreign key(外键字段) references 主表(主键)

4. 表关系:
   1. 一对一
   
                    2. 一对多
      1. 建表原则:在从表(多的一方)设置外键,指向主表(一的一方)的主键
   
                    3. 多对多
      1. 建表原则:创建一张中间关系表,维护多对多关系(外键字段分别维护两张表的关系)





1. 范式了解
   - 1NF:列不可分割
   - 2NF:表里的字段完全依赖于主键
   - 3NF:表里字段引用其它表值时,要把字段设置成外键、引用其它表的主键


2. 多表查询   1. 查询技巧:
      1. 确定数据在哪些表里
      2. 确定这些表的关联条件
      3. 关联之后,筛选想要的数据
   
                    2. 内连接查询:查询表里必定有关联的数据
      1. 隐式内连接
      2. 显式内连接
   
                    3. 外连接查询:查询一张表的全部数据,以及另外一张表的关联数据
      1. 左外连接:查询左表的全部数据,及右表的关联数据
      2. 右外连接:查询右表的全部数据,及左表的关联数据
   
                    4. 子查询:是查询技巧,没有固定语法,查询嵌套
      1. 子查询结果是一行一列:一个值
      2. 子查询结果是多行一列:一个集合
      3. 子查询结果是多行多列:一个虚拟表


3. 事务
   1. 事务的作用:保证 事务里多个操作,要么全部成功,要么全部失败
             2. 什么时候用事务:多个DML操作
   
             3. 了解事务管理的方式:
      1. 自动提交的方式
         
                                                                          1. 关闭自动提交set autocommit=0
         
                                                                          2. 执行DML操作
         
                                                                          3. 提交事务commit/回滚事务rollback
      
                                                        2. 手动提交的方式
         
                                                                          1. 开启事务start transaction
        
                                                                          2. 执行DML操作
         
                                                                          3. 提交事务commit/回滚事务rollback
   
4. 了解事务的原理
   

5. 了解事务的回滚点
  

6. 记住事务的四大特性:A原子性 C一致性  I隔离性  D持久性
   

7. 记住事务并发的问题:脏读、不可重复读、虚读/幻读
   

8. 了解解决事务并发问题的方式:设置事务的隔离级别
          1. read uncommitted:存在:脏读、不可重复读、虚读/幻读;         解决了:无

          2. read committed:存在:不可重复读、虚读/幻读;        解决了:脏读

          3. repeatable read:存在:虚读/幻读;          解决了:脏读、不可重复读

          4. serializable:存在:无;         解决了:脏读、不可重复读、虚读/幻读

        



1. JDBC的快速入门步骤:导入jar包之后,代码有6步:
1. 注册驱动
   
                                                                                 2. 获取连接
   
                                                                                 3. 创建SQL执行平台
   
                                                                                 4. 执行SQL语句
   
                                                                                 5. 处理结果
   
                                                                                 6. 释放资源


2. Statement执行SQL的几种方法:
     //执行DQL
       ResultSet resultSet = statement.executeQuery(sql);
      
                                                          //执行DML,返回值int,表示影响行数
       int count = statement.executeUpdate(sql);
      
                                                         //执行其它SQL,返回boolean,表示是否执行了查询/是否有结果集产生
       boolean isQuery = statement.execute(sql);


3. 处理结果集ResultSet的方法:
       while(resultSet.next()){
                                                                                           //一定要先next一次,才可以获取数据
           
                                                                                           XXX value = resultSet.getXXX(int 列序号);//列序号从1开始
         
                                                                                           XXX value = resultSet.getXXX(String 列名称);
      
                                                                                          }



1. JDBC的事务管理
   1. 相关的方法:都是Connection对象的方法
      
                                                                1. 开启事务:setAutoCommit(false)
      2. 提交事务:commit()
      3. 回滚事务:rollback()
  

2. 事务管理的步骤
:try{
                                      // 获取连接
                                     // ==开启事务:获取连接之后,执行SQL之前开启即可
                                      //创建SQL执行平台
                                     //执行SQL语句
                                      //处理结果
                                     //==关闭事务:提交事务,在关闭连接之前提交事务即可
                                    }catch(Exception e){
                                                                     //==关闭事务:回滚事务
                                                                  }finally{
                                                                               //释放资源
                                                                             }                              




1. 掌握预编译对象的使用
   1. 改造SQL语句:把参数写成占位符?
   
                                        2. 编译SQL,得到预编译对象:PreparedStatement pstmt = connection.prepareStatement(sql)
  
                                        3. 设置SQL的参数值:pstmt.setXXX(参数序号,  参数值)
   
                                        4. 执行SQL语句:pstmt.executeQuery();pstmt.executeUpdate()


2. 预编译对象的好处:
   1. 解决了SQL注入漏洞
   2. 性能高:同一语句,只要编译一次,可以执行多次
   3. 提高可读性:SQL语句易读


3. 理解装饰者模式:进行方法的功能增强


4. 理解连接池的原理:


5. 理解连接池的好处:
   1. 效率高
   2. 连接循环使用:
      1. 少量连接,可以支持大量的数据库操作;不用创建大量的Connection对象,避免内存溢出
   
                                                                                       2. 创建的连接少了,避免数据库所有可用连接,都被占用,导致没有连接可用


6. 掌握c3p0/druid连接池的使用
   1. 导入jar包
   
                                                   2. 提供配置文件
      1. 无论什么连接池,都有一些必须的配置项:1. 数据库连接地址
2. 数据库的用户名
3. 数据库的密码
4. 数据库的驱动类名(建议提供)
      
                                                                                 2. c3p0的配置文件:c3p0-config.xml,放在src下(类加载路径下)
      
                                                                                 3. druid的配置文件:xxx.properties,建议放在src下
   
                                                   3. 编写代码,使用连接池
      1. 创建一个连接池对象
         1. c3p0连接池对象的创建:new ComboPooledDataSource()
         
                                                                                                                                         2. druid连接池对象的创建:DruidDataSourceFactory.createDataSource(properties对象)
      
                                                                                              2. 从连接池中获取一个连接:getConnection()
      3. 使用连接操作数据库
      4. 归还到连接池:connection.close()

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马