SQL语法是什么

子凡 问答 2020-09-28 01:05:12 阅读(...)

SQL编程语言的语法由ISO / IEC SC 32定义和维护,作为ISO / IEC 9075的一部分。该标准不是免费提供的。 尽管存在标准,但SQL代码在不经过调整的情况下不能在不同的数据库系统之间完全移植。

SQL 编程语言的语法由 ISO / IEC SC 32 定义和维护,作为 ISO / IEC 9075 的一部分。该标准不是免费提供的。 尽管存在标准,但 SQL 代码在不经过调整的情况下不能在不同的数据库系统之间完全移植。

SQL

语言元素

SQL 语言细分为几个语言元素,包括:

1、子句,是语句和查询的组成部分。

2、表达式,可以生成标量值,也可以生成由列和行数据组成的表。

3、谓词,指定可以评估为 SQL 三值逻辑(3VL)(真/假/未知)或布尔真值的条件,用于限制语句和查询的效果,或用于更改程序流。

4、查询,根据特定条件检索数据。这是 SQL 的一个重要元素。

语句可能对架构和数据产生持久影响,或者可能控制事务,程序流,连接,会话或诊断。

SQL 语句还包括分号(“;”)语句终止符。虽然并非每个平台都需要,但它被定义为 SQL 语法的标准部分。在 SQL 语句和查询中通常会忽略无关紧要的空格,从而可以更轻松地格式化 SQL 代码以提高可读性。

操作

有时建议或实施其他运营商,例如天际线运营商(仅用于查找那些不比其他运营商“更糟糕”的记录)。

SQL 具有 case / when / then / else / end 表达式,它是在 SQL-92 中引入的。 在其最常见的形式中,在 SQL 标准中称为“搜索案例”:

SQL 测试条件按顺序出现在源中。 如果源未指定 ELSE 表达式,则 SQL 默认为 ELSE NULL。 SQL 标准镜像 switch 语句中的缩写语法 – 称为“简单大小写”:

此语法使用隐式相等比较,通常需要注意与 NULL 进行比较。特殊 CASE 表达式有两种简短形式:COALESCE 和 NULLIF。

COALESCE 表达式返回通过从左到右工作找到的第一个非 NULL 操作数的值,如果所有操作数都等于 NULL,则返回 NULL。

相当于:

NULLIF 表达式有两个操作数,如果操作数具有相同的值,则返回 NULL,否则它具有第一个操作数的值。

相当于:

查询

SQL 中最常见的操作(查询)使用声明性 SELECT 语句。 SELECT 从一个或多个表或表达式中检索数据。标准 SELECT 语句对数据库没有持久影响。 SELECT 的一些非标准实现可以具有持久性效果,例如某些数据库中提供的 SELECT INTO 语法。

查询允许用户描述所需的数据,让数据库管理系统(DBMS)执行计划,优化和执行生成所选结果所必需的物理操作。

查询包括要包含在最终结果中的列的列表,通常紧跟在 SELECT 关键字之后。星号(“*”)可用于指定查询应返回查询表的所有列。 SELECT 是 SQL 中最复杂的语句,可选的关键字和子句包括:

FROM 子句,指示从中检索数据的表。 FROM 子句可以包含可选的 JOIN 子子句,以指定连接表的规则。

WHERE 子句包含比较谓词,它限制查询返回的行。 WHERE 子句从结果集中删除比较谓词未计算为 True 的所有行。

GROUP BY 子句将具有公共值的行投影到较小的行集中。 GROUP BY 通常与 SQL 聚合函数结合使用,或者从结果集中消除重复的行。 WHERE 子句在 GROUP BY 子句之前应用。

HAVING 子句包含用于过滤 GROUP BY 子句产生的行的谓词。因为它作用于 GROUP BY 子句的结果,所以可以在 HAVING 子句谓词中使用聚合函数。

ORDER BY 子句标识用于对结果数据进行排序的列,以及对它们进行排序的方向(升序或降序)。如果没有 ORDER BY 子句,则 SQL 查询返回的行的顺序是未定义的。

DISTINCT 关键字消除了重复数据。

LIMIT 子句指定要返回的记录数。请注意,所有 SQL 数据库都不支持此子句。

查询的子句具有特定的执行顺序,由右侧的数字表示。它如下:

