数据库SQL查询(一)

本文介绍SQL查询,如何在海量数据中筛选想要数据;

数据库管理系统选择:关系型数据库mysql

数据库管理工具选择:navicat

本文中查询语句和查询案例参考自:https://edu.csdn.net/course/detail/27673?ops_request_misc=&request_id=&biz_id=105&utm_term=SQL&utm_medium=distribute.pc_search_result.none-task-course-2~course~sobaiduweb~default-3-27673.pc_edu_default&spm=1018.2226.3001.4453

目录

基本结构

示例(重命名 AS)

运算符

比较运算符:

示例(不等于 !=)

示例(为空 IS NULL)

示例(属于 IN)

示例(正则表达式 REGEXP)

排序

示例(ORDER BY)

聚合函数

示例(最大值 MAX)

示例(平均值 AVG)

示例(计数 COUNT)

示例(求和 SUM)

分组查询

示例(分组 GROUP BY)

示例(分组后筛选 HAVING)

示例(分组前筛选 WHERE)

嵌套查询

示例(in)


基本结构

select -- 查询什么,列筛选,其中*表示所有列

from   -- 在哪个表查询,主要连接要查询的表名称

where -- 满足什么条件,行筛选

示例(重命名 AS)

As可以为列重命名

-- 查询出姓名为“陈鹏”的学号、手机号码和邮箱地址并重命名

SELECT
	sno AS '学号',
	mobileno AS '手机号码',
	stuemail AS '邮箱地址' 
FROM
	Student 
WHERE
	sname = '陈鹏'

运算符

参考:SQL学习之运算符_sql运算符有哪些_heart-szu的博客-CSDN博客

比较运算符

比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情况则返回NULL。
比较运算符经常被用来作为SELECT 查询语句的条件来使用,返回 符合条件的结果记录。

=                                       等于

<>     !=                            不等于

>=      >       <=       <       大于  大于等于   小于   小于等于

is null, is not null           null不能使用比较运算符

示例(不等于 !=)

-- 查询出姓名不是“陈鹏”的学生的所有信息

SELECT
	* 
FROM
	Student 
WHERE
	sname != '陈鹏'

示例(为空 IS NULL)

-- 查询哪些学生没有填写“年龄 ”信息

SELECT
	SNo,
	SName 
FROM
	Student 
WHERE
	sage IS NULL

示例(属于 IN)

-- 查询出“陈鹏”、”Alice”、”Bob”的学号,姓名

SELECT
	sno,
	sname 
FROM
	Student 
WHERE
	sname IN (
		'陈鹏',
		'Alice',
	'Bob')

示例(正则表达式 REGEXP)

-- 查询出手机号码133或者134开头,倒数第二位为不是2也不是4的学生

SELECT
	* 
FROM
	Student 
WHERE
	mobileno REGEXP '^[1][3][34][0-9]{1,}[^24][0-9]$'

排序

通过Order by 进行排序;ASC升序   DESC降序 ;不写默认是升序;

示例(ORDER BY)

-- 对Student表按照年龄升序排序,如果年龄一样,女生排在男生前面

SELECT
	* 
FROM
	Student 
ORDER BY
	sage ASC,
	sex ASC       -- mysql中是ASCII码排序,转换后女排在男前面,所以是升序

聚合函数

聚合函数对一组值执行计算并返回单一的值;

COUNT:求所选记录行数(可与distinct连用,消除重复值再计数)

AVG:求所选记录的平均值

SUM:为所选记录求和

MAX:求所选记录的最大值

MIN:求所选记录的最小值

示例(最大值 MAX)

-- 查询年龄最大值

SELECT
	MAX( sage ) 
FROM
	Student                

 

示例(平均值 AVG)

-- 查询男生的平均年龄

SELECT
	AVG( sage ) 
FROM
	Student 
WHERE
	sex = '男'

 

示例(计数 COUNT)

 -- 查询有多少位学生借书

SELECT
	COUNT( DISTINCT sno ) 
FROM
	BorrowBook  

 

示例(求和 SUM)

-- 查询计算机类的图书总共有多少本

SELECT
	SUM( bookincoming ) 
FROM
	Book 
WHERE
	booktypeid = ( SELECT id FROM BookType WHERE typename = '计算机' )

 

分组查询

“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个数据集划分成若干个小区域,然后针对若干个小区域进行数据处理

分组前筛选--where

分组后筛选--having

示例(分组 GROUP BY)

-- 查询出男女生姓名、人数、平均年龄、年龄和

SELECT
	Sex,
	GROUP_CONCAT( sname ) AS '学生姓名',   -- GROUP_CONCAT可以把多个值显示到一起
	Count(*) AS '人数',
	avg( sage ) AS '平均年龄',
	sum( sage ) AS '年龄和' 
