一,DQL
1.基本查询
(1)查询多个字段:select 字段1,字段2,字段3...from 表名
(2)查询全部字段(通配符):select * from 表名
(3)去除重复记录:select distinct 字段列表 from 表名
(4)注意事项:*号代表查询所有字段,在实际开发中尽量少用(不直观,影响效率)
2.条件查询(where)
(1)条件:比较运算符和逻辑运算符
(2)语法:select 字段列表 from 表名 where 条件列表
3.聚合查询
(1)聚合函数
①count:统计数量
②max:最大值
③min:最小值
④avg:平均值
⑤sum:求和
(2)语法:select 聚合函数(字段列表) from 表名
(3)注意事项:nul值不参与所有聚合函数运算
4.分组查询
(1)语法:分组查询:select 字段列表 from 表名 [ where 条件 ] group by 分组字段名 [ having 分组后过滤条件 ]
(2)where与having的区别
①where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤
②where不能对聚合函数进行判断,而having可以
5.排序查询
(1)语法:select 字段列表 from 表名 [ where 条件列表] [group by 分组字段] order by 字段1 排序方式1, 字段2 排序方式2 …
(2)排序方式:ASC 升序,DESC 降序
(3)注意事项:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序
6.分页查询
(1)语法:select 字段列表 from 表名 limit 起始索引, 查询记录数
(2)注意事项
①起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数
②分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT
③如果查询的是第一页数据,起始索引可以省略
7.SQL语句执行顺序:from > where > group by > having > select > order by>limit
二,多表设计
1.一对多
(1)设计方法:多的一方创建外键,对应一的一方的主键
(2)实际项目一般使用逻辑外键,物理外键影响增、删、改的效率,容易引发数据库的死锁问题,消耗性能
2.一对一:一张表字段比较多,经常只查询某几个字段,可以将这张表拆分为2张表,在任意一张表添加外键关系即可
3.多对多:如果两张表是多对多关系,需要通过建立中间表来解决,在中间表中至少包含两个表外键,分别关联两张表主键