数据库之DQL操作(数据查询语言)

2024-04-06 05:28

本文主要是介绍数据库之DQL操作(数据查询语言),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

本节介绍以下表为例:

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 '入职时间'
)

1.基本语法

SELECT字段列表FROM表名列表WHERE条件列表GROUP BY分组字段列表HAVING分组后条件列表ORDER BY排序字段列表LIMIT分页参数
  •  基本查询(不带任何条件)
  • 条件查询(WHERE)
  • 聚合函数(count、max、min、avg、sum)
  • 分组查询(group by)
  • 排序查询(order by)
  • 分页查询(1imit)

2.基础查询 

2.1查询多个字段

SELECT 字段1,字段2,字段3... FROM 表名;SELECT * FROM 表名;

 注意事项:* 号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)。

 2.2字段设置别名

SELECT 字段1 [AS别名1],字段2 [AS 别名2]... FROM 表名;
//省略AS
SELECT 字段1 [别名1] ,字段2 [别名2]... FROM 表名;

2.3去除重复记录

SELECT DISTINCT 字段列表 FROM 表名;

 例如:

a.查询指定字段 id,gender,age并返回

select id, gender, age from emp;

b. 查询返回所有字段

select id,workno,name,gender,age,idcard,workaddress,entrydate from emp;select * from emp;

 c.查询所有员工的入职时间,起别名

select entrydate as '入职时间' from emp;//as可以省略
select entrydate '入职时间' from emp;

d. 查询公司员工的上班地址有哪些(不要重复)

select distinct workaddress '工作地址' from emp

 3.条件查询

3.1语法

SELECT 字段列表 FROM 表名 WHERE 条件列表;

3.2条件

比较运算符功能
>大于
>=大于等于
<小于
<=小于等于
=等于

<> 或 !=

不等于
BETWEEN ... AND ...在某个范围之内(最小、最大值)
IN( ... )在in之后的列表中的值,多选一
LIKE 占位符模糊匹配('_'匹配单个字符,'%'匹配任意个字符)
IS NULL是NULL
逻辑运算符功能
AND 或 &&并且(多个条件同时成立)
OR 或 || 或者(多个条件任意一个成立)
NOT 或 !非 ,不是

例如:

a.查询年龄为18的员工

select * from emp where age = 18;

b.查询年龄大于等于19的员工 

select * from emp where age >= 19;

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

select * from emp where idcard is not null;

d. 查询年龄在15岁(包含)到20岁(包含)之间的员工信息

select * from emp where age >=15 && age <= 20;select * from emp where age >= 15 and age <= 20;select * from emp where age between 15 and 20;

 e.查询性别为 男 并且 年龄大于68岁的员工

select * from emp where gender = '男'and age > 68;

f. 查询姓名为两个字并且姓刘的员工

select * from emp where name like '刘_';

 4.聚合函数

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

4.1常用函数

函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和

4.2语法

SELECT 聚合函数 (字段列表) FROM 表名;

 注意 :  NULL值是不参与所有聚合函数运算的。

例如:

a.统计该企业员工数量

//统计的是总记录数
select count(*) from emp;//统计的是idcard字段不为nu11的记录数
select count(idcard) from emp;

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

select avg(age) from emp;

c. 统计咸宁地区员工的年龄之和

select sum(age) from emp where workaddress = '咸宁';

5.分组查询 

5.1语法

SELECT 字段列表 FROM 表名 [ WHERE条件 ] GROUP BY 分组字段名 [ HAVING 分组后过滤条件 ];

5.2 where与having区别

  • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
  • 判断条件不同:where不能对聚合函数进行判断,而having可以。

 注意事项:

  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
  • 执行顺序:where>聚合函数>having 。
  • 支持多字段分组,具体语法为:groupbycolumnA,columnE

 例如:

a.根据性别分组,统计男性员工 和 女性员工的平均年龄

select gender, avg(age) from emp group by gender ;

 b.查询年龄小于45的员工 ,并根据工作地址分组,获取员工数量大于等于3的工作地址

select workaddress, count(*) address count from emp where age < 45 
group by workaddress having address count >= 3;

 c.统计各个工作地址上班的男性及女性员工的数量

select workaddress, gender, count(*) '数量' from emp group by gender ,workaddress;

6.排序查询 

6.1语法

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;

6.2排序方式

  • ASC:升序(默认值)
  • DESC:降序

注意事项:

  • 如果是升序,可以不指定排序方式ASC;
  • 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序;

例如:

a. 根据年龄对公司的员工进行升序排序

select * from emp order by age asc;select * from emp order by age;

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

select * from emp order by age asc, entrydate desc;

7.分页查询 

7.1语法

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数;

 注意事项:

  • 起始索引从0开始,起始索引 = ( 查询页码 - 1 ) * 每页显示记录数。
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为limit10。

例如:

 a.查询第1页员工数据,每页展示10条记录。

select * from emp limit 0, 10;select * from emp limit 10;

b. 查询第2页员工数据,每页展示10条记录 --------> ( 页码 - 1 ) * 页展示记录数。

select * from emp limit 10, 10;

 8.执行顺序

 验证:

查询年龄大于15的员工姓名、年龄,并根据年龄进行升序排序。

select name , age from emp where age >15 order by age asc;

在查询时,我们给emp表起一个别名 e,然后在select及 where中使用该别名。

select e.name , e.age from emp e where e.age > 15 order by age asc;

执行上述SQL语句后,我们看到依然可以正常的查询到结果,此时就说明:from 先执行,然后where和 select 执行。那 where 和 select 到底哪个先执行呢?

此时,此时我们可以给select后面的字段起别名,然后在where中使用这个别名,然后看看是否可以执行成功。

select e.name ename, e.age eage from emp e where eage > 15 order by age asc;

执行上述SQL报错了!!!!!

由此我们可以得出结论:from 先执行,然后执行where,再执行select。

接下来,我们再执行如下sQL语句,查看执行效果:

select e.name ename, e.age eage from emp e where e.age > 15 order by eage asc;

结果执行成功。 那么也就验证了:order by 是在select 语句之后执行的。

执行顺序得以验证。

这篇关于数据库之DQL操作(数据查询语言)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/879102

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

Java Multimap实现类与操作的具体示例

《JavaMultimap实现类与操作的具体示例》Multimap出现在Google的Guava库中,它为Java提供了更加灵活的集合操作,:本文主要介绍JavaMultimap实现类与操作的... 目录一、Multimap 概述Multimap 主要特点:二、Multimap 实现类1. ListMult

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据