FROM
	Student 
GROUP BY
	Sex                                   -- 按照性别分组

示例(分组后筛选 HAVING)

-- 查询出借的最多的那本书的Id

SELECT
	BookID,
	COUNT(*) AS '被借次数' 
FROM
	BorrowBook 
GROUP BY
	BookId           -- 按照ID分组
	
HAVING
	COUNT(*) =       -- 分组后筛选借书最多值
	(
	SELECT
		COUNT(*) 
	FROM
		BorrowBook 
	GROUP BY
		BookId 
	ORDER BY
		COUNT(*) DESC 
		LIMIT 1 
	)

示例(分组前筛选 WHERE)

-- 统计出一月份哪些区域的哪些商品销售低于1000件, 按照倒序排列

 

SELECT
	PArea AS '区域',
	PName AS '名称',
	SUM( PSaleNo ) AS '销售量' 
FROM
	SalesTable 
WHERE
	PMonth = '一月'           -- 分组前筛选一月份数据:Where
	
GROUP BY
	PArea,
	PName                      -- 按照区域和商品分组
	
HAVING
	SUM( PSaleNo ) < 1000      -- 分组后筛选低于1000件数据:having
	
ORDER BY
	SUM( PSaleNo ) DESC

嵌套查询

在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的 WHERE子句 或 HAVING短语 的条件中的查询称为嵌套查询;

先处理内查询,由内向外处理;

连接关键字

如果子查询确定就一个值,可以使用 = 或者 in 连接

如果子查询是多个值,需要用 in 连接

in , = any , = some 效果一样

any 满足一个就是真, all 满足所有的才是真

in 判断是否存在于集合,exists 是否有结果

示例(in)

-- 查询陈鹏借了哪些书

表关系如下图所示:

student表中通过sname匹配sno,作为条件传给borrowbook表

borrowbook表中通过sno匹配bookID,作为条件传给book表

book表中通过bookID匹配bookname

SELECT
	bookname 
FROM
	Book 
WHERE
	bookid IN (
	SELECT
		bookid 
	FROM
		BorrowBook 
	WHERE
	sno = ( SELECT sno FROM Student WHERE sname = '陈鹏' ) 
	)

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

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

相关文章

面试专题:计算机网络常见面试点总结

socket、tcp、udp、http 的认识及区别 socket、tcp、udp、http 的认识及区别​ 一、先来一个讲TCP、UDP和HTTP关系的 1、TCP/IP是个协议组&#xff0c;可分为三个层次&#xff1a;网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传…

【Django 网页Web开发】24. 实战项目:moudleForm的文件上传应用到城市管理(17)(保姆级图文)

目录 用户上传文件存放media如何启用1. 在urls.py中进行配置&#xff1a;2. 在settings.py中进行配置&#xff1a;3. 能够通过media的url访问文件 moudleForm上传文件实现城市管理1. moudle.py2. url.py3. city.py4. city.html5. 文件上传小结6. 城市管理效果总结 欢迎关注 『D…

基于Java菜匣子优选系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

人脸识别4:Android InsightFace实现人脸识别Face Recognition(含源码)

人脸识别4&#xff1a;Android InsightFace实现人脸识别Face Recognition(含源码) 目录 人脸识别4&#xff1a;Android InsightFace实现人脸识别Face Recognition(含源码) 1. 前言 2. 项目说明 &#xff08;1&#xff09;开发版本 &#xff08;2&#xff09;依赖库说明(O…

Docker部署gitlab-runner

gitlab-runner 1.部署 Linux使用二进制的方式Docker中使用容器的方式启动gitlab-runnerHelm包的方式安装gitlab-runner Docker中使用容器的方式启动gitlab-runner 1.安装gitlab runner docker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner/conf…

When viruses are good for you 病毒,有时对人体是有益的 | 经济学人20230506版社论双语精翻

本篇来自《经济学人》&#xff08;The Economist&#xff09;2023年5月6日社论&#xff08;Leaders&#xff09;精选&#xff1a;《病毒&#xff0c;有时对人体是有益的》&#xff08;When viruses are good for you&#xff09;。 Bacteriophages 噬菌体 When viruses are goo…

202319读书笔记|《春之海终日优哉游哉:谢芜村俳句300》——远山峡谷间樱花绽放,宇宙在其中

202319读书笔记&#xff5c;《春之海终日优哉游哉&#xff1a;谢芜村俳句300》——远山峡谷间樱花绽放&#xff0c;宇宙在其中 与谢芜村&#xff0c;小林一茶&#xff0c;芭蕉&#xff0c;与谢野晶子&#xff0c;俳句都很赞&#xff0c;虽多本书中略有重复&#xff0c;但多多观…

