一文带你学透MySQL核心——DQL语言

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: DQL:英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。

 前言

 本期的主要内容是关于SQL语句中的核心语句,我们在生活中使用最多的查询语句DQL语句。

image.gif编辑

文章目录

前言

DQL 数据库查询语言

1.介绍

2. 基本查询

2.1 查询多个字段

2.2 查询所有字段

2.3 设置别名

2.4 去除重复记录

2.5 基本查询练习案例

3. 条件查询 where

3.1 语句格式

3.2 条件运算符编辑

3.3 条件查询练习案例

4.聚合函数

4.1 介绍

4.2 聚合函数分类

4.3 语法

4.4聚合函数练习案例

5.分组查询 group by

5.1 语句格式

5.2 where 和 having 区别

5.3 分组查询练习案例

6.排序查询 order by

6.1 语句格式

6.2 排序方式

6.3 排序查询练习案例

7.分页查询 limit

7.1语句格式

7.2 注意事项

7.3 分页查询练习案例

总结


DQL 数据库查询语言

1.介绍

DQL:英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。

  可能我们感觉不到使用数据查询语言,但却是我们在现实社会中使用最多的语言。比如说我们可能遇到不会的题目,我的第一个想法是去百度搜索一下看看有没有答案,当我们在百度浏览器的文本框中输入完所要查询的内容,点击”搜索“,其实我们已经使用了数据库查询语言。

2. 基本查询

2.1 查询多个字段

Select 字段1,字段2,字段3……. from 表名;

image.gif

2.2 查询所有字段

Select * from 表名;

image.gif

2.3 设置别名

Select 字段1[AS 别名1],字段2[AS 别名2]…… from 表名;

image.gif

[]括号中不是必须要写的。

2.4 去除重复记录

Select distinct 字段列表 from 表名;

image.gif

2.5 基本查询练习案例

创建一个员工表其中字段包括 编号、工号、姓名、性别、年龄、身份证号、工作地址、入职时间,根据自己对上一期数据类型的了解,定义为合适的类型。

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

image.gif

插入两条测试数据.

insert into emp values(1,'1','李飞','男',20,'123456789012345678','上海','2001-01-01'),
(2,'2','哈哈','男',22,'123456789012345678','上海','2001-01-01');

image.gif

2.5.1 查询指定字段name,workno,age

select name,workno,age from emp;

image.gif

2.5.2 查询所有字段返回

select * from emp;

image.gif

2.5.3查询所有员工的工作地址

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

image.gif

2.5.4查询公司员工的上边地址不重复

select distinct workaddress as'上班地址' from emp;

image.gif

3. 条件查询 where

3.1 语句格式

Select 字段列表 from 表名 where 条件运算;

image.gif

3.2 条件运算符image.gif编辑

3.3 条件查询练习案例

3.3.1 查询年龄等于22的员工

select *from emp where age=22;

image.gif

3.3.2 查询年龄小于30的与共信息

select * from emp where age<30;

image.gif

3.3.3 查询年龄小于等于30的与共信息

select * from emp where age<=30;

image.gif

3.3.4 查询身份证号为空的员工信息

select * from emp where idcard is null;

image.gif

3.3.5 查询有身份证号的员工信息

select * from emp where idcard is not null;

image.gif

3.3.6 查询年龄不等于22的员工信息

select * from emp where age!=88;

image.gif

3.3.7 查询年龄在2025(包括25)之间的员工信息

select * from emp where age between 20 and 25;

image.gif

3.3.8 查询性别为女且年龄不少于25岁的员工信息

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

image.gif

3.3.9 查询年龄为2330的员工信息

select * from emp where age=30 or age=25;

image.gif

select * from emp where age in(23,30);

image.gif

3.3.10 查询姓名为两个字的员工信息下__和%

select * from emp where name like'__';

image.gif

3.3.11查询身份证号码最后一位为x的员工信息

select * from emp where name like'__';

image.gif

4.聚合函数

4.1 介绍

将一列数据作为一个整体,进行纵向计算

4.2 聚合函数分类

image.gif编辑

4.3 语法

select 聚合函数(字段列表) from 表名;

image.gif

注意:null不参与聚合函数的计算。

4.4聚合函数练习案例

4.4.1 统计该企业员工的数量

select count(id) from emp;

image.gif

select count(*) from emp;

image.gif

4.4.2 统计该企业员工的平均年龄

select avg(age) from emp;

image.gif

4.4.3 统计该企业员工的最大年龄

select max(age) from emp;

image.gif

4.4.4 统计该企业员工的最小年龄

select min(age)from emp;

image.gif

4.4.5 统计上海地区的年龄之和

select sum(age) from emp where workaddress='上海';

image.gif

5.分组查询 group by

5.1 语句格式

select 字段列表 from 表名 [where 条件] group by 分组字段名[HAVING 分组后过滤条件];

image.gif

5.2 where 和 having 区别

 执行时机不同:where是分组之前尽心过滤,不满足where 条件;而having 是分组之后对结果进行过滤。

 判断条件不同:where不能对聚合函数进行判断,而having 可以。

 执行顺序:where>聚合函数>having

 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

5.3 分组查询练习案例

当前emp表内容

image.gif编辑

5.3.1根据性别分组,统计男性员工和女性员工的数量

select gender,count(*) from emp group by gender;

image.gif

image.gif编辑

5.3.2 更具性别分组,统计男性员工和女性员工的平均年龄

