一、基本查询
1、字段(列)控制
1)查询所有列
select * from 表名;
2)查询所有列
select 列名1,列名2 from 表名;
3)完全重复的记录只一次
select distinct * | 列名1,列名2 from 表名;
4)列运算
1 数量类型的列可以做加、减、乘、除运算(非数量类型会被当成0)
select *,sal*1.5 from emp;
select sal*1.5 from emp;
select *,sal+ifnull(comm,0) from emp;
注:null和任何数字相加还是null 所以使用ifnull(comm,0),把null转换为0
2字符串类型可以做连续运算
select concat(ename,job) from emp;
3给列起别名(as可以省略)
select concat(ename,job) as '描述' from emp;
select ename as 姓名,job as 工作 from emp;
2、条件查询
1)条件查询
select * from emp where sal>20000 and sal is not null ;
select * from emp where job in('销售员','经理');
3、模糊查询
1)条件查询
select * from emp where ename like '张_'; 查询以张字开头的人名,且为二字人名
_:代表任意一个字符
select * from emp where ename like '%刚'; 查询以刚结尾的名字
%: 代表0到N个字符,
select * from emp where ename like '%刚%'; 带刚的都能查出来
二、排序
1、升序
select * from emp order by sal asc; 升序
2、降序
select * from emp order by sal desc; 降序
3、使用多列作为排序条件
select * from emp order by sal desc,COMM desc;
三、聚合函数
1、COUNT
select count(*) from emp; 一行所有值为null时,才不计数
select count(ename) from emp; ename列不为NULL时,累加1
2、SUM
select sum(sal) from emp; 合计sal列的值,自动把null当0算
3、MAX
select max(sal) from emp;
4、MIN
select min(sal) from emp;
5、AVG
select avg(sal) from emp;
6、综合:
mysql> select count(*) 人数,sum(sal) 工资总和,max(sal) 最高薪水,min(sal) 最低薪水 from emp;
四、分组查询
1、
select job,count(*) from emp group by job;
select job,count(*),max(sal) from emp group by job;
select deptno ,count(*) from emp where sal>12000 group by deptno; 分组前的条件
查询各部门sal>12000的人数,通过deptno分组
select deptno ,count() from emp where sal>12000 group by deptnohaving count()>2; 分组后的条件
查询各部门sal>12000的人数,且只显示人数超过2的部门
书写顺序 select -> from -> where -> group by -> having -> order by
五、limit子句(方言)
select * from emp limit 0,5 ; 表示从第0行开始查询,查询最多五条记录,不够5行有几行输出几行