三范式
第一范式:关系型数据库的基本要求,不满足第一范式不是关系型数据库;表中每一列都是不可能分割的原子列,同一列不能存储多个值
第二范式:要求每一列或每一行必须可以被唯一区分(主键)
第三范式:要求表中不能包含已存在其他表中的非主键字段信息
定义多表的好处:简化指定表的设计
一定程度上提高了数据查询的效率
进行多表联查,一定给不同的表定义别名,通过别名.列名,显示表中指定列
进行多表联查时,一定建立表与表之间的关联字段;因此关联字段的个数是n-1,其中n表示表的个数
多表联查编写SQL的规则
明确数据来源哪些表,编写FROM语句,并给指定的表定义别名
明确需要查询的列,编写SELECET语句,通过指定表别名.列名定义
定义表与表之间的关联条件(WHERE)
分类
内连接查询
1.显示内连接查询--推荐使用:将关联的表定义在JOIN语句中,并且将关联的字段定义在ON语句中
2.隐式内连接:将表与表之间的关联字定义在WHERE语句中
外连接查询
左外连接查询:在FORW语句中定义主要查询的表
右外连接查询:在JOIN语句中的定义主要查询的表
分组查询
COUNT:统计条数
SUM:求和操作
AVG:平均值
MAX:列的最大值
MIN:列的最小值
对NULL值进行忽略处理,因此一般配合IFNULL(列名,替换值)使用
使用分组查询。查询结果会按照分组字段进行升序排序
实际开发中并不是所有查询都需要分组所以使用ORDER BY
GROUP BY是先分组在查询
过滤查询
HAVING 分组过滤条件