今天在课余又学了javaWeb的一些内容,把MySQL重新下好了
DQL 聚合函数
聚合函数:将一列数据作为一个整体,进行纵向计算
count 统计数量
max/min 最值
sum 求和
avg 平均数
select count (id)from stu;括号内的列名不能为空,有空的项不算数
count取值:或者主键
select max(math)from stu;
所有这些函数都会默认排除null值
分组查询
select 字段列表 from 表名 [where 分组前条件限定] group by 分组字段名 [having 分组后条件过滤]
select sex avg(math)from stu group by age;
select sex avg(math)from stu where math > 70 group by age having count()>2;分数低于70不参与,只要数据项大于2的组别
执行顺序:where >聚合函数>having 所以where不可以加聚合函数进行判断
分页查询
select 字段列表 from 表名 limit 起始索引,查询条目数
select * from 表名 limit 0,3 从0开始查询三条数据
select * from 表名 limit 3,3 查询第二页数据(每页三条)
起始索引往往得动态计算:(当前页码-1)*每页显示的条数=起始索引
limit是MySQL的方言,其他数据库关键字不一样;
group by and having常用于统计场景
第二部分 约束
约束:对表中数据的限制,保证填入表中数据的正确性,有效性和完整性
概念:作用于表中列上的规则,用于限制加入表中的数据
分类:非空约束:列中不得有null
唯一约束:保证列中数据不得重复
主键约束:非空且唯一,一张表中只能有一个
检查约束:保证列中值满足某一条件(MySQL不支持该约束,得靠代码了)
默认约束:保存数据时,未指定值使用默认值,可以有null
外键约束:让两个表建立连接
自动增长:当列是唯一约束且是数字类型
案例:
id int primary key;(主键约束的id)
ename not null unique;(非空且唯一)
salary default 0;(奖金默认为0)
数据库设计
多表查询
事务