DQL-介绍
- DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。
- 查询关键字:SELECT
DQL语法
语法 | 含义 |
---|
SELECT | 字段列表 | FROM | 表名列表 | WHERE | 条件列表 | GROUP BY | 分组字段列表 | HAVING | 分组后条件列表 | ORDERBY | 排序字段列表 | LIMIT | 分页参数 |
- 基本查询
- 条件查询(WHERE)
- 聚合函数(COUNT,MAX,MIN,AVG,SUM)
- 分组查询(GROUP BY)
- 排序查询(ORDER BY)
- 分页查询(LIMIT)
DQL-基本查询
- 1、查询多个字段
- SELECT 字段1,字段2,字段3…FROM 表名;
- SELECT * FROM 表名;
- 2、设置别名
SELECT 字段1[AS 别名1],字段2[AS 别名2]…FROM 表名; - 3、去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
select name,worknum,age from EMPLOYEE;
SELECT * FROM EMPLOYEE;
SELECT WORKADDRESS AS '工作地址' FROM EMPLOYEE;
SELECT DISTINCT WORKADDRESS FROM EMPLOYEE;
DQL-条件查询
- 1、语法
- SELECT 字段列表 FROM 表名 WHERE 条件列表;
- 2、 条件
比较运算符 | 功能 |
---|
> | 大于 | >= | 大于等于 | < | 小于 | <= | 小于等于 | = | 等于 | <>或!= | 不等于 | BETWEEN…AND… | 在某个范围内(含最小值最大值) | IN(…) | 在IN之后的列列表中的值,多选一 | LIKE 占位符 | 模糊匹配(_匹配单个字符,%匹配任意个字符 | IS NULL | 是NULL |
逻辑运算符 | 功能 |
---|
AND 或 && | 并且 | OR 或 11 | 或者 | NOT 或 ! | 非,不是 |
SELECT * FROM EMPLOYEE WHERE AGE =88;
SELECT * FROM EMPLOYEE WHERE AGE <20;
SELECT * FROM EMPLOYEE WHERE AGE <=20;
SELECT * FROM EMPLOYEE WHERE IDCARD is NULL;
SELECT * FROM EMPLOYEE WHERE IDCARD IS NOT NULL;
SELECT * FROM EMPLOYEE WHERE AGE != 88;
SELECT * FROM EMPLOYEE WHERE AGE BETWEEN 15 AND 20;
SELECT * FROM EMPLOYEE WHERE GENDER = '女' AND AGE<25;
SELECT * FROM EMPLOYEE WHERE AGE IN (18,20,40);
SELECT * FROM EMPLOYEE WHERE ENTRYDATE LIKE '_____12%';
DQL-聚合函数
函数 | 功能 |
---|
count | 统计数量 | max | 最大值 | min | 最小值 | avg | 平均值 | sum | 求和 |
- 3、语法
- SELECT 聚合函数 (字段列表) FROM 表名;
SELECT COUNT(*) FROM EMPLOYEE;
SELECT AVG(AGE) FROM EMPLOYEE;
SELECT MAX(AGE) FROM EMPLOYEE;
SELECT MIN(AGE) FROM EMPLOYEE;
SELECT SUM(AGE) FROM EMPLOYEE WHERE WORKADDRESS='北京';
DQL-分组查询
- 1、语法
- SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件]
- 2、where和having区别
- 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组,而having是分组之后对结果进行过滤。
- 判断条件不同:where不能对聚合函数进行判断,而having可以。
SELECT GENDER,COUNT(*) FROM EMPLOYEE GROUP BY GENDER;
SELECT GENDER,AVG(AGE) FROM EMPLOYEE GROUP BY GENDER;
SELECT WORKADDRESS,COUNT(*) FROM EMPLOYEE WHERE AGE<45 GROUP BY WORKADDRESS HAVING COUNT(*)>=3;
DQL-排序查询
- 1、语法
- SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2;
- 2、排序方式
- 注意:
- 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
SELECT NAME,AGE FROM EMPLOYEE ORDER BY AGE ASC;
SELECT * FROM EMPLOYEE ORDER BY ENTRYDATE DESC;
SELECT * FROM EMPLOYEE ORDER BY AGE ASC,ENTRYDATE DESC ;
DQL-分页查询
- 1、语法
- SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
- 注意:
- 起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数
- 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是limit
- 如果查询的是第一页的数据,其实索引可以省略,直接简写为LIMIT10
SELECT * FROM EMPLOYEE LIMIT 0,10;
SELECT * FROM EMPLOYEE LIMIT 10,10;
|