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

相关推荐
曹牧4 小时前
C#:空合并运算符
java·前端·数据库
小羊没烦恼!5 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php
泡海椒6 小时前
JQuick-SQL JOIN 查询:连接注册数据集的正确方式
数据库·sql
xiaogai_gai6 小时前
钉钉月结报销到金蝶付款单同步方案实战教程
大数据·数据库·钉钉
Nturmoils7 小时前
报表总在扫大表,列存储应该放在哪一层
数据库
夜雪一千7 小时前
ShardingSphere 雪花 / UUIDv7 主键分片实战 + SQL 建表示例
数据库·sql
Elastic 中国社区官方博客8 小时前
Elasticsearch:安装自行管理的 Elastic Stack 集群
大数据·运维·服务器·数据库·elasticsearch·搜索引擎·全文检索
PingCAP8 小时前
Agent 从 Demo 到生产,到底卡在哪?
数据库·tidb·agent
SelectDB9 小时前
开源替代怎么选:能力对照、三条部署路径与四类边界速查
数据库·云原生·开源
SelectDB9 小时前
自建与托管怎么选:开源自建、私有化与云上托管三条路径速查
数据库·云原生·开源