image.gif编辑

5.3.3 查询年龄小于25岁的员工,并更具工作地址分组,获取员工数量大于等于1的工作地址

select workaddress from emp where age<25 group by workaddress having count(*)>1;

image.gif

select workaddress,count(*) from emp where age<25 group by workaddress having count(*)>1;

image.gif

6.排序查询 order by

6.1 语句格式

Select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式;

image.gif

6.2 排序方式

asc:升序 默认值

Desc: 降序

注意:如果是多个字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。

6.3 排序查询练习案例

6.3.1 根据入职时间对公司的员工进行升序排序

select * from emp order by entrydate asc;

image.gif

image.gif编辑

6.3.2 根据入职的时间,对员工进行降序排序

select * from emp order by entrydate desc;

image.gif

image.gif编辑

6.3.3 根据年龄对公司的员工进行升序排序,年龄相同,在按照入职时间进行降序排序

select * from emp order by age,entrydate desc;

image.gif

7.分页查询 limit

7.1语句格式

Select 字段列表 from 表名 limit 起始索引,查询记录;

image.gif

7.2 注意事项

1.起始索引从0开始,起始索引= (查询页码-1)* 每页显示记录数。

2.分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。

3.如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。

7.3 分页查询练习案例

7.3.1 查询第一页的员工数据,每页显示2条数据

select * from emp limit 0,2;

image.gif

select * from emp limit 2;

image.gif

7.3.2 查询第2页员工数据,每页显示2条记录

select * from emp limit 2,2;

image.gif

总结

 我相信能坚持学习到这里的各位小伙伴,你已经对MySQL数据库有了更深入的了解,数据库查询语言DQL你已经不在话下了,恭喜你!后续我们会学习函数,期待我们下期再见!


image.gif编辑


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
在MySQL中,什么是结构化查询语言 (SQL)
【8月更文挑战第20天】在MySQL中,什么是结构化查询语言 (SQL)
57 1
|
8天前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
3月前
|
SQL 关系型数据库 MySQL
Go语言中使用 sqlx 来操作 MySQL
Go语言因其高效的性能和简洁的语法而受到开发者们的欢迎。在开发过程中,数据库操作不可或缺。虽然Go的标准库提供了`database/sql`包支持数据库操作,但使用起来稍显复杂。为此,`sqlx`应运而生,作为`database/sql`的扩展库,它简化了许多常见的数据库任务。本文介绍如何使用`sqlx`包操作MySQL数据库,包括安装所需的包、连接数据库、创建表、插入/查询/更新/删除数据等操作,并展示了如何利用命名参数来进一步简化代码。通过`sqlx`,开发者可以更加高效且简洁地完成数据库交互任务。
32 1
|
3月前
|
SQL 关系型数据库 MySQL
MySQL】-DQL(基本、条件、分组、排序、分页)详细版
通过这些查询方法,你可以高效地检索、分析和组织MySQL数据库中的数据,以满足各种应用需求。实践中,理解这些SQL语句的基础知识以及它们如何组合起来进行复杂的数据操作是至关重要的。
40 1
|
3月前
|
SQL 关系型数据库 MySQL
Go语言中如何连接 MySQL,基础必备!
在现代应用中,数据库操作至关重要。本教程将指导你使用Go语言进行MySQL的CRUD操作。首先,确保已创建`test_db`数据库及`users`表。接着安装MySQL驱动:`go get -u github.com/go-sql-driver/mysql`。通过示例代码,你将学会连接数据库、创建、查询、更新及删除用户记录。尽管此方法直接,但在实际项目中可能略显繁琐,后续会介绍更高效的库如sqlx或gorm。现在,让我们从基础开始,掌握Go语言中的数据库交互技巧。
60 3
|
3月前
|
SQL 关系型数据库 MySQL
|
3月前
|
SQL 安全 关系型数据库
Go 语言中的 MySQL 事务操作
在现代应用中,确保数据完整与一致至关重要。MySQL的事务机制提供了可靠保障。本文首先解释了事务的概念及其ACID特性,随后介绍了如何在Go语言中使用`database/sql`包进行MySQL事务操作。通过一个银行转账的例子,演示了如何通过Go开启事务、执行操作并在必要时回滚或提交,确保数据一致性。最后,还讨论了不同事务隔离级别的含义及如何在Go中设置这些级别。通过本文的学习,开发者能更好地掌握MySQL事务的应用。
46 0
|
3月前
|
SQL 关系型数据库 MySQL
Go语言中进行MySQL预处理和SQL注入防护
在现代Web应用开发中,安全性至关重要。SQL注入是一种常见的攻击方式,攻击者可通过构造特殊SQL查询来非法访问或修改数据库数据。本文介绍如何利用Go语言中的预处理SQL语句来防范此类攻击。预处理不仅能提升安全性,还能提高性能并简化代码。通过使用`?`作为占位符,Go自动处理参数转义,有效避免SQL注入。此外,文章还提供了连接MySQL数据库、执行预处理查询以及最佳实践的示例代码。务必遵循这些指导原则,确保应用程序的安全性。
90 0
|
4月前
|
SQL 关系型数据库 MySQL
MySQL DCL(数据控制语言)详解与实践
MySQL DCL(数据控制语言)详解与实践
|
4月前
|
SQL 关系型数据库 MySQL
MySQL DQL(数据查询语言)深度解析与实践
MySQL DQL(数据查询语言)深度解析与实践