一、引言
1、介绍:
分类 | 全称 | 描述 |
DQL | 英文全称:Data Query Language(数据查询语言) | 主要是学习对数据库表中的记录进行查询的语句 |
2、讲解
日常的开发中或者对于一个正常的业务系统中,对于查询的操作次数是远远多于数据的增删改的频次。例如在访问一些公司的官网的时候,官网当中所展示的数据包含学科的数据、包含课程的数据,还有资源的数据等等,这些数据都需要从数据库查询出来,然后才在界面展示。
或者在点击搜索的时候,这个时候也需要去查询对应的数据库,还可以选择对应的查询条件(品牌、价格等等)进行查询并展示,还能进行升序或者降序排序。这些操作其实都是涉及到数据库的查询操作。
3、关键字
- SELECT
二、 DQL—语法
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMT
分页参数
注释:
1、字段列表:指的是我们要查询哪些字段
2、表名列表:现在我这里刚开始学,只涉及单表查询,多表查询后面会专门介绍
3、条件列表:例如根据品牌、价格进行范围查询,这些都是属于查询的条件,我们可以有多个条件
4、排序字段列表:升序或降序
三、分块学习并介绍
- 基本查询
- 条件查询( WHERE )
- 聚合函数( count、max、min、avg、sum )
- 分组查询( GROUP BY )
- 排序查询( ORDER BY )
- 分页查询( LIMIT )
四、DQL—基本查询
- 查询多个字段
SELECT 字段1,字段2,字段3... FROM 表名;
SELECT * FROM 表名;
注释:' * ' 号代表查询返回所有字段。
- 设置别名
SELECT 字段1 [ AS 别名1 ],字段2 [ AS 别名2 ] ... FROM 表名;
注意:对于查询返回的字段我们是可以设置别名的,以便来增强字段的可读性,当然别名的字段可以有,也可以不设置。
- 去重复记录
SELECT DISTINCT 字段列表 FROM 表名;
注意:distinct:不同的,这个时候就会对查询返回的字段进行去重字段。
五、操作
(1)前期先准备将要操作的数据
CREATE TABLE emp (id INT COMMENT'编号',workno VARCHAR(10) COMMENT'工号',name VARCHAR(10) COMMENT'姓名',gender CHAR(1) COMMENT'性别',age TINYINT UNSIGNED COMMENT '年龄',idcard CHAR(18) COMMENT '身份证号',workaddress VARCHAR(50) COMMENT '工作地址',entrydate DATE COMMENT '入职时间'
) COMMENT '员工表';
DESC emp;
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (1,'1','柳岩','女',20,'123456789012345678 ','北京','2000-01-01'),(2,'2','张无忌','男',18,'123456789012345670','北京','2005-09-01'),(3,'3','韦一笑','男',38,'123456789712345670','上海','2005-08-01'),(4,'4','赵敏','女',18,'123456757123845670','北京','2009-12-01'),(5,'5','小昭','女',16,'123456769012345678','上海','2007-07-01 '),(6,'6','杨逍','男',28,'12345678931234567X','北京','2006-01-01'),(7,'7','范瑶','男',40,'123456789212345670','北京','2005-05-01'),(8,'8','黛绮丝','女',38,'123456157123645670','天津','2015-05-01'),(9,'9','范凉凉','女',45,'123156789012345678','北京','2010-04-01'),(10,'10','陈友谅','男',53,'123456789012345670','上海','2011-01-01'),(11,'11','张士诚','男',55,'123567897123465670','江苏','2015-05-01'),(12,'12','常遇春','男',32,'123446757152345670','北京','2004-02-01'),(13,'13','张三丰','男',88,'123656789012345678','江苏','2020-11-01'),(14,'14','灭绝','女',65,'123456719012345670','西安','2019-05-01'),(15,'15','胡青牛','男',70,'2345674971234567X','西安','2018-04-01 '),(16,'16','周芷若','女',18, null,'北京','2012-06-01');
用 SELECT * FORM 表 查看一下整张表的数据
(2)基于上面表:emp 完成所有基础查询操作
1、查询指定字段 name、workno,、age 并返回
SELECT name,workno,age FROM emp;
2、查询所有字段返回
SELECT * FROM emp;
/* 或者 */
SELECT id, workno, name, gender, age, idcard, workaddress, entrydate FROM emp;
注意: 在实际开发中,尽量不要写 ' * ' 进行查询,首先它不直观,其次它影响效率。
3、查询所有员工的工作地址,并起别名
SELECT workaddress AS '工作地址' FROM emp;
这里 ‘AS’ 可以省略不写,效果一样,也就是直接写别名
SELECT workaddress '工作地址' FROM emp;
4、查询公司员工的上班地址(不要重复)
SELECT DISTINCT workaddress '工作地址' FROM emp;