SQL语句之DQL语言(一)

news2024/12/25 2:41:46

说明:DQL(Data Query Language,数据查询语言),用来查询数据库表中的记录。有的书中,会把DQL语言放入到DML(Data Manipulation Language,数据操作语言:数据的增删改)中,不单独拎出来。但既然有拎出来的,也侧面说明了查询语言的丰富。

查询分为:基本查询、条件查询、分组查询、排序查询、分页查询和多表查询,本文介绍前五个。

SQL语句的书写,要按照上述的顺序,不需要的可以跳过,但不能颠倒顺序;
在这里插入图片描述

准备工作:新建一张学生表(tb_stu),数据库中存入一些条目;
在这里插入图片描述

一、基本查询

(1)查询指定字段(姓名、年龄)的记录;

select name,age from tb_stu;

在这里插入图片描述

(2)查询所有字段的记录;

推荐使用方式二,方式二较为高效;

# 方式一
select * from tb_stu;

# 方式二
select id, username, password, name, age, gender, image, classify, join_date, create_date, last_modify_date from tb_stu;

在这里插入图片描述

(3)设置别名查询指定字段的记录;

在字段后面加as,表示该字段的别名是什么。as可以省略不写,直接在字段后面加别名

select name as '姓名', age as '年龄' from tb_stu;

#  as可以省略
select name '姓名', age '年龄' from tb_stu;

在这里插入图片描述

(4)查询学生类比,并去除重复记录;

distinct 表示此次查询去重

select distinct classify from tb_stu;

在这里插入图片描述
(5)将学生的年龄+1显示;

select age + 1 from tb_stu;

在这里插入图片描述

二、条件查询

(1)查询指定姓名(加缪)的记录;

select * from tb_stu where name='加缪';

在这里插入图片描述

(2)查询限定条件(年龄大于18)的记录;

select * from tb_stu where age > 18;

在这里插入图片描述

(3)查询没有分配类型的记录;

需要注意,不要写成:where classify=null

select * from tb_stu where classify is null;

在这里插入图片描述

(4)查询有分配类型的记录;

同样,不要写成:where classify=not null 或者 where classify!=null

select * from tb_stu where classify is not null;

在这里插入图片描述

(5)查询密码不等于“123456”的记录;

select * from tb_stu where password!='123456';

郭靖的密码是’123456’,故没有查询出来

在这里插入图片描述

(6)查询入学日期在某个日期之间(2001-01-01~2023-01-01)的记录;

between 表示在什么之间

select * from tb_stu where join_date between '2001-01-01' and '2023-01-01';

在这里插入图片描述

(7)查询入学日期在某个日期之间(2001-01-01~2023-01-01),且性别为女的记录;

后面还有限定的话,可以在后面再加and

select * from tb_stu where join_date between '2001-01-01' and '2023-01-01' and gender='女';

在这里插入图片描述

(8)查询类型是1,2,3的记录;

in 表示取值是括号里面的,推荐使用这种方式,语句简洁明了

# 方式一
select * from tb_stu where classify in(1,2,3);

# 方式二
select * from tb_stu where classify=1 or classify=2 or classify=3;

在这里插入图片描述

(9)查询姓名为两个字的记录;

like 表示模糊查找,后面的内容包含通配符。通配符下划线(_)表示任意字符,(%)表示任意多个字符。想表示姓名为两个字,可以使用两个下划线(__)。

select * from tb_stu where name like '__';

在这里插入图片描述

(10)查询’李’姓学生的记录;

所以,如果要表示某记录字段包含某关键字,可以使用 ‘%关键字%’

select * from tb_stu where name like '李%'

在这里插入图片描述

三、分组查询

聚合函数,是MySQL中提供的用于计算的函数,有:count()、avg()、min()、max()、sum(),分别用于计算记录总数、平均值、最小值、最大值和总和。

(1)统计学生记录数量;

需要注意的是,count()不统计null

select count(*) from tb_stu;

在这里插入图片描述

(2)统计所有学生的年龄平均值;

select avg(age) from tb_stu;

在这里插入图片描述

(3)统计最早入学的学生日期;

select min(join_date) from tb_stu;

在这里插入图片描述

(4)统计最晚入学的学生日期;

select max(join_date) from tb_stu;

在这里插入图片描述

(5)统计所有的学生年龄之和;

select sum(age) from tb_stu;

在这里插入图片描述

(6)根据性别分组,统计男同学、女同学的数量;

group by 表示按字段分组

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

在这里插入图片描述
(7)查询入学时间在“2001-01-01~2023-06-03”之间的学生,并对结果根据类别分组,获取类别数量大于等于2的类别;

select classify '类别名',count(*) '数量' from tb_stu 

where join_date between '2001-01-01' and '2023-06-03' 

group by classify 

having count(*) >= 2;

在这里插入图片描述

四、排序查询

(1)根据入学时间,对学生进行升序排序

