order by 子查询_SQL查询语法
平常大家对于sql可能不是太陌生,经常使用sql来进行数据的存储等操作。今天我就来分享一下最简单的也是最基本的SQL查询类的语法操作。如下图所示,为PG的语法,应是涵盖了了查询的80%的用法。
一、关键字的介绍与样例
基本查询SQL
select col1,col2 from TABLE1
ALL(可选)--
描述:与distinct区分,查询全部值
样例:select ALL col1,col2 from table1
DISTINCT /DISTINCT on (,)(可选)
描述:用户返回唯一不同的值,其中DISTINCT为所有字段值不同;若带on字段,则对字段进行判定
样例:select DISTINCT col1,col2 from table1
select DISTINCT on (col1,col2) col1,col2 from table1
top_option(可选)--
描述:使用TOP子句限制结果集中返回的行数,如果指定了PERCENT,则是指返回的结果集行的百分比。
样例:SELECT TOP (9 + (SELECT COUNT(*) FROM IAM.T_IAM_ASSET_TYPE)) PERCENT * FROM IAM.T_IAM_ASSET_TYPE
expr1 AS e1,expr2 AS e2
描述:查询结果
样例:select col1 as c1,col2 from TABLE1
select_into_clause
描述:指定创建一个临时表,使用SELECT:INTO创建临时表是不支持指定ON COMMIT选项,只能创建默认临时表,即事务级临时表。
样例:select * INTO tab2 from tab1;
FROM
描述:关键字
样例:select col1 as c1,col2 from TABLE1
table_reference1,table_reference2
描述:需要查询的表
样例:select col1 as c1,col2 from TABLE2 t2
where
描述:过滤条件的关键字
样例:select col1,col2 from TABLE1 where col1>3
condition
描述:过滤条件
样例:select col1,col2 from TABLE1 where col1>3
GROUP BY expr1,expr2
描述:分组
样例:select col1,col2 from TABLE1 GROUP BY col1
HAVING CONDITION
描述:对分组后的结果进行过滤
样例:select col1,col2 from TABLE1 GROUP BY col1 having col1>3
注意:在不同的场景对于having与where的区别,在查询过程中执行顺序:from>where>group(含聚合)>having>order>select。
having是在分组后对数据进行过滤
where是在分组前对数据进行过滤
having后面可以使用聚合函数
where后面不可以使用聚合union clause
描述:select:setop,集合操作,分为union/intersect/except all,其中UNION操作的结果为左右两个子查询结果的并集,同时消除重复;UNION ALL操作的结果为左右两个子查询结果的并,不消除重复。INTERSECT操作的结果为左右两个子查询的交集,同时消除重复;INTERSECT ALL操作的结果为左右两个子查询结果的交集,不消除重复,即若元组A在左右子查询中分别出现M次和N次,则INTERSECT ALL操作的结果中将包含min(M, N)个A元组。EXCEPT操作的结果为左右两个子查询结果的差,同时消除重复;EXCEPT ALL操作的结果为左右两个子查询结果的差,不消除重复,即若元组A在左右子查询中分别出现M次和N次,则EXCEPT ALL操作的结果中将包含M-N个A元组(若M<=N,则结果中将不包含A)。
ALL:在缺省情况下,集合操作将消除结果中的重复行,用户可以使用ALL关键字指定保留结果中的重复行。
样例:SELECT * FROM tab1 UNION SELECT * FROM tab2 ORDER BY 1, 2;
order_by_clause
描述:排序,order by+表达式/排序键/列名(别名) ASC/DESC
NULLS FIRST:如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是asc 还是 desc)。
NULLS LAST:如果Order by 中指定了表达式Nulls last则表示null值的记录将排在最后 (不管是asc 还是 desc)。
样例:SELECT * FROM tab1 ORDER BY a, b, c;
注意:order by后面的字段按照先后顺序进行排序
FOR UPDATE / FOR UPDATE of table_name1,tablename2
描述:要对查询结果所涉及的行加排它锁
注意:防止死锁
LIMIT COUNT/limit ALL
描述:limit count表示至多返回count行,limit all返回offset之后的所有行
样例:SELECT a FROM tab1 ORDER BY a DESC LIMIT 1;
OFFSET offset
描述:从offet之后开始取值
样例:SELECT a FROM tab1 ORDER BY a DESC LIMIT 1 OFFSET 1;
二、执行语法
SELECT语句用于数据检索。对于SELECT语句中的各个子句,从逻辑上可以认为系统将按如下的顺序进行处理:
from>where>group(含聚合)>having>order>select。
处理FROM子句,得到FROM子句中指定的所有数据源联接的结果;
处理WHERE子句。对输入根据条件condition进行筛选,返回那些满足条件的行;
处理GROUP BY子句。将输入按分组属性进行分组;
处理HAVING子句,过滤掉那些不满足条件的组;
处理ORDER BY子句,按输入进行排序;
处理SETOP子句,将输入与另一个查询的结果进行集合操作;
处理LIMIT和TOP子句,过滤掉那些不在指定范围内的元组;
处理SELECT子句,对输入进行投影操作,即只保留在SELECT子句指定要返回的列,而舍弃其余的列;
若语句中包含INTO子句,则将查询结果插入到新创建的表中,否则,将查询结果返回给用户。FOR UPDATE子句并没有处理在上述的处理流程中,这是由于FOR UPDATE子句并不影响查询结果,而只是告诉执行器要对查询结果所涉及的行加排它锁(在通常情况下加的是共享锁)。
SELECT子句用于指定输出列,一个SELECT语句最多可以输出65535个列。
order by 子查询_SQL查询语法相关推荐
- .net函数查询_SQL查询语句总是先执行SELECT?你们都错了!
很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟别人解释什么是窗口函数,我在网上搜索"是否可以对窗口函数返回的结果进行过滤"这个问题,得出的结论是"窗口函数 ...
- java中当前时间查询_SQL 查询当前时间
Mysql: select date_format(now(),'%Y-%m-%d'); Oracle: Oracle中如何获取系统当前时间进行语句的筛选是SQL语句的常见功能 获取系统当前时间 da ...
- knex 单表查询_SQL查询构建器 knex.js
授权协议: MIT 开发语言: JavaScript 操作系统: 跨平台 软件介绍 knex.js 是一个查询构建器,用于 PostgreSQL, MySQL 和 SQLite3.它设计灵活,轻便和有 ...
- java销售额查询_SQL查询每月查找总销售额 - oracle
我有两个表,产品(pid,pname,quantityinhand,价格,折扣)购买(pid,qty,p_time,total_price)//其中qty是销售单位数 . 我需要找到pname,pda ...
- sql 子查询 嵌套查询_SQL子查询– SQL中的嵌套查询
sql 子查询 嵌套查询 In the real world, there are times when we need a particular set of data but we don't h ...
- order by 子查询_视图,子查询,标量子查询,关联子查询
视图 子查询 标量子查询 关联子查询 如何用SQL解决业务问题 各种函数 1. 视图 视图内存放SQL查询语句,运行时运行该语句.查出的数据为临时数据 创建视图 create view as 视图名称 ...
- order by 子查询_【框架】118:mybatis之多表高级查询
今天是刘小爱自学Java的第118天. 感谢你的观看,谢谢你. 学习内容安排如下: 补充说明知识点:resultMap,sql片段. mybatis中的高级查询,即多表关联查询. 查询主要分为:一对一 ...
- mysql数据库入门教程(5):多表操作(连接查询,子查询,分页查询,联合查询)
前文介绍了单表查询:mysql数据库入门教程(4):查询讲解大全 今天介绍下多表查询 一.连接查询 含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询 先送上下面所讲用到的sql脚本 h ...
- oracle树结构查询----connect by语法详解
connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with 条件1 connect by 条件2 where 条件3; 例: ...
最新文章
- 相机位姿估计2:[应用]实时位姿估计与三维重建相机姿态
- Google AutoML最新技术解析:AutoML-Zero,从0构建模型
- Rancher搭建NFS服务器
- python 安装 pip,setuptools
- linux作业(第四章练习题)
- java 无法加载资源,JavaScript:无法加载资源:服务器响应状态为404(未找到)
- 在Ubuntu上安装RealPlayer的方法
- ElasticSearch 中的中文分词器该怎么玩?_03
- VC++实现防火墙过滤
- vue 多点触控手势_移动端手势事件(多指操作)
- python属性赋值和赋值_python赋值和地址
- 用友数据库最新会计期间_6千左右预算,2021年Word/Excel/用友/ 金蝶/SQL数据库-财务会计轻薄笔记本推荐...
- 20190922 On Java8 第二十一章 数组
- PADS VX2.8 AD封装库转换PADS封装的方法
- C语言自学-简单的记录
- 数据库管理系统(DBMS)
- mp3外链,文件上传,QQ空间永久背景音乐,mp3连接,
- Spring Bean 配置相关的注意事项
- 球形/PH响应性的树枝状聚合物:树枝状聚酰胺PAMAM/His-PAMAM/DNA 聚酰胺偶联组氨酸/的制备流程
- 阿里试用,女朋友逼着我给她排序