在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 ...
随机推荐
- Java课程寒假之《人月神话》有感之三
一.未雨绸缪 作者开始谈论实验室代码如何向开发出来的产品转变,化学工程师通过“实验性工厂”的中间步骤做测试来得到经验.而软件系统的构建人员却是按照时间进度将第一次开发的产品发布给顾客.对于我这只没有实 ...
- linux 文件 IO 目录操作及文件属性
///练习:实现列出某个目录中所有文件属性(文件大小,文件最后修改时间,文件名)//目录名由参数传入 ./dir /home/linux#include <sys/stat.h>#incl ...
- Hibernate--Day01
Hibernate是一个面向对象的持久化框架 持久化: 1,把内存中的Java对象保存到存储设备上面: 2,最好的解诀方案:把对象持久化到数据库里面: 3, 在Java里面,把对象持久化到数据库只能使 ...
- 终于明白了 C# 中 Task.Yield 的用途
最近在阅读 .NET Threadpool starvation, and how queuing makes it worse 这篇博文时发现文中代码中的一种 Task 用法之前从未见过,在网上看了 ...
- lua 操作redis
Redis在2.6推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行.使用脚本的好处如下: 1.减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在red ...
- synchronized和Lock复习
刚学编程的时候,不懂得同步的概念,只认为程序按照自己写的顺序执行, 直到学到多线程,但当时理解同步问题,也只是面对临界资源需要加锁去控制, 解决一些,如生产消费的问题.但当时一直没考虑过,多线程的情况 ...
- Win10问题汇总
1.重置网络连接命令 netsh winsock reset ipconfig /flushdns 2.WIN10去除我的电脑上面的6个文件夹 把下面代码复制,保存到.reg中,然后执行即可(修改注册 ...
- POI导出excel列宽自适应
让单元格宽度随着列和单元格值的宽度自适应: //存储最大列宽 Map<Integer, Integer> maxWidth = new HashMap<>(); // 将列头设 ...
- 彻底清空SharePoint回收站(仅限IE)
1.导航到回收站页面2.F12,在控制台输入javascript:emptyItems()3.回车 4.点击确定即可 注意:这种方法可能只适用于Internet Explorer
- urlib库的使用
urlib库实际上不是很常用,因为其api调用复杂,已被requests模块取代. 1.request发送请求 from urllib import request #默认指定的是get请求 #url ...