MySQL数据库之数据查询语言(一)

813 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

前言:本章是基于数据操作语言(DML)之后的学习,主要总结数据查询语言(DQL)的语法及其使用。

数据库查询语言,可简称为DQL,英文全称为Data Query Language,用来查询数据库中表的记录。

注:会分三小章对DQL语句进行总结

查询关键字:SELECT

使用场景:

在一个正常的业务系统中,查询操作的频次是要远高于增删改的!

当我们去访问企业官网、电商网站,在这些网站中我们所看到的数据,实际都是需要从数据库中查询并展示的。

而且在查询的过程中,可能还会涉及到条件、排序、分页等操作。

一、基本语法

数据查询语言语法结构如下:

SELECT

字段列表

FROM

表名列表

WHERE #条件查询

条件列表

GROUP BY #分组查询

分组字段列表

HAVING 

分组后条件列表

ORDER BY #排序查询

排序字段列表

LIMIT #分页查询

分页参数

本文也是由语法结构进行学习和总结:

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

条件查询(WHERE)

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

分组查询(group by)

排序查询(order by)

分页查询(limit)

二、基础查询

(1) 查询多个字段

语法一:

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

语法二:

SELECT * FROM 表名 ;

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

(2) 字段设置别名

语法一:使用AS关键字

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

语法二:省略AS关键字

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

(3) 去除重复记录

语法:

SELECT DISTINCT 字段列表 FROM 表名; 
#去重关键字:DISTINCT

案例一:查询指定字段 name, workno, age并返回

select name,workno,age from emp;

案例二:查询返回所有字段

-- 将表中所有字段列出再根据emp表进行查询。

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

--直接用 * 代替字段,提高SQL编写效率。

select * from emp;

案例三:查询所有员工的工作地址,起别名

-- 用AS关键字

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

-- 省略AS关键字

select workaddress '工作地址' from emp;

案例四:查询公司员工的上班地址有哪些(不要重复)

--思路:去重关键字:DISTINCT

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

三、条件查询

(1) 语法:

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

(2) 条件

此处需要学习和掌握比较运算符逻辑运算符,并根据两种运算符将条件SQL化。

比较运算符功能
大于
>=大于等于
<小于
<=小于等于
=等于
<> or !=不等于
BETWEEN...AND...在某个范围内(含最小值和最大值)
INT(...)在in之后的列表中的值,多选一
LIKE 占位符模糊查询 (_匹配单个字符, %匹配任意个字符)
IS NULL表示是NULL

常用逻辑运算符如下:

逻辑运算符功能
AND or &&并且(多个条件同时成立)
OR或者(多个条件任意一个成立)
NOT or !非,不是

恩格斯曾说:“我们的理论是发展着的理论,而不是必须背得烂熟并机械地加以重复的教条。”

所以,实践是必要的!!!

接下来我用我做的几个案例来总结下上述理论。

注:案例中的思路只是方法中的一种,有可能有多种写法。

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

-- 思路:age = 88

select * from emp where age = 88;

案例二:查询年龄小于 20 的员工信息

-- 思路:age <= 20

select * from emp where age < 20;

案例三:查询年龄小于等于 20 的员工信息

-- 思路:age <= 20

select * from emp where age <= 20;

案例四:查询没有身份证号的员工信息

-- 思路:idcard is null

select * from emp where idcard is null;

方案五:查询有身份证号的员工信息

-- 思路:idcard is not null

select * from emp where idcard is not null;

方案六:查询年龄不等于 88 的员工信息

-- 思路:age!=88

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

```sql

案例七:查询年龄在15岁(包含) 到 20岁(包含)之间的员工信息

-- 思路:BETWEEN 15 AND 20

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

案例八:查询性别为 女 且年龄小于 25岁的员工信息

-- 思路:gender='女' and age<25

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

案例九:查询年龄等于18 或 20 或 40 的员工信息

-- 思路: age=18 or age =20 or age =40

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

案例十:查询姓名为两个字的员工信息 _ %

-- 思路:like

select * from emp where name like '__';

案例十一:查询身份证号最后一位是X的员工信息

-- 思路:like '%X'

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

四、小结

这就是数据查询语言的基本语法、基础查询和条件查询的总结。
在下一章中会对聚合函数、分组查询和排序查询进行总结。