DQL


查询:

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 ;

原文地址:https://www.cnblogs.com/loaderman/p/6415257.html