SQL语言中的查询语句整理
1、 查询语句的介绍:
本篇主要介绍sql语句里的查询语句,这其中包括了查询语句中的子内容,也就是拓展的内容,这些内容代入到查询语句中将会有更多的反应。
2、 查询语句:
FROM命令:
SELECT 字段1,字段2,字段3 FROM 表文件名
- 执行顺序:mysql共有7个查询命令,FROM命令永远是第一个执行的查询命令
- 执行作用:FROM命令相当于一个读取流,分则将硬盘上表文件加载到内存中生成一个【临时表】供后续查询命令使用
由于查询命令对临时表数据进行操作,因此查询命令执行时,不会修改表文件原有的数据
WHERE命令:
- 示例:
SELECT 字段1,字段2 FROM 表文件名 WHERE 字段2=值
- 执行顺序:
FROM–>WHERE–>SELECT - WHERE作用:
- 遍历临时表所有的数据和,每次得到一个数据和,根据数据和信息判断数据和是否需要被定位。
- 在循环完毕后,WHERE命令将所有定位的数据行读取出来再内存中生成一个临时表进行保存
Group by 命令:
select * from 表文件名 group by 依据
执行顺序
FROM–>WHERE–>GROUP BY–>SELECT书写顺序:
SELECT 字段名,函数名,子查询
↓↓ FROM 表名称
↓↓ WHERE 定位数据行条件
GROUP BY 分组字段如果同时出现WHERE与GROUP BY,那么GROUP BY应该在WHERE之后
执行原理:
GROUP BY 执行时首先根据分组字段种类,将临时表中的数据行进行分类
然后将具有相同特征的数据行读取出来保存到一个全新的临时表中七各查询命令中,只有GROUP BY有机会再执行完毕后,一次生成多个临时表
group by命令其主要目的是对字段数据进行分组,分组可以是单个字段,也可以是多个字段。
1.多字段分组时,分组字段出现顺序对于最终查询结果是没有任何影响的。
GROUP BY 字段1,字段2 于 GROUP BY 字段2,字段12.多字段分组时,GROUP BY一次只能葛奴一个分组字段进行分组
GROUP BY 字段1,字段2 —— 该语句需要执行两次,一次分字段1,一次分字段23.多字段分组时,从第二个分组字段开始,操作的是上一个分组字段生成的临时表
GROUP BY 字段1,字段2 —— 当执行GROUP BY 字段2时,操作的临时表由GROUP BY 字段1生成的
order by 命令:
- sql命令的查询,默认是升序排序
select 字段名1,字段名2,字段名3 from 表文件名 order by 排序依据 desc(降序)
一般在查询语句的末尾使用
having 命令:
- having的要求:通过统计临时表决定是否删除临时表
select 字段名1,cunt(*) from 表文件名 group by 字段名1 having 依据
执行顺序:
FROM–>WHERE–>GROUP BY–>【HAVING】–>SELECT书写顺序:
HAVING命令不能独立出现在查询语句,只能出现在GROUP BY后面执行原理:
HAVING命令在GROUP BY之后执行的。它负责将GROUP BY生成临时表中不满足条件的临时表从内存中删除掉七个查询命令中,只有HAVING命令不会生成临时表,不但不生成,若条件不满足还会删除临时表
limit命令:
- MySQL服务器中,表文件字段位置从1开始计算,表文件数据行位置从0开始计算
执行顺序:
FROM --> WHERE --> GROUP BY --> HAVING --> SELECT --> ORDER BY --> LIMIT书写顺序:
SELECT 字段,函数,子查询
FROM 表
WHERE 定位数据行条件【逻辑运算/特殊运算符】
GROUP BY 分组字段,多个分组字段以 ‘,’ 号隔开
HAVING 对临时表进行删除判断条件
ORDER BY 排序字段
LIMIT 起始行位置,从起始行开始向下截取的行数执行原理:
从临时表中指定位置的数据行开始,向下截取指定数量的数据行。
将截取出来的数据行保存到一个全新的临时表
SELECT命令:
- 将经过了其他查询语句的结果临时表返回
3、 聚合函数:
用于对临时表指定字符按下【所有内容】进行统计的函数
包含方法为: max(字段)、min(字段)、sum(字段)、avg(字段)、count(字段)
1、max(字段): 返回指定字段下最大值
select max(字段名) from 表文件名 where 字段名 = 值2、max(字段): 返回指定字段下最小值
select min(字段名) from 表文件名 where 字段名 = 值3、sum(字段): 返回指定字段下所有数据相加之和
select sum(字段名) from 表文件名 where 字段名 = 值4、avg(字段): 返回指定字段下所有的数据平均值
select avg(字段名) from 表文件名 where 字段名 = 值5、count(字段): 返回指定字段下内容不等于null的数据个数
select avg(字段名) from 表文件名count(*) //统计临时表下所有数据行个数,不考虑数据是否存在null
注:聚合函数,需要通过Group by进行分组后才可以使用,但count不需要,这点需知。
4、 子查询:
子查询的意思,就是在一个查询中嵌套一个或多个查询而已,至于查询出来的值其实得看外层查询中所需要的值。
子查询出现的地点可以是from命令中,也可以是having、where命令,这是不限定的,因为这些命令需要的始终是一个或某个值,而子查询通过筛选可以放出多个或一个值,这样就可以通过子查询来连接外层查询语句进行筛选。
举个例子:
SELECT*
FROM表
WHERE筛选字段IN (SELECT子查询筛选字段FROM子查询表)
该例子中使用where命令将筛选字段与子查询查询出来字段进行比对,或是筛选字段中包含了子查询查询出来的字段,那么则通过where命令进行筛选。
5、 连接查询:
1.需要被帮助表:
2.不要被帮助表:
执行原理:
- 如果【需要被帮助表】中某行数据与【不需要被帮助表】所有的数据行都无法拼接为合法数据
- 此时依然将这个数据作为一个独立的数据行存入到新的临时表
命令格式:
左外连接过滤方案/左外连接查询
FROM 需要被帮助的表 LEFT JOIN 不需要被帮助的表
ON 合法数据行定位条件右外连接过滤方案/右外连接查询
FROM 不需要被帮助的表 RIGHT JOIN 需要被帮助的表
ON 合法数据行定位条件内连接过滤方案/右外连接查询
FROM 不需要被帮助的表 INNER JOIN 需要被帮助的表
ON 合法数据行定位条件
在某些情况下连接查询是可以替代子查询的,因为子查询多了后会让sql命令变成难以阅读,所以能够使用连接查询尽力选择连接查询。至少我是这么认为的。
总结:
查询语句在sql中占了挺大一部分篇幅,因为在数据库中使用查询语句的次数远多于更新与删除命令。而查询语句比起其他语句要更加的复杂,可因为sql是数据库不可或缺的一部分,所以即使不懂,也必须得弄懂,以上。
SQL语言中的查询语句整理相关推荐
- 数据库SQL语言学习--数据查询(持续更新中)
数据库SQL语言学习--数据查询(持续更新中) 上机练习1 1. 启动SQL Server 2008中的 SQL Server Management Studio. 2. ...
- sql脚本语言中的循环语句介绍
sql脚本语言中的循环语句介绍 –sql脚本语言的循环介绍: –1.goto循环点. declare x number; begin x:=0;–变量初始化: <<repeat_loop& ...
- 利用SQL语言表达复杂查询
这篇博客主要介绍一些复杂的sql查询,DDL和简单的sql部分这里不做介绍 先贴表结构: 出现在where子句中的select语句被称为子查询,子查询返回了一个集合,可以通过和这个集合的比较来确定另一 ...
- SQL语言_3 模糊查询和聚合函数
SQL语言_3 模糊查询和聚合函数 作者:田超凡 版权所有,转载请注明原作者,仿冒侵权必究法律责任 1.数据库中查询的机制 查询是针对数据表中已存在的数据行而言的,可以将它简单理解为筛选,将符合条件的 ...
- SQL语言---数据的查询
文章目录 前言 一.SQL语言的数据查询 1.SELECT语句格式 (1)定义格式 (2)WHERE子句中条件表达式F的语法申明 (3)SELECT语句的语法格式 2.单表查询 (1)什么是单表查询? ...
- 在 sql server 中,查询 数据库的大小 和 数据库中各表的大小
2019独角兽企业重金招聘Python工程师标准>>> 在 sql server 中,查询 数据库的大小 和 数据库中各表的大小 其实本来只想找一个方法能查询一下 数据库 的大小,没 ...
- 如何从SQL Server中的SELECT语句更新
In this article, we will learn different methods that are used to update the data in a table with th ...
- 【C语言进阶深度学习记录】七 C语言中的循环语句
文章目录 1 循环语句分析 1.1 do...while循环 1.2 while循环 1.3 for循环 1.4 三种循环语句使用对比 2 break和continue的区别 3 总结 1 循环语句分 ...
- Python编程语言学习:python语言中快速查询python自带模块函数的用法及其属性方法、如何查询某个函数关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略
Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法.如何查询某个函数&关键词的用法.输出一个类或者实例化对象的所有属性和方法名之详细攻略 ...
最新文章
- 为什么要使用Retrofit封装OkHttp,而不单独使用OkHttp?
- 一文读懂TOF深度相机技术原理--TI-Tintin-OPT8241二次开发和应用系列--Theory Level
- archer mysql源码_自动化运维工具inception+archer
- data中的数据如何在innerhtml中调用_Vuex中调用state数据
- IEnumerable.OrderBy().First() 在 .netcore 3.1 中是否做了优化?
- [js] 渲染树构建、布局及绘制
- 「雕爷学编程」Arduino动手做(28)——RGB全彩LED模块
- 手机访问电脑文件_手机直接访问电脑文件,不用数据线,方便快速
- pandas 菜鸟_再见Numpy,Pandas!又一个数据分析神器横空出现!
- SQLite数据库操作类
- 关于Bom下标准模式和混杂模式!
- OBJ 模型文件与MTL材质文件 介绍
- JS初学者使用jQuery开发一款弹幕射击游戏
- A DIRT-T APPROACH TO UNSUPERVISED DOMAIN ADAPTATION
- 聊聊 Redis 是如何进行请求处理
- android系统平板输入法切换,安卓平板电脑怎么样切换输入法?
- flex布局 justify-content 新属性值 space-evenly
- CTF Crypto---RSA NC不互素
- 计算机键盘可为哪几个区,电脑键盘分为哪几种?
- 005永磁同步电机的数学模型:写了很久,非常适合零基础的同学学习参考
热门文章
- HUAWEI nova 2颜值新宠美妞亲测 前置自拍更清新
- 收藏:研发人效的计算方法
- 三星最新android版本是多少钱,三星发布Android 10系统升级计划,S10系列于明年1月最早尝鲜...
- go插件 vscode 报错_【Go】VScode安装Go插件
- 代码学习这个好帮手少不了
- 安卓桌面软件_安卓和苹果不同系统的手机怎么互传便签内容? - 学显
- Lunix常用命令-pssh简介及安装
- 山师大计算机专业,山东师范大学
- 设置笔记本电脑华硕飞行堡垒电池的使用模式
- Android Studio更新后右上角一直提示analyzing