平常大家对于sql可能不是太陌生,经常使用sql来进行数据的存储等操作。今天我就来分享一下最简单的也是最基本的SQL查询类的语法操作。如下图所示,为PG的语法,应是涵盖了了查询的80%的用法。

一、关键字的介绍与样例

  1. 基本查询SQL

    select col1,col2 from TABLE1

  2. ALL(可选)--

    描述:与distinct区分,查询全部值

    样例:select ALL col1,col2 from table1

  3. DISTINCT /DISTINCT on (,)(可选)

    描述:用户返回唯一不同的值,其中DISTINCT为所有字段值不同;若带on字段,则对字段进行判定

    样例:select DISTINCT  col1,col2 from table1

    select DISTINCT  on (col1,col2) col1,col2 from table1

  4. top_option(可选)--

    描述:使用TOP子句限制结果集中返回的行数,如果指定了PERCENT,则是指返回的结果集行的百分比。

    样例:SELECT TOP (9 + (SELECT COUNT(*) FROM IAM.T_IAM_ASSET_TYPE)) PERCENT * FROM IAM.T_IAM_ASSET_TYPE

  5. expr1 AS e1,expr2 AS e2

    描述:查询结果

    样例:select col1 as c1,col2 from TABLE1

  6. select_into_clause

    描述:指定创建一个临时表,使用SELECT:INTO创建临时表是不支持指定ON COMMIT选项,只能创建默认临时表,即事务级临时表。

    样例:select * INTO tab2 from tab1;

  7. FROM

    描述:关键字

    样例:select col1 as c1,col2  from TABLE1

  8. table_reference1,table_reference2

    描述:需要查询的表

    样例:select col1 as c1,col2  from TABLE2 t2

  9. where

    描述:过滤条件的关键字

    样例:select col1,col2 from TABLE1 where col1>3

  10. condition

    描述:过滤条件

    样例:select col1,col2 from TABLE1 where col1>3

  11. GROUP BY expr1,expr2

    描述:分组

    样例:select col1,col2 from TABLE1 GROUP BY col1

  12. 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后面不可以使用聚合

  13. 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;

  14. 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后面的字段按照先后顺序进行排序

  15. FOR UPDATE / FOR UPDATE of  table_name1,tablename2

    描述:要对查询结果所涉及的行加排它锁

    注意:防止死锁

  16. LIMIT COUNT/limit ALL

    描述:limit count表示至多返回count行,limit all返回offset之后的所有行

    样例:SELECT a FROM tab1 ORDER BY a DESC LIMIT 1;

  17. OFFSET offset

    描述:从offet之后开始取值

    样例:SELECT a FROM tab1 ORDER BY a DESC LIMIT 1 OFFSET 1;

二、执行语法

  1. SELECT语句用于数据检索。对于SELECT语句中的各个子句,从逻辑上可以认为系统将按如下的顺序进行处理:

    from>where>group(含聚合)>having>order>select。
    处理FROM子句,得到FROM子句中指定的所有数据源联接的结果;
    处理WHERE子句。对输入根据条件condition进行筛选,返回那些满足条件的行;
    处理GROUP BY子句。将输入按分组属性进行分组;
    处理HAVING子句,过滤掉那些不满足条件的组;
    处理ORDER BY子句,按输入进行排序;
    处理SETOP子句,将输入与另一个查询的结果进行集合操作;
    处理LIMIT和TOP子句,过滤掉那些不在指定范围内的元组;
    处理SELECT子句,对输入进行投影操作,即只保留在SELECT子句指定要返回的列,而舍弃其余的列;
    若语句中包含INTO子句,则将查询结果插入到新创建的表中,否则,将查询结果返回给用户。

  2. FOR UPDATE子句并没有处理在上述的处理流程中,这是由于FOR UPDATE子句并不影响查询结果,而只是告诉执行器要对查询结果所涉及的行加排它锁(在通常情况下加的是共享锁)。

  3. SELECT子句用于指定输出列,一个SELECT语句最多可以输出65535个列。