order by 表示按照某字段排序,asc是升序(默认),desc是降序;

select * from tb_stu order by join_date asc;

# 不加asc,默认也是升序,所以需要升序的话,asc可以省略
select * from tb_stu order by join_date;

在这里插入图片描述

(2)根据入学时间,对学生进行降序排序;

select * from tb_stu order by join_date desc;

在这里插入图片描述
(3)根据入学时间,对学生升序排序,入学时间相同,再按照更新时间进行降序排序;

select * from tb_stu order by join_date asc, create_date desc;

在这里插入图片描述

五、分页查询

(1)从起始索引0开始,查询学生记录,每页展示5条记录;

limit 表示限定查询范围,只有一个数,表示从0开始;有两个数,表示从第一个数,限制到第一个数后面多少条;

select * from tb_stu limit 0, 5;

# 从0开始,0可以省略
select * from tb_stu limit 5;

在这里插入图片描述

(2)查询第2页学生信息,每页展示5条记录;

注意不要写成:limit 5,10,

select * from tb_stu limit 5, 5;

在这里插入图片描述
(3)查询第3页学生信息,每页展示5条记录;

值得注意的是,limit 10,5 超出数据库的范围,但不会报错;

select * from tb_stu limit 10, 5;

在这里插入图片描述

(4)分页查询

实际项目中的分页,肯定不会像上面这样,每次翻页都写一条新的SQL语句。而是用一个SQL语句,完成所有的翻页操作,只需要将SQL语句的内容改成下面这样:

select * from tb_stu limit (当前页码 - 1), 每页显示记录条数;

当前页码和每页显示记录条数,会有前端传参数进来

扩展

我们的数据库中存储的性别、类别类型是由数字代替的,访问数据传回到Service(业务逻辑层)时,会将数据处理,返给给前端时,将会恢复成(男、女)或(其他、小说家、作家、诗人)的具体类型名。在MySQL数据库中,也提供了对应的操作,可以在查询数据时,就将数据更改为对应的类型名。

(1)统计学生类别的数量(类似if三元表达式);

select if(gender=1, '男生','女生') name,count(*) vaule from tb_emp group by gender;

(此次查询并非来自上面创建的学生表中,因为学生表中的gender不是用数字表示的,无法展示)
在这里插入图片描述

(2)统计学生的类型数量(类似switch语句)

select case classify

    when '0' then '其他'

    when '1' then '小说家'

    when '2' then '作家'

    when '3' then '诗人'

    else '未分配' end name,

       count(*) value from tb_stu group by classify;

在这里插入图片描述

总结

(1)以上查询用到的关键字及作用如下:
在这里插入图片描述

(2)扩展中使用到的数据库提供的对数据进行转换的函数,不推荐使用。因为对请求的数据进行处理,这是三层架构的Service层中的任务,不应该放在数据库中操作。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初识TypeScript -基础一

前言 在开始工作之前,就听朋友提过TypeScript,之前也没多想学习,直到vue3出来之后,感觉TypeScript 后面会成为主流,只能硬着头皮学学吧。 读完本片文章,你会收获 1、TypeScript的历史及其优势 2、TypeScri…

Day_39关键路径

目录 一. 关于关键路径 1. 有向无环图 2. AOV网 3. 拓补排序 4. 关键路径 二. 如何实现寻找关键路径 三. 关键路径的代码实现 1. 正向计算 1.1 计算每个节点的入度 1.2 拓扑排序(计算每个节点最早开始的时间) 2. 反向计算 2.1 计算每个节点的出度&…

基于jupyter的线性回归练习

文章目录 练习1:线性回归介绍1 实现简单示例函数1.1 提交解决方案 2 单变量线性回归2.1 绘制数据2.2 梯度下降2.2.1 更新公式2.2.2 实现2.2.3 计算成本J(θ)2.2.4 梯度下降 2.3 可视化成本函数 选做练习3 多变量线性回归3.1 特征标准化3.2 梯度下降 总结 练习1&…

第六章:多表查询

第六章:多表查询 ​ 多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。 ​ 前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键…

SciencePub学术 | 人工智能类重点SCIEI征稿中

SciencePub学术 刊源推荐: 人工智能类重点SCI&EI征稿中!影响因子高,对国人友好。信息如下,录满为止: 一、期刊概况: 人工智能类重点SCI&EI 【期刊简介】IF:7.5-8.0,JCR1区&#xff0…

chatgpt赋能python:Python如何获取图片的尺寸

Python如何获取图片的尺寸 如果你在使用Python编程,常常需要获取图片的尺寸,本文将介绍如何使用Python获取图片的尺寸,同时还会介绍一些常用的Python库用于图像处理。 PIL库 PIL(Python Imaging Library)是Python中…

chatgpt赋能python:Python中如何设置空格

Python中如何设置空格 作为一门流行的编程语言,Python被广泛地应用于各种领域。在编写Python代码时,空格的使用非常重要。适当的空格设置可以让代码易读易懂,同时也有助于提高代码的可维护性和可重用性。 什么是空格 在Python中&#xff0…

