查询:
SELECT selection_list /*要查询的列名称*/
FROM table_list /*要查询的表名称*/
WHERE condition /*行条件*/
GROUP BY grouping_columns /*对结果分组*/
HAVING condition /*分组后的行条件*/
ORDER BY sorting_columns /*对结果排序*/
LIMIT offset_start, row_count /*结果限定*/
基础查询
* 查询所有的列: select * from 表名 ;
* 查询指定的列: select 列名1 , 列名2 , ... from 表名 ;
条件查询
=、!=、<>、<、<=、>、>=;
BETWEEN…AND;
IN(set);
IS NULL; 空不能使用 = 或者 != 进行判断. 需要使用is null 或者 is not null ;
AND;
OR;
NOT;
模糊查询
A: 模糊查询: select 列名1 , 列名2 , ... from 表名 where 字段名 like '值' ;
通配符:
* _ 匹配任意单个字符
* % 匹配任意多个字符
B: 字段控制查
* 去除重复: SELECT DISTINCT sal FROM emp;
* 字段运算: null 参与的运算结果都是null ; 如果是null我们就认为是0: IFNULL(字段名称 , 要取的值)
* 别名: 使用 AS 关键字
排序 查询
A: 排序: order by 字段名 ; 后面可以跟多个排序字段,多个排序字段用”,”隔开
SELECT * FROM stu ORDER BY; 默认是升序
B: 升序: order by 字段名 asc ;
SELECT * FROM stu ORDER BY SUM ASC;
C: 降序: order by 字段名 desc ;
SELECT * FROM stu ORDER BY SUM ASC;
聚合函数和分组
A: 聚合函数: 用来做纵向运算的函数
COUNT():统计指定列不为NULL的记录行数;
MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
B: 分组查询: group by 分组字段 ;
* 注意事项: 在分组以后 , 查询的字段只能是分组字段或者聚合函数
* Where在分组之前,having在分组之后
* 在分组之前对结果进行限定,使用where子句
* 在分组之后对结果进行限定,使用having子句
* 需求: 查询每一个部门的工资总和
Select deptno,sum(sal) from emp group by deptno;
* 需求: 查询每个部门的部门编号以及每个部门的人数
Select deptno,count(1) from emp group by deptno;
* 需求: 查询每个部门的部门编号以及每个部门工资大于1500的人数
Select deptno, count(1) from emp where sal>1500 group by deptno;
* 需求: 查询工资总和大于9000的部门编号以及工资和
Select deptno, count(1) from emp group by deptno having sum(sal)>9000;
C: 分页: limit 开始的记录角标 , 每一页的条数 ;
Select * from emp limit 0 , 5 ;
公式: 开始的记录角标 = (页码 - 1) * 每一页的条数
select empno , ename , job from emp ;
select * from emp where ename = 'smith';
SELECT * FROM emp WHERE ename != 'smith';
SELECT * FROM emp WHERE ename <> 'smith';
SELECT * FROM emp WHERE sal >= 1100 ;
SELECT * FROM emp WHERE sal >= 1250 AND comm > 400 ;
SELECT * FROM emp WHERE sal >= 1250 OR comm > 400 ;
SELECT * FROM emp WHERE comm IS NULL ;
SELECT * FROM emp WHERE comm IS NOT NULL ;
查询emp表中empno是7369 或者 7499 或者 7521的员工信息
SELECT * FROM emp WHERE empno = 7369 OR empno = 7499 OR empno = 7521 ;
SELECT * FROM emp WHERE empno IN (7369 , 7499 , 7521) ;
SELECT * FROM emp WHERE empno NOT IN (7369 , 7499 , 7521) ;
SELECT * FROM emp WHERE empno BETWEEN 7782 AND 7902 ;
SELECT * FROM emp WHERE ename LIKE '%M%';
_: 表示匹配任意单个字符
%: 表示匹配任意多个字符
查询ename由4个字母组成的员工的数据
SELECT * FROM emp WHERE ename LIKE '____' ;
查询ename由M开始的员工的数据
SELECT * FROM emp WHERE ename LIKE 'M%' ;
SELECT DISTINCT sal FROM emp ;
SELECT * FROM emp ;
null在参与运算的时候结果都是null
ifnull(字段名称 , 值)
SELECT * , sal + comm FROM emp ;
SELECT * , sal + IFNULL(comm , 0) FROM emp ;
as 关键字用来起别名
SELECT * , sal + IFNULL(comm , 0) AS income FROM emp ;