1.概括:
#DQL,数据查询语言,用来查询数据库中表的记录
/*select 基本查询
where 条件查询
group by 分组查询
order by 排序查询
limit 分页查询*/
2.
#1.基本查询
#查询多个字段
select name,workno,age from emp;
#设置别名
select workaddress as '工作地址' from emp;#as可以省略
#去除重复记录
select distinct name '名字' from emp;#distinct
3.
#2.条件查询
select * from emp where age<=20;#查询年龄小于等于20
select * from emp where age<>18;#查询年龄不等于18
select * from emp where age>=15 and age<=18;
select * from emp where age between 15 and 19;
select * from emp where idcard is not null;#查询身份证号不是空的
select * from emp where gender='男' and age<=17;
select * from emp where age=18 or age=17 or age=19;
select * from emp where age in(17,18,19); #等价于or
select * from emp where name like '__'; #查询名字为两个字的名字
select * from emp where idcard like '%6'; # %代表6前面的所有字符
4.
#3.分组查询
#聚合函数(所有的null值不参与)
select count(*) from emp; #统计数量
select count(idcard) from emp;
select avg(age) from emp;#统计平均年龄
select max(age) from emp;#查询最大年龄
select sum(age) from emp where workaddress='江西理工大学信息学院'; #统计江西理工大学的学生年龄总和
#where和having的区别:执行时机不同,where在分组之前,having是分组之后对结果进行过滤;where不能对聚合函数进行判断,而having可以
select gender,count(*) from emp group by gender;#根据性别分组,统计男女的数量
select gender,avg(age) from emp group by gender;#根据性别分组,统计男女的平均年龄
select workaddress,count(*) from emp where age<45 group by workaddress having count(*)>=3;#查询年龄小于45的员工,根据工作地址分组,获取员工数量》=3的工作地址
5.
#4.排序查询
select * from emp order by age asc;#根据年龄升序排序
select * from emp order by age desc ;#根据年龄进行降序排序
select * from emp order by entrydate desc;#根据入职时期降序排序
select * from emp order by age asc,entrydate desc; #根据年龄升序排序,年龄相同,再按照入职时期进行排序
6.
#5.分页查询
select * from emp limit 0,3;#从第一页开始,每页查询3条记录
select * from emp limit 3,5;#查询第二页数据,每页展示5条记录——————>(页码-1)*上页展示记录数
7.
#6.练习
#查询年龄20,19,18的女性员工信息
select *from emp where age in(18,19,20) and gender='女';
#查询性别为男,并且年龄18-20且姓名为三个字
select *from emp where gender='男' and age between 18 and 20 and name like '___';
#统计年龄小于19的男性和女性数量
select gender,count(*) from emp where age<19 group by gender;
#查询年龄小于等于35员工的性别和年龄,并对查询结果按年龄升序排列,相同就按入职时间降序排列
select name,age from emp where age<=35 order by age,entrydate desc;
8.
#7.编写顺序
#select+字段列表+from+表名+where+条件列表+group by+分组字段列表+having+条件列表+order by+排序字段列表+limit+分页参数
#8.执行顺序
#from+表名+where+条件列表+group by+分组字段列表+having+条件列表+select+字段列表+order by+排序字段列表+limit+分页参数
9.
#9.总结
#select+字段列表+from+表名
#where+条件列表 <> like betweenand and or
# group by+分组字段列表+having+条件列表
# order by+排序字段列表
# limit+分页参数