在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 ...
随机推荐
- 白盒测试实践-day01
一.任务进展情况 了解本次测试的主要任务,进行小组分工. 二.存在的问题 由于最近比较忙,任务来不及做. 三.解决方法 坚持一下.
- Java根据链接生成二维码
Java根据链接生成二维码 相关 jar 包: core-3.1.0.jar 源码及 jar 包下载:http://files.cnblogs.com/files/liaolongjun/qrcode ...
- 从vue源码看Vue.set()和this.$set()
前言 最近死磕了一段时间vue源码,想想觉得还是要输出点东西,我们先来从Vue提供的Vue.set()和this.$set()这两个api看看它内部是怎么实现的. Vue.set()和this.$se ...
- 使用openSSL开源工具进行SSL/TLS 安全测试
本文介绍了使用半自动化工具执行SSL&TLS安全性评估的过程,以及如何使用手动及工具的测试方法验证并发现问题.目的是优化TLS和SSL安全测试流程,帮助信息安全顾问在渗透测试时在TLS / S ...
- memcached加固
Memcached服务安全加固 更新时间:2017-06-30 10:07:49 漏洞描述 Memcached是一套常用的key-value缓存系统,由于它本身没有权限控制模块,所以对公网开放的 ...
- 栈->栈与递归
文字简述 1.阶乘函数 2.2阶Fiibonacci数列 3.n阶Hanoi塔问题 代码实现 // // Created by lady on 19-4-3. // #include <stdi ...
- Linux 部署 xxl-job 注意问题
问题:Failed to create parent directories for [/data/applogs/xxl-job/xxl-job-admin.log][原因:权限不足] 启动终端: ...
- 一对多关联模型,BELONGS_TO
先分别创建三张表:test_user test_message test_user 表里有id.name字段 test_message 表里有id.content.uid字段 然后建立一个Mode ...
- Windows下MongoDB设置用户、密码
在默认情况下,mongod是监听在127.0.0.1之上的,任何客户端都可以直接连接27017,且没有认证. 好处是,用户可以即时上手,不用担心被一堆配置弄的心烦意乱. 坏处是,公网服务器搭建Mong ...
- 关于 RESTful API 中 HTTP 状态码的定义
最近正好使用了一会儿 Koa ,在这说一下自己对各个 请求码的见解和使用场景,懒人直接看 200.400.401.403.404.500 就可以了. 其中 2XX/3XX 其实都是请求成功,但是结果不 ...