常用聚合函数
COUNT():统计指定列不为NULL的记录行数;
MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算
SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
COUNT 使用
SELECT COUNT(*) FROM 表名;
分组查询:
SELECT name FROM 表名 GROUP BY name;
在使用分组时,select后面直接跟着的字段一般都在出现在group by后
HAVING和WHERE的区别
HAVING是在分组后对数据进行过滤;
WHERE是在分组前对数据进行过滤;
HAVING后面可以使用分组函数(统计函数);
WHERE后面不可以使用分组函数;
WHERE是对分组前记录的条件,如果某行记录没有满足where子语句的条件,那么这行记录不参与分组;而HAVING是对分组后的数据约束;
例:
(SELECT department,GROUP_CONCAT(salary),SUM(salary)
FROM employee
WHERE salary > 2000
GROUP BY department
HAVING SUM(salary)>9000;
ORDER BY SUM(salary) DESC;
)
书写顺序
SELECT --> FROM --> WHERE --> GROUP BY --> HAVING --> ORDER BY --> LIMIT
书写顺序
SELECT --> FROM --> WHERE --> GROUP BY --> HAVING --> ORDER BY --> LIMIT
LIMIT 参数1, 参数2
参数1:从哪一行开始查
参数2:一共要查几行
约束类型
主键约束(primary key)
特点:
(创建)每个表中要有一个主键
数据唯一,且不能为null
联合主键:两个字段数据同时相同时,才违反联合主键约束
(先创建表再添加主键
CREATETABLEstudent(sidINT,nameVARCHAR(50));
# 如果表中你之前已经添加了数据,数据不符合主键规则就会报错ALTERTABLEstudentADDCONSTRAINTprimarykey(sid);
)
唯一约束(unique)
(指定列的数据不能重复,可以为空值
)
自动增长(auto_increment)
指定列的数据自动增长
即使数据删除,还是从删除的序号继续往下
非空约束(NOT NULL)
默认值约束(DEFAULT)
参照完整性:
什么是参照完整性
是指表与表之间的一种对应关系,通常情况下可以通过设置两表之间的主键、外键关系,或者编写两表的触发器来实现,有对应参照完整性的两张表格,再对他们进行数据插入,更新,删除的过程中,系统都会将被修改表格与另外一张对应表格进行对照,从而阻止一些不正确的数据的操作
数据库的主键和外键类型一定要一致
两个表必须要是InnoDB引擎
设置参照完整性后,外键当中的内值,必须得是主键当中的内容
一个表设置当中的字段设置为主键,设置主键的为主表
创建表时,设置外键,设置外键的为子表