一、单表查询
1、基本查询
查询多个字段
select 字段1,字段2,字段3... from 表名;
查询所有字段返回
select * from 表名;
设置别名
select 字段1 [as 别名1],字段2 [as 别名2] ... from 表名;
注意:as可以省略不写
去除重复记录
select distinct 字段列表 from 表名;
2、条件查询(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 null;
⑤查询有身份证号的员工信息。
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 <=20;
3、聚合函数(count、max、min、avg、sum)
①统计该企业员工数量。
select count(*) from emp ;
select count(id) from emp ; //count(某个字段)
select count(idcard) from emp ; //count(某个字段)
②统计该企业员工的平均年龄。
select avg(age) from emp;
③统计该企业员工的最大年龄。
select max(age) from emp;
④统计该企业员工的最小年龄。
select min(age) from emp;
⑤统计西安地区员工的年龄之和。
select sum(age) from emp where workaddress = “西安”;
4、分组查询(group by)和分组后条件列表(having)
①根据性别分组,统计男性员工 和 女性员工的数量。
select gender,count(*) from emp group by gender;
②根据性别分组,统计男性员工 和 女性员工的平均年龄。
select gender,avg(age) from emp group by gender;
③查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址。
select workaddress ,count(*) from emp
where age < 45
group by workaddress
having count(*) >= 3;
select workaddress ,count(*) address_count from emp
where age < 45
group by workaddress
having address_count >= 3;
5、排序查询(order by)
①根据年龄对公司的员工进行升序排序
select * from emp order by age asc;
②根据入职时间,对员工进行降序排序
select * from emp order by entrydate desc;
③根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序
select * from emp order by age asc , entrydate desc;
注意:默认asc排序是可以省略不写的。
6、分页查询(limit)
①查询第1页员工数据,每页展示10条记录
select * from emp limit 0,10;
-- 或者
select * from emp limit 10;
①查询第2页员工数据,每页展示10条记录------(页码-1)*页展示记录数
select * from emp limit 10,10;
7、案例实操
1.
select * from emp where age in (20,21,22,23);
2.
select * from emp
where gender="男"
and (age between 20 and 40)
and name like "___";
3.
select gender,count(*) from emp
where age < 60 group by gender;
4.
select name,age from emp
where age <= 35
order by age asc, entrydate desc;
5.
select * from emp
where gender="男"
and age between 20 and 40
order by age asc, entrydate desc
limit 5;