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

相关推荐
Turnip12024 小时前
深度解析:为什么简单的数据库"写操作"会在 MySQL 中卡住?
后端·mysql
爱可生开源社区4 小时前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1779 小时前
《从零搭建NestJS项目》
数据库·typescript
加号31 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏1 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐1 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
百锦再1 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
WeiXin_DZbishe1 天前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5
tryCbest1 天前
数据库SQL学习
数据库·sql
jnrjian1 天前
ORA-01017 查找机器名 用户名 以及library cache lock 参数含义
数据库·oracle