2 .5.3 排序查询
使用关键字order by
排序方式:
升序:默认,asc
降序:desc
例如:对员工的销售额进行降序排列
select * from emp order by sales desc;
例如:升序查询所有女性员工的工资
select * from emp where sex ="女" order by money asc;
注:如果多个条件进行排序,只有当前一个条件的值相同时,才会比较第二个条件
格式:order by 排序字段1 排序方式 ,排序字段2 排序方式 ,...
例如:以工资降序的方式查询所有员工,如果工资相同则按销售额升序排列
select * from emp order by money desc, sales;
2.5.4 聚合函数
概念:将一列数据作为一个整体,进行纵向的计算。
avg():计算平均值
sum():求和
max():求最大值
min():求最小值
count():求个数
count()中一般使用非空字段->主键 或者 *
计算平均工资
select avg(money) from emp;
计算总销售额
select sum(sales) from emp;
查询工资最高的员工
select * from emp where money = (select max(money) from emp)
统计部门字段为空的人数
select count(*) from emp where department is null;
注:聚合函数的计算排除null值
2.5.5 分页查询
语法:limit 开始索引,每页查询的记录数
注:索引从0开始
公式:开始索引 = (当前页码 - 1) * 每页查询的记录数
2.5.6 分组查询
语法:group by 分组字段
注:
分组后查询的字段应该是:分组字段、聚合函数
where和having的区别: 1. where在分组前进行筛选,如果不满足where条件则不进入分组。having在分组后进行筛选,如果不满足则不被查询到 2. where后不能跟聚合函数,having后可以使用聚合函数进行筛选
查询每个部门的平均销售额
select avg(sales), department from emp group by department;
查询男员工和女员工的最高收入
select sex,max(money) from emp group by sex;
查询每个部门女性员工的平均销售额,以平均销售额降序方式排列
select avg(sales),department from emp where sex ="女" groupby department order by avg(sales) desc;
查询平均销售额超过9000的部门
select avg(sales),department from emp group by department having avg(sales) >9000;
查询每个部门男性员工平均销售额超过9000的部门
selectavg(sales),departmentfromempwheresex ='男'groupbydepartmenthavingavg(sales) >9000;
2.6 约束
概念:对表中数据进行限定
分类:
1. 非空约束:not null
唯一约束:unique
主键约束:primary key
外键约束:foreign key
2.6.1 非空约束
限定字段值不能为空
创建表时,添加非空约束
createtable表名(字段名 字段类型notnull, 字段名 字段类型 [约束], ...);
创建表后,添加非空约束
altertable表名 modify 字段名 字段类型notnull;
注:已存在空值的字段不能被设置成非空的
删除非空约束(设置字段允许有空值)
altertable表名 modify 字段名 字段类型;