数据库之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 语句之后执行的。

执行顺序得以验证。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/528672.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot+MyBatis-Plus的代码生成器

一、功能说明 数据源管理&#xff1a;实现多个数据库的表代码生成表管理&#xff1a;从数据源导入表&#xff0c;配置表和字段默认配置&#xff1a;配置项目默认信息&#xff0c;配置字段数据类型映射操作日志 功能截图 二、代码实现 基于velocity-engine模板代码生成 pack…

工单管理系统设计方案,工单系统的流程

工单管理系统是一种用于管理和跟踪工作流程的软件系统。它可以帮助企业和组织更好地分配任务、优化工作流程、提高生产效率和客户满意度。下面是一个基本的工单管理系统设计方案&#xff1a;需求分析  在设计工单管理系统之前&#xff0c;需要进行需求分析&#xff0c;确定系…

三极管原理特性介绍,课堂上可不这么讲!

原文来自微信公众号&#xff1a;工程师看海&#xff0c;与我联系&#xff1a;chunhou0820 看海原创视频教程&#xff1a;《运放秘籍》 大家好&#xff0c;我是工程师看海&#xff0c;原创文章欢迎点赞分享&#xff01; 今天介绍下三极管的特性&#xff0c;清晰易懂&#xff0c…

C语言进阶课程学习记录-第27课 - 数组的本质分析

C语言进阶课程学习记录-第27课 - 数组的本质分析 数组实验-数组元素个数的指定实验-数组地址与数组首元素地址实验-指针与数组地址的区别小结 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程&#xff0c;图片全部来源于课程PPT&#xff0c;仅用于个人学习记录 数组 实验-数…

Ubuntu 22上安装Anaconda3。下载、安装、验证详细教程

在Ubuntu 22上安装Anaconda3&#xff0c;你可以遵循以下步骤&#xff1a; 更新系统存储库&#xff1a; 打开终端并运行以下命令来更新系统存储库&#xff1a; sudo apt update安装curl包&#xff1a; 下载Anaconda安装脚本通常需要使用curl工具。如果系统中没有安装curl&#x…

如何提升产品用户体验?4个工具+6张案例,让你快速吃透!

在数字时代的浪潮中&#xff0c;产品用户体验早已不再是简单的“好用”或“不好用”的评判标准&#xff0c;它不仅仅是功能的堆砌&#xff0c;更是情感的连接、智慧的体现。在这个竞争激烈的市场中&#xff0c;只有那些能够深入理解用户需求、精准把握用户心理的产品&#xff0…

HarmonyOS 开发-应用新功能引导实现案例

介绍 本文介绍如何使用high_light_guide三方库完成应用新版本功能导航。通过高亮区域与蒙版背景的明暗度对比&#xff0c;让用户快速锁定重点功能&#xff0c;了解版本变更和业务入口。 效果图预览 使用说明 点击页面上对应按钮或空白区域进入下一个提示&#xff0c;直至提示…

MiniApp SDK 是什么?

介绍 MiniApp SDK 是提供开发、部署、产品体验分析、上线全流程各种需求的解决方案。接入此 SDK&#xff0c;您就可以只关注于代码开发本身&#xff0c;剩余的所有事情都可以交由 SDK 及其依赖方解决。另外&#xff0c;能够有效降低多端开发的技术门槛和研发成本&#xff0c;提…

一篇文章学会进程替换

进程替换是什么 fork之后&#xff0c;父子进程各自执行父进程的代码的一部分&#xff0c;父子代码共享&#xff0c;数据写时拷贝各自一份。 但是&#xff0c;如果子进程不想执行父进程的代码&#xff0c;就想执行一个全新的代码呢&#xff1f; 这就需要用到 进程程序替换 所谓的…

MybatisPlus分页插件的使用

目录 &#x1f9c2;1.添加mybatisPlus依赖 &#x1f953;2.添加配置类 &#x1f32d;3.添加分页接口 &#x1f37f;4. 添加实现类 &#x1f95e;5.测试 1.添加mybatisPlus依赖 <!--mybatisPlus--><dependency><groupId>com.baomidou</groupId>&l…

linux中查看占用端口的进程方法

