DQL查询语句
1.排序查询
order by 子句;
order by 排序字段1 排序方式1,排序字段2 排序方式2;
ASC升序(默认) DESC降序
**注意:**多个排序条件时,前一个排序值一样时才会判断后一个条件
**2.聚合函数:**将一列数据作为一个整体,进行纵向计算
count:计算个数select count(列) from 表;max:最大值select max(列) from 表;min:最小值select min(列) from 表;sum:求和select sum(列) from 表;avg:平均值select avg(列) from 表;
**注意:**聚合函数的计算会排除所有的null值。
3.分组查询
SELECT 需求 FROM 表 GROUP WHERE 条件 BY 分组字段;
SELECT 需求 FROM 表 GROUP BY 分组字段 HAVING 条件;注意:where 在分组前进行限定,并且后面不能跟聚合函数;having在分组后进行限定,后面可以进行聚合函数的判断。
4.分页查询
SELECT * FROM 表 limit 开始的索引,每页查询的数据;
开始的索引=(当前页码-1)*每页显示的条数
约束:
分类:
主键约束:primary key
非空约束:not null
唯一约束:unique
外键约束:foreign key
级联操作:ALTER TABLE 表名 ADD CONSTRAINT 外键名称
FOREIGN KEY(外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATA CASCADE ON DELETE
CASCADE;
ON UPDATA CASCADE:级联更新
ON DELETE CASCADE:级联删除
数据库的设计
1.多表之间的关系:
一对一
一对多(多对一)在多的一方建立外键,指向一的一方的主键多对多2需要借助第三张中间表,中间表至少包含两个字段,分别作为外键指向另外两张表的主键。
2.数据库设计的范式:
第一范式(1NF):每一列都是不可分割的原子项
第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于码
*函数依赖:*若通过A属性的值可以确定一个唯一B属性,则称B依赖于A。
*完全函数依赖:*若A是一个属性组,则B属性值的确定需要依赖于A属性组中所有的属性值。
*部分函数依赖:*若A是一个属性组,则B属性值的确定只依赖于A组中某一些值。
*传递函数依赖:*通过A确定唯一B,通过B确定唯一C。
第三范式(3NF):在2NF的基础上,任何非主属性不依赖于其他非主属性