我的位置: 首页 > MySQL数据库基本操作—— DQL查询

MySQL数据库基本操作—— DQL查询

2023-01-07 14:44:17
来源:
[导读] DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。查询关键字: SELECT 在一个正常的业务系统中,查询操作的频次是要远高于增删改的,当我们去访问企业官网、电商网站,在这些网站中我们所看到的数据,实际都是需要从数据库中查询并展示的。而且在查询的过程中,可能还会涉及到条件、排序、分页等操作。

DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。查询关键字: SELECT 在一个正常的业务系统中,查询操作的频次是要远高于增删改的,当我们去访问企业官网、电商网站,在这些网站中我们所看到的数据,实际都是需要从数据库中查询并展示的。而且在查询的过程中,可能还会涉及到条件、排序、分页等操作。

1665124637197_32.png

那么,本小节我们主要学习的就是如何进行数据的查询操作。 我们先来准备一些数据:

drop table if exists employee;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 '员工表';INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)VALUES (1, '00001', '柳岩666', '女', 20, '123456789012345678', '北京', '2000-01-
01');INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)VALUES (2, '00002', '张无忌', '男', 18, '123456789012345670', '北京', '2005-09-
01');INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)VALUES (3, '00003', '韦一笑', '男', 38, '123456789712345670', '上海', '2005-08-
01');INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)VALUES (4, '00004', '赵敏', '女', 18, '123456757123845670', '北京', '2009-12-01');INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)VALUES (5, '00005', '小昭', '女', 16, '123456769012345678', '上海', '2007-07-01');INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)VALUES (6, '00006', '杨逍', '男', 28, '12345678931234567X', '北京', '2006-01-01');INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)VALUES (7, '00007', '范瑶', '男', 40, '123456789212345670', '北京', '2005-05-01');INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)VALUES (8, '00008', '黛绮丝', '女', 38, '123456157123645670', '天津', '2015-05-
01');INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)VALUES (9, '00009', '范凉凉', '女', 45, '123156789012345678', '北京', '2010-04-
01');INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)VALUES (10, '00010', '陈友谅', '男', 53, '123456789012345670', '上海', '2011-01-
01');INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)VALUES (11, '00011', '张士诚', '男', 55, '123567897123465670', '江苏', '2015-05-
01');INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)VALUES (12, '00012', '常遇春', '男', 32, '123446757152345670', '北京', '2004-02-
01');INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)VALUES (13, '00013', '张三丰', '男', 88, '123656789012345678', '江苏', '2020-11-
01');INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)VALUES (14, '00014', '灭绝', '女', 65, '123456719012345670', '西安', '2019-05-
01');INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)VALUES (15, '00015', '胡青牛', '男', 70, '12345674971234567X', '西安', '2018-04-
01');INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)VALUES (16, '00016', '周芷若', '女', 18, null, '北京', '2012-06-01');

准备完毕后,我们就可以看到emp表中准备的16条数据。接下来,我们来学习DQL查询操作的语法。

DQL 查询语句,语法结构如下:

SELECT
    字段列表FROM
    表名列表WHERE
    条件列表GROUP BY
    分组字段列表HAVING
    分组后条件列表ORDER BY
    排序字段列表LIMIT
    分页参数

这部分内容,我们可以将将上面的完整语法进行拆分,分为以下几个部分:

基本查询(不带任何条件)

条件查询(WHERE)

聚合函数(count、max、min、avg、sum)

分组查询(group by)

排序查询(order by)

分页查询(limit)

1.基础查询

在基础查询的DQL语句中,不带任何的查询条件,查询的语法如下:

1). 查询多个字段

SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;
SELECT * FROM 表名 ;

注意 : * 号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)。

2). 为字段设置别名

SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名;
SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名;

3). 去除重复记录

SELECT DISTINCT 字段列表 FROM 表名;

案例:

A. 查询之前准备的字段中的指定字段 name, workno, age并返回,示例代码如下:

select name,workno,age from emp;

B. 查询返回所有字段

 select id ,workno,name,gender,age,idcard,workaddress,entrydate from emp;
 select * from emp;

C. 查询所有员工的工作地址,起别名

 select workaddress as '工作地址' from emp;
 -- as可以省略
 select workaddress '工作地址' from emp;

D. 查询公司员工的上班地址有哪些(不要重复)

 select distinct workaddress '工作地址' from emp;

2.条件查询

1). 语法

条件查询的语法格式如下:

 SELECT 字段列表 FROM 表名 WHERE 条件列表 ;

2). 条件常用的比较运算符如下:

1665126846784_27.png

常用的逻辑运算符如下:

逻辑运算符

案例: A. 查询年龄等于 88 的员工

 select * from emp where age = 88;

B. 查询年龄小于 20 的员工信息

 select * from emp where age < 20;

C. 查询年龄小于等于 20 的员工信息

 select * from emp where age <= 20;

D. 查询没有身份证号的员工信息

 select * from emp where idcard is null;

E. 查询有身份证号的员工信息

 select * from emp where idcard is not null;

F. 查询年龄不等于 88 的员工信息

 select * from emp where age != 88;
 select * from emp where age <> 88;

G. 查询年龄在15岁(包含) 到 20岁(包含)之间的员工信息

 select * from emp where age >= 15 && age <= 20;
 select * from emp where age >= 15 and age <= 20;
 select * from emp where age between 15 and 20;

H. 查询性别为 女 且年龄小于 25岁的员工信息

 select * from emp where gender = '女' and age < 25;

I. 查询年龄等于18 或 20 或 40 的员工信息

 select * from emp where age = 18 or age = 20 or age =40;
 select * from emp where age in(18,20,40);

J. 查询姓名为两个字的员工信息 _ %

 select * from emp where name like '__';

K. 查询身份证号最后一位是X的员工信息

 select * from emp where idcard like '%X';
 select * from emp where idcard like '_________________X';



大家都关注:
热点专题
>>