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

相关推荐
Database_Cool_1 小时前
阿里云 RDS MySQL 降本增效实战:从规格选型到成本优化,月成本降低64%全攻略
mysql·阿里云·云计算
java_logo1 小时前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris
广州灵眸科技有限公司9 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
Cloud云卷云舒11 小时前
云卷云舒:从Oracle/MySQL迁移到HaishanDB:迁移评估工具核心技术拆解
mysql·oracle·ai-native·haishandb·信创数据库替换
憧憬成为web高手11 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学12 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh14 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
用户713335851562414 小时前
MySQL - 事务、redo/undo 日志与 MVCC
mysql
z1234567898615 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD15 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关