1、netstat -tlnp | grep 端口号 netstat -tlnp|grep 3306 其中&#xff1a;95115是进程号&#xff0c;mysqld是进程名称 2、ss -ltnp | grep 端口号 注意&#xff1a;-tlnp和-ltnp ss -ltnp|grep 3306其中&#xff1a;mysqld是进程名称&#xff0c;95115是进程id 3、lsof…

【Python 基础知识课程】Python的第一个程序

Python 简介 Python 是一种功能强大且用途广泛的编程语言&#xff0c;广泛用于数据科学、Web 开发、自动化等高需求领域。 幸运的是&#xff0c;对于初学者来说&#xff0c;它也是一种很好的学习语言&#xff0c;因为Python代码更容易阅读和编写。它的简单性使其成为初学者的完…

R语言绘图 | 散点小提琴图

原文链接&#xff1a;R语言绘图 | 散点小提琴图 本期教程 写在前面 本期的图形来自发表在Nature期刊中的文章&#xff0c;这样的基础图形在日常分析中使用频率较高。 获得本期教程数据及代码&#xff0c;后台回复关键词&#xff1a;20240405 绘图 设置路径 setwd("You…

我是如何从功能测试成功转岗测试开发的?记录下我的面试经验

由于这段时间我面试了很多家公司&#xff0c;也经历了之前公司的不愉快。所以我想写一篇文章来分享一下自己的面试体会。希望能对我在之后的工作或者面试中有一些帮助&#xff0c;也希望能帮助到正在找工作的你。 一 找工作 壹&#xff0f; 我们总是草率地进入一个自己不了解…

岩土工程监测振弦采集仪在隧道工程中的监测与应用

岩土工程监测振弦采集仪在隧道工程中的监测与应用 岩土工程监测是隧道工程的重要环节之一&#xff0c;而振弦采集仪作为岩土工程监测中的关键设备之一&#xff0c;在隧道工程中的应用十分重要。本文将从振弦采集仪的基本原理、在隧道工程中的监测与应用以及其优点和局限性等方…

面试(01)————JVM篇,最大白话的一集,常见概念的讲解以及GC监控调优等等

一、JDK体系结构图 二、JVM整体架构 三、JVM组成 3.1、JVM内存区域的执行底层原理 ​编辑 3.1.1、程序计数器 3.1.2、堆栈关系的发现 3.1.3、方法去和堆的关系 3.1.4、堆&#xff08;重点&#xff09; 3.1.4.1、可达性分析算法 3.1、内存泄漏测试以及堆区的GC监控 3.…

【论文解读】大模型事实性调查(上)

一、简要介绍 本调查探讨了大型语言模型&#xff08;llm&#xff09;中的事实性的关键问题。随着llm在不同领域的应用&#xff0c;其输出的可靠性和准确性变得至关重要。论文将“事实性问题”定义为llm产生与既定事实不一致的内容的概率。论文首先深入研究了这些不准确性的含义…

kali基础渗透学习,永恒之蓝,木马实战

简介 kali的学习本质是在linux上对一些攻击软件的使用&#xff0c;只是学习的初期 先在终端切换到root用户&#xff0c;以便于有些工具对权限的要求 下载链接 镜像源kali 攻击流程 公网信息搜集 寻找漏洞&#xff0c;突破口&#xff0c;以进入内网 进入内网&#xff0c…

GD32F470_SHT20温湿度传感器模块/数字型温湿度测量模块 I2C通讯小体积模块

2.24 SHT20温湿度传感器 由瑞士Sensirion推出的 SHT20数字温湿度传感器&#xff0c;基于领先世界的CMOSens 数字传感技术&#xff0c;具有极高的可靠性和卓越的长期稳定性。全量程标定&#xff0c;两线数字接口&#xff0c;可与单片机直接相连&#xff0c;大大缩短研发时间、…

物联网数据服务平台

随着物联网技术的迅猛发展&#xff0c;海量数据的产生和应用成为推动工业数字化转型的核心动力。在这个数据为王的时代&#xff0c;如何高效地收集、处理、分析并应用这些数据&#xff0c;成为了企业关注的焦点。物联网数据服务平台应运而生&#xff0c;为企业提供了全面、高效…