什么是 SQL

2024年8月29日 | 阅读 8 分钟

SQL 代表结构化查询语言。SQL 一词的发音是 ess-Kew-all 或 sequel。

SQL 用于操作底层关系数据库,这些数据库通过 SQL 查询,如 Oracle、MySQL、SQL Server、SQLite、PostgreSQL 等。最初,SQL 在 20 世纪 70 年代开发,但数据库管理员并不经常使用 SQL。如今,它也被软件开发人员和数据分析师使用。

SQL 是 ISO(国际标准化组织)和 ANSI(美国国家标准协会)的标准语言。但是,并非所有数据库都支持 SQL。

以下是 SQL 语法中包含的各个部分

1. 关键字

关键字是保留字或非保留字。SQL 保留关键字有 INTO、UPDATE、SELECT、DELETE、DROP、DESC 和 ASC。

2. 标识符

数据库对象,如函数名、模式名、表名等,被命名为标识符。

子句

查询和 SQL 语句的组成部分,如 WHERE、GROUP BY、HAVING 和 ORDER BY,由子句构成。

3. 表达式

SQL 中的 EXPRESSION 产生列或标量值以及数据行。

4. 布尔条件

布尔值 TRUE 或 FALSE 是条件(也称为表达式)的结果。语句或查询的影响受此条件的限制。

5. 查询

SQL 语句根据特定条件检索数据。查询是以下列子句开头的语句,因为它们从底层数据库检索数据。

6. 语句

SQL 语句可能会持久地影响模式和数据,或者控制事务、程序流、连接、会话或诊断。SQL 语句如 INSERT、UPDATE、DROP 和 DELETE 语句,因为它们修改数据库结构或数据。

SQL 标准和专有扩展

1986 年,美国国家标准协会采用了官方 SQL 标准,1987 年,国际标准化组织采用了该标准。几年后,发布了新版本的 SQL,SQL 的最新版本是 2016 版。

国际电工委员会和 ISO 联合开发了 ISO/IEC 9075 SQL 标准。ISO 标准版本通过使用标准组织 ISO/IEC,后跟 ISO 标准号和冒号以及发布年份来指代标准方式。SQL 的最新 ISO 标准是 ISO/IEC 9075:2016

围绕 SQL 构建的开源和专有 RDBMS 已可供组织使用。给出的产品包含在符合 SQL 的数据库服务器中。这些产品包括 Oracle 数据库、Microsoft SQL Server、IBM Db2、SAP HANA、Oracle MySQL、SAP 自适应服务器、开源 PostgreSQL 和 Oracle MySQL。

对于过程编程和一些其他功能,有些 SQL 版本包含标准语言的专有扩展。例如,Transact-SQL 是 Microsoft 提供的一组扩展,另一方面,过程语言是 Oracle 标准的扩展版本。

商业供应商提供专有扩展,通过向消费者提供额外的功能和特性来区分其产品。因此,供应商提供了一些不同版本的扩展 SQL,这些版本之间只有部分兼容。

SQL 的基本用法

  1. 它修改数据库表和索引结构。
  2. 它添加、更新和删除数据行。
  3. 它从关系数据库管理系统内部检索信息子集。这些信息可用于分析应用程序、事务处理以及其他需要与关系数据库通信的应用程序。

关系型数据库与非关系型数据库

SQL 查询语言用于关系型或非关系型数据库,但这为关系型数据库带来了优势。

SQL 的分类

结构化查询语言分为以下几类。重要的一点是,下表中的语句在不同的数据库中可能会有所不同。

结构化查询语言分为以下几类。重要的一点是,下表中的语句在不同的数据库中可能会有所不同。

命令描述
DDL数据定义语言
DML数据操纵语言
TCL事务控制语言
DCL数据控制语言

1. DDL:(数据定义语言)

数据库中的数据结构借助数据定义语言(DDL)语句进行定义,例如表、过程、函数、视图等。

下表列出了 DDL 语句

语句描述
CREATE它将在数据库中创建新对象,如过程、表、函数、视图等。
ALTER它将修改 SQL 中数据库表的结构。
DROP它将删除数据库对象。
重命名它将重命名数据库对象,如序列、视图、表、私有同义词。
TRUNCATE它将删除表中的所有记录。

2. DML:(数据操作语言)

数据库对象内的数据管理由数据操作语言(DML)语句完成。它允许查询和操作现有数据库模式对象。

下表列出了 DML 语句

