今日学习内容

  • 数据库介绍
  • datagrip可视化工具使用
  • sql语言:

    • DDL
    • DML
    • DQL
    • DCL

      1.什么是数据库,有什么作用

  • 数据库就是用于存储和管理数据的仓库

  • MySQL属于数据库里面的关系型数据库

    2.SQL语言介绍

  • SQL特点:

    • SQL语句是一个非过程性的语言,每一条SQL执行完都会有一个具体的结果出现,多条语句之间没有影响。
  • SQL分类:

    • DDL:
      • DDL(Data Definition Language)数据定义语言:数据库,表,列等的定义
    • DML
      • DML(Data Manipulation Language)数据操作语言:表中数据记录的更新,增加和删除。
    • DQL
      • DQL(Data Query Language) 数据查询语言:表中记录的查询。
    • DCL
      • DCL(Data Control Language)数据控制语言(了解):设置或更改数据库用户、角色权限

        3. DDL语法

  • 对数据库的创建和查看 | 语法 | 作用 | | —- | —- | | create database [ if not exists] 数据库名称 [ character set 字符集名称 ] | 创建数据库语法 | | show databases | 查看所有数据库 | | show create database 数据库名称 | 查看数据库的定义信息 |

  • 对数据库的修改,删除,切换 | 语法 | 作用 | | —- | —- | | alter database 数据库名称 character set 字符集 | 修改数据库字符集 | | drop database 数据库名称 | 删除数据库 |

  • 对表的创建 | 语法 | 作用 | | —- | —- | | create table 表名 (字段名1 类型1 ,字段名2 类型2 , …) | 创建表 |

  • 字段类型(常用)

    • 整数类型:int
    • 小数类型:double
    • 日期类型:date
    • 字符串类型:varchar(m)
  • 对表的查看以及删除 | 语法 | 作用 | | —- | —- | | show tables | 查看数据库下所有的表 | | desc 表名 | 查看表结构包含字段信息 | | show create table 表名 | 查看创建表的SQL信息 | | drop table [ if exists ] 表名 | 删除表, 加上if exists可以进行判断避免报错 |

  • 对表的修改 | 语法 | 作用 | | —- | —- | | alter table 表名 add 字段名 类型 | 为表添加字段 | | alter table 表名 modify 字段名 新的类型 | 修改表中字段的类型 | | alter table 表名 change 就字段名 新字段名 类型 | 修改字段名 | | alter table 表名 drop 字段名 | 删除字段 | | rename table 旧表名 to 新表名 | 修改表名 | | alter table 表名 character set 字符集 | 修改字符集 |

3. DML语法

  • 对表的插入语法 | 语法 | 作用 | | —- | —- | | insert into 表名 values (v1 , v2 …vn) | 全字段插入 | | intsert into 表名 (字段1 , 字段2) values (v1 , v2) | 选择字段插入 | | intsert into 表名 (字段1,字段2) values (v1 , v2), (v11,v22),….. | 批量插入 |

  • 对表的修改语法 | 语法 | 作用 | | —- | —- | | update 表名 set 字段名 = 新的值 , 字段名 = 新的值,…. | 无条件修改 , 所有字段名都会修改,慎用! | | update 表名 set 字段名 = 新的值 , 字段名 = 新的值, …. where 条件 | 带条件修改 , 可以避免无条件的问题 |

  • 对表的删除语法 | 语法 | 作用 | | —- | —- | | delete from 表名 | 无条件全表删除 , 慎用 | | delete from 表名 where 条件 | 带条件删除 |

4. DQL各类查询语法

  • 简单查询语法 | 语法 | 作用 | | —- | —- | | select 字段名1 ,字段名2 , …from 表名 | 查询指定列数据 | | select * from 表名 | 查询所有表的列 | | select 字段名 as 别名 ,…from 表名 | 查看创建表的SQL信息 | | select 字段名 as 别名 , …from 表名 as 表别名 | 查询时给列或者表取别名,使用as关键字 |

  • 去重查询以及运算 | 语法 | 作用 | | —- | —- | | select distinct 字段1,字段2 from t | 查询结果不出现重复数据 | | select 字段1[+,-,*,/,%] 其他字段 from 表名 | 字段参与运算查询 |

  • 条件查询语法格式 | 语法 | 作用 | | —- | —- | | select 字段1, 字段2,…from 表 where 条件 | 条件查询语法的格式,后面可以跟运算符关键字等.. | | select 字段名 from 表名 where 字段 in (数据1,数据2, ……) | in关键词可以判断某个字段的值是否在指定集合中 | | select 字段名 from 表名 where 字段 between 值1 and 值2 | between and 用于判断数据是否在某个取值范围内 |

  • like 模糊查询 | 语法 | 作用 | | —- | —- | | select * from 表名 where 字段名 like ‘通配符字符串’ | 对字符类型字段进行模糊匹配,查找符合要求的字符串 | | %:表示零到多个字符(任意多个字符)
    : 表示一个字符 ,后面可以加上多个 | MySQL通配符 | | name like ‘张%’ | 所有姓张的成员,不限字数 | | name like ‘%张%’ | 只要有张就可以 | | name like ‘张‘ | 姓张且为两个字 | | name like ‘张_’ | 必须三个字,且姓张 | | name like ‘张_’ | 只有中间是张 |

  • 排序查询 | 语法 | 作用 | | —- | —- | | select 字段1, 字段2,…from 表名 [where 条件] order by 字段[asc|desc] | asc:升序排序(默认,可省略)
    desc:降序排序 | | select 字段,….. from 表名 [where 条件] order by 字段1[asc|desc] | 单列排序:使用一个字段进行排序 | | select 字段,…. from 表名 [where 条件] order by 字段名1[asc|desc],字段名2[asc|desc] | 组合排序:先按第一个字段进行排序,第一个字段相同,然后按第二个字段排序 |

  • 五大聚合函数 | 语法 | 作用 | | —- | —- | | count | 按照列数统计,如果有null忽略改行 | | sum | 计算指定列的数值和 | | max | 计算指定列的最大值 | | min | 计算指定列的最小值 | | avg | 计算指定列的平均值 | | select 聚合函数(字段) from 表名 | 调用函数计算 |

  • 分组查询 | 语法 | 作用 | | —- | —- | | select 字段 , 聚合函数 from 表 [where 条件] group by 字段 [having条件] | group by 后面的字段其值相同则划分一组; 分组时查询出来,否则看不到数据属于哪组 |

  • Having与where区别

    • where关键字后边不能跟聚合函数,但是having可以
    • where关键字用于分组之前条件过滤,having用于分组之后
    • where能用的地方,having都可以用,但是不建议乱用
    • where可以走索引,加快查询速度,但是使用having条件查询不走索引(全表查询)
  • 分页查询
    • select * from 表名 where 条件 limit offset , pageSize
      • 规律: 索引位 = (page - 1) *pageSize
  • 查询的执行顺序:
  1. from 表名
  2. where 条件
  3. group by 字段
  4. having 条件
  5. select 字段
  6. order by 字段
  7. limit offset,row_count
  • 蠕虫复制 | 语法 | 作用 | | —- | —- | | create table 表1 like 表2 | 创建一张和表2一样表结构的表1 | | insert into 表名1 select * from 表名2 | 将表名2中的数据复制到表名1中 |