在sql中select的执行顺序
<select{[distinct |all] columns |*}>
[into table_name]
<from {tables |views | other select}>
[where conditions]
[group by columns]
[having conditions]
[order by columns]
[fetch first class]
[union<select query clause>]
在上面的语法中共有九个句子,他们的功能分别如下:
select子句:用于选择数据表,视图中的列;
into 子句:用于将原表的结构和数据插入到新表中;
from子句:用于指定数据来源,包括表,视图和其他的select语句;
where子句:用于对检索的数据进行筛选;
group by:用于对检索的结果进行分组显示;
having子句:用于从使用group by子句分组后的查询结果中筛选数据行;
order by:用于对结果集进行排序(包括升序和降序)
fetch first:用于返回结果集的行数;
union:用于连接两条select查询语句。
说明:1.union all对两张表中的数据进行合并,它和union的不同之处在于,union all显示的是所有合并的数据包括重复的,而union只显示不重复的数据
2.group by 子句经常和聚集函数一起使用,如果select子句中包含聚集函数,则计每组的总值,当用户指定order by 时,选择列中任一非聚集表达式内的
所有列都应包含在group by 中
例如:select 学号,avg(成绩) 平均成绩 from 成绩表
where 学号 in(select 学号 from 学生表 where 专业=‘学前教育’)
group by 学号
having avg(成绩)>=62
以上的sql的执行顺序如下:
1.首先执行where查询条件中的select,得到学前教育专业所有学生的学号集合
2.然后对‘成绩表’中的每条记录,判断‘学号’字段值是否在前面所求的‘学号’的集合中,不在,跳过该记录,继续处理下一条记录,若在,加入where的结果集
3.对成绩表筛选完后,按‘学号’进行分组,再在各分组记录中选出‘平均成绩大于等于62’的记录,从而形成最后的结果集。
带with rollup 关键字的group by子句,使用此关键字包含汇总总行
带with cube关键字的group by子句中的各列的所有可能组合均产生汇总行
在sql中select的执行顺序的更多相关文章
- SQL中关键字的执行顺序
作为一个SQL新手,看到每种不熟悉的关键字时已经够迷茫了,可往往见到的语句关键字顺序还是各种各样,太难理解了.网上搜索了两篇文章,总结一下: 关于Sql关键字SELECT FROM GROUP ORD ...
- SQL之SELECT语句执行顺序及子句功能
1.select 语句的执行顺序 SELECT a.id,a.`product_name`,a.`agreement_copies` i,b.id as statusId from `opmp_pro ...
- SQL查询中关键词的执行顺序
写在前面:最近的工作主要是写SQL脚本,在编写过程中对SQL的执行和解析过程特别混乱不清,造成了想优化却无从下手.为此专门在网上找博文学习,并做了如下总结. 1.查询中常用到的关键词有: SELECT ...
- sql关键字的解释执行顺序
sql关键字的解释执行顺序 分类: 笔试面试总结2013-03-17 14:49 1622人阅读 评论(1) 收藏 举报 SQL关键字顺序 表里面的字段名什么符号都不加,值的话一律加上单引号 有一 ...
- 浅谈SQL优化入门:1、SQL查询语句的执行顺序
1.SQL查询语句的执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_ ...
- 45、SQL逻辑查询语句执行顺序
一 SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOI ...
- SQL语句完整的执行顺序(02)
这是对SQL语句完整的执行顺序(01)的补充: 数据库是mysql,使用的数据库表名称是my_student. 表的完整数据信息是: 完整语法是: Select [select选项] 字段列表[字段别 ...
- 第四篇:记录相关操作 SQL逻辑查询语句执行顺序
http://www.cnblogs.com/linhaifeng/articles/7372774.html 一 SELECT语句关键字的定义顺序 SELECT DISTINCT <selec ...
- 9、SQL逻辑查询语句执行顺序
本篇导航: SELECT语句关键字的定义顺序 SELECT语句关键字的执行顺序 准备表和数据 准备SQL逻辑查询测试语句 执行顺序分析 一.SELECT语句关键字的定义顺序 SELECT DISTIN ...
随机推荐
- [LeetCode] Sliding Puzzle 滑动拼图
On a 2x3 board, there are 5 tiles represented by the integers 1 through 5, and an empty square repre ...
- python中的基础2
2 2.1 字符串的索引与切片: a = 'ABCDEFGHIJK' print(a[0]) print(a[3]) print(a[5]) print(a[7]) 2.2 字符串的常用方法. pr ...
- Android手机camera和IMU的标定
https://qingsimon.github.io/post/2018-12-28-android%E6%89%8B%E6%9C%BA%E7%9B%B8camera%E5%92%8Cimu%E7% ...
- C#的托管与非托管大难点
托管代码与非托管代码 众所周知,我们正常编程所用的高级语言,是无法被计算机识别的.需要先将高级语言翻译为机器语言,才能被机器理解和运行.在标准C/C++中,编译过程是这样的:源代码首先经过预处理器,对 ...
- java script基本数据类型与数组
基本数据类型 1.undefined (var a;) 2.null (var a=null); 3.String (var a=" " or ' '); 4.boolea ...
- TestNG Suite 运行出现中文乱码如何解决
场景: 用TestNG框架运行测试类,控制台视图输出出现中文乱码. 解决方案: 1.eclipse属性>workspace>other>utf-8 2.修改eclipse.ini 文 ...
- Java对象在Hibernate持久化层的状态
-临时状态:刚用new语句创建对象,还没有被持久化,并且不处于Session缓存中.处于临时状态的java对象被称为临时对象. -持久化状态:已经被持久化,并且加入到Session的缓存中.处于持久化 ...
- spring框架学习之--数据库操作增删改查
基于spring的NamedParameterJdbcTemplate操作数据库 首先在 resources 文件夹下添加数据库配置文件jdbc.properties 配置常用的数据库信息 consu ...
- 【Mac】-NO.133.Mac.1 -【重置忘记macos root密码】
Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...
- ESP8266小知识与注意事项
小知识 1. 什么是"512+512".“1024+1024”? 当ESP8266支持FOTA(无线升级)时,会给系统做个备份,当升级失败时,使之不至于死机.所以flash会被分割 ...