MySQL基础-DQL(四)

DQL是数据查询语言,主要用来查询数据库中表的记录。DQL的语法如下:

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

首先准备好表和记录作为练习

sql 复制代码
create table emp(
	id int comment '编号',
    working varchar(10) comment '工号',
    name varchar(10) comment '姓名',
    gender char comment '性别',
    age tinyint unsigned comment '年龄',
    idcard char(18) comment '身份证号',
    workaddress varchar(50) comment '工作地址',
    entrydate date comment '入职时间'
) comment '员工表';

insert into emp values
(1, '1', '金庸', '男', 66, '123456789012345670', '北京', '2000-01-01'),
(2, '2', '张无忌', '男', 20, '123456789012345671', '上海', '2005-12-05'),
(3, '3', '杨逍', '男', 33, '123456789012345672', '南京', '2001-03-01'),
(4, '4', '韦一笑', '男', 48, '123456789012345673', '宁波', '2002-04-01'),
(5, '5', '常遇春', '男', 43, '123456789012345674', '北京', '2003-02-01'),
(6, '6', '小昭', '女', 19, '123456789012345675', '南京', '2002-01-02'),
(7, '7', '灭绝', '女', 60, '123456789012345676', '苏州', '2003-07-01'),
(8, '8', '周芷若', '女', 19, '123456789012345677', '广州', '2006-07-01'),
(9, '9', '丁敏君', '女', 23, '123456789012345678', '深圳', '2002-07-06'),
(10, '10', '赵敏', '女', 36, '123456789012345679', '上海', '2008-05-01'),
(11, '11', '鹿杖客', '男', 56, '123456789012345680', '北京', '2009-03-12'),
(12, '12', '鹤笔翁', '男', 67, '123456789012345681', '深圳', '2002-02-12'),
(13, '13', '方东白', '男', 45, '123456789012345682', '苏州', '2006-04-14'),
(14, '14', '张三丰', '男', 38, '123456789012345683', '南京', '2005-04-21'),
(15, '15', '俞莲舟', '男', 34, '123456789012345684', '宁波', '2004-09-01'),
(16, '16', '陈友谅', '男', 24, '123456789012345685', null, '2007-10-01');

1. 基本查询

基本查询的语句就是SELECT FROM

1.1 查询多个字段

sql 复制代码
# 查询返回所有字段
SELECT * FROM 表名;

# 返回多个指定的字段
SELECT 字段1,字段2,... FROM 表名;

首先我们查询指定的字段:name,workno和age

我们也可以查询返回所有的字段

1.2 设置别名

对于查询返回的字段,我们可以给字段设置别名,关键词是AS

sql 复制代码
SELECT 字段1 [AS 别名1], 字段2 [AS 别名2],... FROM 表名;

这里我们需要查询所有员工的工作地址,由于workaddress的名字不够直观,我们可以利用别名将其展示

1.3 去除重复记录

sql 复制代码
SELECT DISTINCT 字段列表 FROM 表名;

这里我们希望查询到的工作地址不要重复

2. 条件查询

条件查询的语法如下:

sql 复制代码
SELECT 字段列表 FROM 表名 WHERE 条件列表;

WHERE之后的条件可以是一个也可以是多个,后面的条件可以是比较运算符也可以是逻辑运算符。比较运算符有以下几种:

逻辑运算符有:

这里我们首先希望能够查询返回所有年龄大于48的员工

我们也可以使用!=来查询所有年龄不等于66的员工

我们接着查询年龄在30和45之间的员工,使用BETWEEN AND:

接下来我们希望返回没有工作地址的员工,使用IS NULL进行查询:

反过来,我们也可以对所有有工作地址的员工进行查询,使用关键词NOT

如果有多个条件,可以根据逻辑关系选择AND或者OR使用。这里我们可以查询性别为女并且年龄大于30的员工

如果多个条件只需要满足其中一个即可,我们可以使用IN

接下来我们希望关注姓名为两个字的员工,这里就需要使用LIKE进行模糊匹配。由于要匹配两个字符,这里使用两个_来表示

现在我们希望查询到身份证号最后一位是9的员工,这里使用的是%作为占位符,%9表示前面可以有任意多个字符,但最后一位必须是9

相关推荐
GBASE18 小时前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
xiezhr1 天前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
唐青枫2 天前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql
吃糖的小孩2 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
小满8782 天前
5.Mysql事务隔离级别与锁机制
mysql
笃行3503 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行3503 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库
笃行3503 天前
金仓数据库逻辑备份实战:从全库导出到 Schema 替换的完整闭环
数据库
元Y亨H3 天前
技术笔记:MySQL 字符集排序规则与大小写敏感性问题解决方案
mysql