shell脚本:循环结束语句二

shell脚本-循环结束语句二 二、循环结束语句:1.break:跳出循环。2.continue:3.while:4.until:条件不成立时,跳出循环。5.总结: 三、操作演练: 二、循环结束语句: 1.brea…

QT CTK插件开发(六) 多对一插件

CTK在软件的开发过程中可以很好的降低复杂性、使用 CTK Plugin Framework 提供统一的框架来进行开发增加了复用性 将同一功能打包可以提供多个应用程序使用避免重复性工作、可以进行版本控制提供了良好的版本更新迭代需求、并且支持动态热拔插 动态更新、开发更加简单快捷 方便…

基于jupyter的逻辑回归练习

文章目录 练习2:逻辑回归介绍1 Logistic回归1.1 数据可视化1.2 实现1.2.1 Sigmoid函数1.2.2 代价函数和梯度1.2.2.1 代价函数1.2.2.2 梯度下降 1.2.3 寻找最优参数1.2.4 评估逻辑回归 2 正则化逻辑回归2.1 数据可视化2.2 特征映射2.3 代价函数和梯度 2.4 寻找最优参…

腾讯云618云服务器优惠活动价格表

2023年腾讯云618年中促销活动已经正式开始了,腾讯云多款云服务都有特惠,下面给大家分享腾讯云618云服务器优惠活动价格表,记得抓住这次上云好时机! 目录 一、腾讯云618活动入口 二、轻量应用服务器优惠价格表 三、CVM云服务器优…

【连续介质力学】二阶张量的图像表示

二阶张量在特定方向的投影 法向和切向分量 二阶张量T投影到 n ^ \hat n n^方向的结果是 t ⃗ ( n ^ ) T ⋅ n ^ \vec t^{(\hat n)}T \cdot \hat n t (n^)T⋅n^,其中 t ⃗ ( n ^ ) \vec t^{(\hat n)} t (n^)可以分解成: t ⃗ ( n ^ ) T ⃗ N T ⃗ S…

指针(三)

文章内容 1. 字符指针 2. 数组指针 3. 指针数组 文章内容 1. 字符指针 指针的概念: 1. 指针就是个变量,用来存放地址,地址唯一标识一块内存空间。 2. 指针的大小是固定的4/8个字节(32位平台/64位平台)。 3. 指针…

适配器stack和queue

目录 什么是适配器 模拟实现stack stack的特性 STL中stack的基本框架 接口实现 模拟实现queue queue的特性 STL中queue的框架 什么是适配器 适配器:所谓适配,适配的是容器(vector,list,deque....) 也就是不管是什么容器,都可以套用适…

chatgpt赋能python:Python如何设置输入的SEO

Python如何设置输入的SEO Python是一种高级的编程语言,具有容易上手、可扩展和开源等特点,因此在软件开发过程中得到广泛的应用。然而,如果您想让您的Python项目在搜索引擎上获得更好的排名和流量,您需要考虑如何设置输入的SEO。…

二叉搜索树(Binary Seach Tree)模拟实现

目录 二叉搜索树的性质 二叉搜索树的实现 结点类 接口类(BSTree) 二叉搜索树的插入(insert) 二叉搜索树的查找(find) 二叉搜索树删除(erase) 第二种、删除的结点右子树为空 第三种、删除的结点左子树为空 第四种、删除的结点左右都不为空 实现 二叉搜索树模拟实现代…

基于jupyter的轮廓检测及功能

文章目录 一、实验介绍二、实验步骤三、实验任务任务一:轮廓特征练习一: 找到每个轮廓的方向任务二:边界矩形练习二: 围绕轮廓裁剪图像 总结 一、实验介绍 1. 实验内容 本实验将学习轮廓检测及功能。 2. 实验要点 生成二进制图像来查找轮廓找到并画出…

kotlin函数返回函数

kotlin函数返回函数 https://blog.csdn.net/zhangphil/category_12220817.htmlhttps://blog.csdn.net/zhangphil/category_12220817.html 例1: // func返回匿名函数 fun func(msg: String): (String, Int) -> String {println("func函数 msg:$msg")/…

电能管理系统多功能电力仪表的应用 安科瑞 许敏

摘 要:基于车间用电设备的电能管理系统架构思路及实施方法,从硬件和软件方面对此方法进行了阐述。对车间旧设备改造以及新的电能管理系统提供一种思路和便捷的方法。 关键词:电能管理系统;多功能电力仪表;PLC&#x…

Azure Log Analytics:与Power BI集成

注:本文最初发布于https://d-bi.gitee.io, 2023年6月迁移至CSDN 前述 Azure Log Analytics是Azure Monitor中的一项分析服务。本文将讲述通过Log Analytics与Power BI集成的方式,获取Power BI工作区内的日志信息,包括各PBI数据集的CPU消耗&a…