基本语法
select
字段列表
from
表名列表
where
条件列表
group by
分组字段列表
having
分组后条件列表
order by
排序字母列表
limit
分页参数
基本查询
查询多个字段
select 字段1,字段2,字段3... form表名;
select * from 表名;
1-2 案例
select name,workno,age from emp;
select id,workno,name,gender,age,idcard,woraddress,entrydate from emp;
select * from emp;
字段设置别名
select 字段1 [As 别名1],字段2[As 别名2] ...from 表名;
select 字段1 [别名1],字段2[别名2] ...from 表名;
1-3 案例
select woraddress as '工作地址' from emp;
去除重复记录
select distinct 字段列表 from 表名;
1-4 案例
select distinct woraddress '工作地址' from emp;
条件查询
语法
select 字段名 from 表名 where 条件列表;
条件
比较运算符
逻辑运算符
查询年龄等于 88 的员工
select * from emp where age = 88;
查询年龄小于 20 的员工
select * from emp where age < 20;
查询年龄小于等于 20 的员工
select * from emp where age <= 20;
查询没有身份证的员工
select * from emp where idcard is not null;
查询年龄不等于 88 的员工(二者取一)
select * from emp where age != 88;
select * from emp where age <> 88;
查询年龄在 15 岁包含到 20 岁包含之间的员工(三者取一)
select * from emp where age >=15 && age <= 20;
select * from emp where age >=15 and age <=20;
select * from emp where age between 15 and 20;
查询性别为女且年龄小于 25 岁的员工
select * from emp where gender = '女' and age < 25;
查询年龄等于 18 或 20 或 40 的员工
select * from emp where age = 18 or age = 20 or age =40;
select * from emp where age in (18,20,40);
查询姓名为两个字的员工__%
select * from emp where name like '__';
查询身份证最后一位是 X 的员工
select * from emp where idcard like '%9';
聚合函数
将一列数据作为整体,进行纵向计算
常见聚合函数
语法
select 聚合函数(字段列表) from 表名;
注意:NULL 值是不参与所有聚合函数运算的
案例
统计该企业员工数量
select count(*) from emp;
select count(idcard) from emp;
对于 count 聚合函数,统计符合条件的总记录数,还可以通过 count(数字 / 字符串)的形式进行统计查询,比如:
select count(1) from emp;
统计该企业员工的平均年龄
select avg(age) from emp;
统计该企业员工的最大年龄
select max(age) from emp;
统计该企业员工的最小年龄
select min(age) from emp;
统计广东地区员工的年龄之和
select sum(age) from emp where woraddress = '广东';
分组查询
语法
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
where 与 having 区别
执行时机不同:where 是分组之前进行过滤,不满足 where 条件,不参与分组;而 having 是分组之后对结果进行过滤
判断条件不同:where 不能对聚合函数进行判断。而 having 可以。
案例
根据性别分组,统计男性员工和女性员工的数量
select gender,count(*) from emp group by gender;
根据性别分组,统计男性员工和女性员工的平均年龄
select gender, avg(age) from emp group by gender;
查询年龄小于 45 的员工,并根据工作地址分组,获取员工数量大于等于 3 的工作地址
select woraddress, count(*) from emp where age < 45 group by woraddress having woraddress >=3;
统计各个工作地址上班的女性及女性员工的数量
select woraddress,gender,count(*),'数量' from emp group by gender,woraddress;
排序查询
语法
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
排序方式
ASC: 升序(默认值)
DESC: 降序
注意事项
如果是升序,可以不指定排序方式 ASC;
如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序
案例
根据年龄对公司的员工进行升序排序
select * from emp order by age asc;
select * from emp order by age;
根据入职时间,对员工降序排序
select * from emp order by entrydate desc;
根据年龄对公司进行升序排序,年龄相同,再按照入职时间进行降序排序
select * from emp order by age asc,entrydate desc;