sql 查询关键词的执行顺序

摘要:
1.SQL是一种需要编译的语言,因此在实际执行过程中,需要编译数据库编译模块。尤其是在查询时,错误使用别名,无论是表还是列,都会导致查询失败。2.详细查询语句遵循以下查询顺序。从执行顺序中,我们基本上可以看到select子句中的列别名不能出现在groupby和have等子句中。Priority关键字备注1 FROM FROM子句返回初始结果集2 ON排除不符合联接条件的行

1 问题

SQL是一门需要进行编译的语言,因此在实际执行过程中是需要数据库编译模块进行编译的。特别是在查询的时候,对于别名的使用,不管是表还是列,错误的使用会导致查询的失败。

2 详解

查询语句遵循以下的查询顺序,从执行的顺序来看,基本就可以看到select子句中列的别名是无法在group by和having等子句中出现的。

优先级关键词备注
1FROMfrom子句返回初始结果集
2ON排除不满足join的条件的行
3JOIN多表关联
4WHERE子句排除不满足搜索条件的行
5GROUP BY子句将选定的行收集到group by子句中各个唯一值的组中
6HAVING子句排除不满足搜索条件的行
7SELECT列名,此时可以为列名起别名,列名之间用逗号隔开
8DISTINCT可以在select子句中,找出唯一值
9ORDER BY对结果集进行排序
10LIMIT限定查询的行数,一般放在查询语句的最后面

简单记为:from->where->group by->having->select->order by

3 总结

在mysql中,group by中可以使用列别名;where中不能使用列别名;order by中可以使用列别名。其余像oracle,hive中别名的使用都是严格遵循sql执行顺序的,groupby后面不能用别名。mysql特殊是因为mysql中对查询做了加强。

免责声明:文章转载自《sql 查询关键词的执行顺序》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Go net/http,web server代码服务器运行时找不到包文件位置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Go Mysql Driver 集成 Seata-Golang 解决分布式事务问题

简介: 2020 年 4 月,我们开始尝试实现 go 语言的分布式事务框架 Seata-Golang。众所周知,Seata AT 模式以无业务代码侵入的特点,被广大开发者推崇。Java 版 Seata AT 模式通过对 DataSource 数据源进行代理,在 sql 语句执行时,对 sql 拦截解析,获取数据库对应数据在 sql 语句执行前后的副本,序列...

利用JDBC连接Oracle数据库(转)

http://blog.csdn.net/wahaha1_/article/details/8512438 JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术。 一、JDBC基础知识 JDBC(JavaDataBaseConnectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问...

SQL语法

1、什么是 SQL? SQL 指结构化查询语言 SQL 使我们有能力访问数据库 SQL 是一种 ANSI 的标准计算机语言 编者注:ANSI,美国国家标准化组织 2、RDBMS RDBMS 指的是关系型数据库管理系统。 RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server, IBM DB2, Oracle,...

Sql Server 常用系统存储过程大全

-- 来源于网络 -- 更详细的介结参考联机帮助文档 xp_cmdshell --*执行DOS各种命令,结果以文本行返回。 xp_fixeddrives --*查询各磁盘/分区可用空间 xp_loginconfig --*报告SQL Server 实例在Windows 上运行时的登录安全配置 xp_logininfo --*返回有关Windows 认证登录...

JDBC 基础入门

由于我也是初学参考的是网上的或者是培训机构的资料所以可能会有错误的信息,仅供参考 一、什么是JDBC(Java Data Base Connectivity)? java程序连接数据库,JDBC是由SUN公司提出的一组规范,这组规范主要由一组接口构成,主要作用就是访问数据库。 二、JDBC核心思想【思想重要】     三、核心API【重点】      ...

SQL Server 触发器

SQL Server 触发器 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。而存储过程可以通过存储过程的名称被调用。 Ø 什么是触发器 触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上面。触发器和普通的存储过程的区别是:触发器是当对某...