order by 子查询_SQL查询语法相关推荐

  1. .net函数查询_SQL查询语句总是先执行SELECT?你们都错了!

    很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟别人解释什么是窗口函数,我在网上搜索"是否可以对窗口函数返回的结果进行过滤"这个问题,得出的结论是"窗口函数 ...

  2. java中当前时间查询_SQL 查询当前时间

    Mysql: select date_format(now(),'%Y-%m-%d'); Oracle: Oracle中如何获取系统当前时间进行语句的筛选是SQL语句的常见功能 获取系统当前时间 da ...

  3. knex 单表查询_SQL查询构建器 knex.js

    授权协议: MIT 开发语言: JavaScript 操作系统: 跨平台 软件介绍 knex.js 是一个查询构建器,用于 PostgreSQL, MySQL 和 SQLite3.它设计灵活,轻便和有 ...

  4. java销售额查询_SQL查询每月查找总销售额 - oracle

    我有两个表,产品(pid,pname,quantityinhand,价格,折扣)购买(pid,qty,p_time,total_price)//其中qty是销售单位数 . 我需要找到pname,pda ...

  5. sql 子查询 嵌套查询_SQL子查询– SQL中的嵌套查询

    sql 子查询 嵌套查询 In the real world, there are times when we need a particular set of data but we don't h ...

  6. order by 子查询_视图,子查询,标量子查询,关联子查询

    视图 子查询 标量子查询 关联子查询 如何用SQL解决业务问题 各种函数 1. 视图 视图内存放SQL查询语句,运行时运行该语句.查出的数据为临时数据 创建视图 create view as 视图名称 ...

  7. order by 子查询_【框架】118:mybatis之多表高级查询

    今天是刘小爱自学Java的第118天. 感谢你的观看,谢谢你. 学习内容安排如下: 补充说明知识点:resultMap,sql片段. mybatis中的高级查询,即多表关联查询. 查询主要分为:一对一 ...

  8. mysql数据库入门教程(5):多表操作(连接查询,子查询,分页查询,联合查询)

    前文介绍了单表查询:mysql数据库入门教程(4):查询讲解大全 今天介绍下多表查询 一.连接查询 含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询 先送上下面所讲用到的sql脚本 h ...

  9. oracle树结构查询----connect by语法详解

    connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with 条件1 connect by 条件2 where 条件3; 例: ...

最新文章

  1. 相机位姿估计2:[应用]实时位姿估计与三维重建相机姿态
  2. Google AutoML最新技术解析:AutoML-Zero,从0构建模型
  3. Rancher搭建NFS服务器
  4. python 安装 pip,setuptools
  5. linux作业(第四章练习题)
  6. java 无法加载资源,JavaScript:无法加载资源:服务器响应状态为404(未找到)
  7. 在Ubuntu上安装RealPlayer的方法
  8. ElasticSearch 中的中文分词器该怎么玩?_03
  9. VC++实现防火墙过滤
  10. vue 多点触控手势_移动端手势事件(多指操作)
  11. python属性赋值和赋值_python赋值和地址
  12. 用友数据库最新会计期间_6千左右预算,2021年Word/Excel/用友/ 金蝶/SQL数据库-财务会计轻薄笔记本推荐...
  13. 20190922 On Java8 第二十一章 数组
  14. PADS VX2.8 AD封装库转换PADS封装的方法
  15. C语言自学-简单的记录
  16. 数据库管理系统(DBMS)
  17. mp3外链,文件上传,QQ空间永久背景音乐,mp3连接,
  18. Spring Bean 配置相关的注意事项
  19. 球形/PH响应性的树枝状聚合物:树枝状聚酰胺PAMAM/His-PAMAM/DNA 聚酰胺偶联组氨酸/的制备流程
  20. 阿里试用,女朋友逼着我给她排序

热门文章

  1. 缓存世界中的三大问题及解决方案
  2. 新特性:postgresql的vacuum漫谈
  3. 影响地图:业务敏捷中你需要掌握的可视化力量
  4. 多模态融合算法——Multimodal Compact Bilinear Pooling
  5. 华为云OCR文字识别 免费在线体验!
  6. 云端远程Ubuntu系统进行无桌面Web浏览器自动化测试
  7. 一个好用的小工具 thefuck
  8. 华为云数据库TaurusDB性能挑战赛,50万奖金等你来拿!
  9. ora-28500 ora-02063 mysql_oracle dblink mysql 报错ORA-28500
  10. pycharm不能输入代码或删除代码