SELECT <columns> ………………………………….. 5

FROM <table> ………………………………………. 1

WHERE <行上的谓词> ……………………… 2

GROUP BY <columns> …………………………………… 3

HAVING<关于群体的谓词> ………………….. 4

ORDER BY <columns> ………………………………….. 6

以下 SELECT 查询示例返回昂贵的书籍列表。该查询从 Book 表中检索 price 列包含大于 100.00 的值的所有行。结果按标题按升序排序。选择列表中的星号(*)表示 Book 表的所有列都应包含在结果集中。

子查询

可以嵌套查询,以便可以通过关系运算符或聚合函数在另一个查询中使用一个查询的结果。 嵌套查询也称为子查询。 虽然连接和其他表操作在许多情况下提供计算上优越的(即更快的)替代方案,但子查询的使用在执行中引入了可能有用或必要的层次结构。 在以下示例中,聚合函数 AVG 接收子查询的结果作为输入:

子查询可以使用外部查询中的值,在这种情况下,它称为相关子查询。

自 1999 年以来,SQL 标准允许子查询的 WITH 子句,即命名子查询,通常称为公共表表达式(也称为子查询因子分解)。 CTE 也可以通过引用自己来递归;结果机制允许树或图遍历(当表示为关系时),更一般地说是固定点计算。

派生表

派生表是在 FROM 子句中引用 SQL 子查询的用法。实质上,派生表是可以从中选择或连接的子查询。派生表功能允许用户将子查询作为表引用。内联视图也称为内联视图或子选择。

在以下示例中,SQL 语句涉及从初始“Book”表到派生表“sales”的连接。此派生表使用 ISBN 连接到“Book”表来捕获相关的图书销售信息。因此,派生表提供的结果集包含其他列(销售的商品数量和销售图书的公司):

数据操作

数据操作语言(DML)是用于添加,更新和删除数据的 SQL 的子集:

INSERT 将行(正式元组)添加到现有表中,例如:

UPDATE 修改一组现有的表行,例如:

DELETE 从表中删除现有行,例如:

MERGE 用于组合多个表的数据。它结合了 INSERT 和 UPDATE 元素。它在 SQL:2003 标准中定义;在此之前,一些数据库通过不同的语法提供了类似的功能,有时称为“upsert”。

收藏 0个人收藏
走进科技生活方式

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..

相关推荐

  • PLSQL

    PLSQL与SQL有什么区别

    sql语言是一门独立的语言,所有数据库都支持sql语言操作数据。pl/sql是oracle在sql的基础上,加入了代码的一些特性的扩展语言,以块为最小运行单元。其他数据库就不支持pl/sql了。
  • HTML5

    HTML5是H5吗

    H5是HTML5的缩写,是一种网页技术标准,包含网页展示、网页交互动画等等。 H5动画指的就是利用 HTML5 技术做出来的网页,行业内统称为网页。
  • WAF

    WAF可以防御哪些攻击

    Web 应用防火墙可以防止 Web 应用免受各种常见攻击,比如 SQL 注入,跨站脚本漏洞(XSS)等。WAF 也能够监测并过滤掉某些可能让应用遭受 DOS(拒绝服务)攻击的流量。WAF 会在 HTTP 流量抵达应用服务器之前检测可疑访问。
  • PolarDB 数据库

    PolarDB是什么

    PolarDB 是阿里云自主研发的新一代关系型云原生数据库,既拥有分布式设计的低成本优势,又具有集中式的易用性。PolarDB 采用存储计算分离、软硬一体化设计,满足大规模应用场景需求。
  • PolarDB

    PolarDB-X是什么

    PolarDB-X 是由阿里巴巴自主研发的云原生分布式数据库,是一款基于云架构理念,并同时支持在线事务处理与在线分析处理的融合型分布式数据库产品,具备金融级数据高可用、分布式水平扩展、混合负载、低成本存储和极致弹性等能力。
  • ZNBase 分布式数据库

    ZNBase是什么

    ZNBase 是浪潮打造的一款分布式数据库产品,具备强一致、高可用分布式架构、分布式水平扩展、高性能、企业级安全等特性,自研的原生分布式存储引擎支持完整 ACID,支持 PostgreSQL 协议访问。