Android插件化框架-Shadow原理解析

作者&#xff1a;dennyz 1、前言 所谓插件化&#xff0c;是实现动态化的一种具体的技术手段。 对于移动端的App而言&#xff0c;无论是Android还是iOS&#xff0c;都存在一个共同的问题&#xff0c;那就是更新的周期较长。 当我们希望快速为App更新功能时&#xff0c;必须经…

【redis】redis的5种数据结构及其底层实现原理

文章目录 redis中的数据结构redis数据结构底层实现stringlisthashsetintset字典 zset跳表插入删除过程 redis中的数据结构 Redis支持五种数据类型&#xff1a;string&#xff08;字符串&#xff09;&#xff0c;hash&#xff08;哈希&#xff09;&#xff0c;list&#xff08;…

Python如何制作图标点选验证码

本文讲解如何使用python中的opencv库来制作图标点选验证码 图标点选验证码制作起来非常简单,你只需要准备两部分数据集,数据集数量都不用很多,背景图我选择了20个左右,大小为(300, 500)左右,图标我抓取了100多个,图标大小为(40,40)左右,图标由不同大小的透明度构成…

C++:IO流

目录 一. C语言的输入输出方式 二. C的输入输出 2.1 C标准IO流 2.2 文件IO流 2.3 字符串IO流 一. C语言的输入输出方式 一般C语言通过scanf和printf来实现输入输出&#xff0c;scanf和printf都需要显示地指定数据类型。同时&#xff0c;C语言还支持fscanf/fprintf以及ssc…

【大数据】可视化仪表板 - Superset的安装和使用

写在前面&#xff1a;博主是一只经过实战开发历练后投身培训事业的“小山猪”&#xff0c;昵称取自动画片《狮子王》中的“彭彭”&#xff0c;总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域&#xff0c;如今终有小成…

MYSQL中 find_in_set() 函数用法详解

MYSQL中 find_in_set() 函数用法详解 官方涵义&#xff08;MySQL手册中语法说明&#xff09; FIND_IN_SET(str,strlist) &#xff1a; str 要查询的字符串&#xff0c;strlist 需查询的字段&#xff0c;参数以”,”分隔&#xff0c;形式如 (1,2,6,8,10,22)&#xff1b;该函数的…

接口如何运用pytest+HttpRunner展开测试?

目录 前言&#xff1a; 一、 什么是接口测试 二、 引入自动化背景 三、 自动化技术选型 四、 自动化测试用例 五、自动化成果 前言&#xff1a; pytest和HttpRunner都是Python编程语言中常用的接口测试框架。 pytest是一种成熟的、灵活的、社区支持良好的测试框架&…

vr沉浸式仿真实训展厅中控系统提高课堂纪律

为解决实训教学过程中“看不到、进不去、成本高、危险大”的问题&#xff0c;VR智能中控系统为职业教育及高等教育老师提供一个数字化、沉浸式、集中管控的实训教学工具。 VR智能中控系统通过对VR教学课堂的实时监控、数据的收集和分析&#xff0c;为气象学院的教学提供更多帮助…

2023年05月份青少年软件编程Scratch试卷三级真题

2023-05 Scratch三级真题 分数&#xff1a;100 题数&#xff1a;38 测试时长&#xff1a;60min 一、单选题(共25题&#xff0c;共50分) 1. 关于变量&#xff0c;下列描述错误的是&#xff1f;&#xff08;A&#xff09;&#xff08;2分&#xff09; &#xff08;变量那一栏…

【深度学习】基于Qt的人脸识别系统,门禁人脸识别系统,Python人脸识别流程,树莓派

文章目录 人脸识别过程人脸检测人脸对齐人脸特征提取特征距离比对人脸识别系统 人脸识别过程 在深度学习领域做人脸识别的识别准确率已经高到超出人类识别&#xff0c;但综合考虑模型复杂度&#xff08;推理速度&#xff09;和模型的识别效果&#xff0c;这个地方还是有做一些…

基于Java物流管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

STM32单片机(四)第一节:OLED调试工具

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

从业务出发,K8S环境自建和非自建整体架构设计比较

新钛云服已累计为您分享751篇技术干货 随着数字化转型的大潮到来&#xff0c;越来越多的企业开始上云&#xff0c;同时也纷纷加入到微服务和K8S队伍中。但在K8S整体环境究竟应该用自建的还是非自建&#xff1f;以及他们需要用到的服务&#xff0c;究竟应该自建还是直接用PAAS服…