语句描述
SELECT它将从表中检索行/列。
INSERT它将向表中插入新数据。
UPDATE它将更新表中现有记录。
DELETE它将从表中删除现有记录。
MERGE (合并)它将根据指定条件向表中 INSERT 新行或 UPDATE 现有行。
LOCK TABLE它将以指定模式锁定一个或多个表。根据应用的锁,其他用户将拒绝表访问或仅获得只读访问。

3. TCL:(事务控制语言)

通过执行 DML 语句完成的数据更改由事务控制语言(TCL)语句最终确定。

语句描述
COMMIT在此,事务更改由它永久保存到数据库中。
ROLLBACK它将数据库恢复到上次提交后的原始状态。
SAVEPOINT它创建一个 SAVEPOINT,供 ROLLBACK 命令稍后使用,以撤消到该点的更改。
SET TRANSACTION设置事务属性,例如 READ WRITE 或 READ ONLY 访问。

4. DCL - 数据控制语言

数据控制语言(DCL)语句用于通过向不同用户授予访问数据库的权限来强制执行数据库安全。

语句描述
授予它将授予用户访问数据的权限。
撤销它将收回已授予用户的权限。
注释它将指定数据库表和列的注释。
ANALYZE它将收集表、索引、分区、集群等的统计信息。
AUDIT它将跟踪特定或所有 SQL 语句的出现或在某些特定模式对象上的操作。

5. SCL - 会话控制语言

会话控制语言(SCL)语句用于管理通过执行 DML 语句对数据库所做的更改。SCL 命令根据数据库的不同而有所不同。下表列出了 Oracle 数据库的 SCL 命令。

语句描述
ALTER SESSION修改当前会话的数据库参数。
SET ROLE启用或禁用当前会话的角色。

编写 SQL 语句的规则

SQL 语法是关于如何编写和格式化 SQL 语句的一组规则。它类似于其他编程语言。

SQL 语法的一些组成部分包括以下内容

SQL 语句以 SQL 命令开头,以分号 (;) 结尾,例如

此 SELECT 语句提取名为 consumers 的表中所有内容。

SQL 语句不区分大小写,这意味着它们可以用小写、大写或组合书写。但是,习惯上将 SQL 关键字、命令或控制运算符全部大写,而表/列名小写。

语句中的单词可以使用引号区分大小写,因此以下两个语句产生相同的结果。

这两个语句是不同的

SQL 语句仅以分号终止,这意味着更复杂的语句可以跨多行渲染,如下所示

此命令从 consumers 表中选择 name、telephone 和 age 列的内容。

SQL 语句可以包含程序流控制,这意味着语句可以包含表和行选择。

例如,以下命令选择所有年龄超过 27 岁的消费者的姓名、电话号码和出生日期

大多数 SQL 实现支持在命令行、通过图形用户界面、使用 SQL 程序或通过应用程序编程接口使用其他编程语言访问 SQL 数据库来发出语句。

一些常用的带示例的 SQL 命令

大多数 SQL 命令与运算符一起使用,以修改或缩小语句操作的数据范围。下面提到了一些最常用的带示例的 SQL 命令

1. SQL SELECT

SELECT 命令用于获取表中部分或全部数据。

SELECT 可以与运算符一起使用,以缩小选定数据量

发布者可以使用此示例从名为 catalog 的表中选择 title、writer 和 publication date 列。

2. SQL CREATE

CREATE 命令用于创建新的 SQL 数据库或 SQL 表。大多数 SQL 版本通过创建新目录来创建新数据库,其中表和其他数据库对象存储为文件。

以下 CREATE DATABASE 语句创建了一个名为 Human_Res 的新 SQL 数据库

CREATE TABLE 命令用于在 SQL 中创建表。以下语句创建了一个名为 Workers 的表,该表包含三列:employee_ID、last_name 和 first_name,其中第一列存储整数 (int) 数据,其他列存储 varchar 类型且最多 255 个字符的可变字符数据。

3. SQL DELETE

DELETE 命令从命名表中删除行。在此示例中,所有姓氏为 Swain 的工人记录都将被删除

此语句运行完成后返回删除的行数。

4. SQL INSERT INTO

INSERT INTO 命令用于向数据库表添加记录。以下语句向 Employee 表添加新记录

5. SQL UPDATE

UPDATE 命令用于修改特定表中的行或记录。例如,以下语句通过将姓氏为 Swain 的所有记录更新为 Sahoo

SQL 语句可以使用循环、变量和其他编程语言组件来根据不同条件更新记录。


下一主题SQL 语法