3.1关系数据库标准语言SQL
- 什么是SQL?
SQL(Structured Query Language,结构化查询语言)是一种专门用来管理和操作关系数据库的编程语言。SQL的简洁性体现在以下几个方面:
简洁的SQL代码示例:
-- 查询所有用户的名字和邮箱
SELECT name, email FROM users;
-- 插入新用户
INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');
-- 更新用户信息
UPDATE users SET email = 'newemail@example.com' WHERE name = 'John Doe';
-- 删除用户
DELETE FROM users WHERE name = 'John Doe';
3.1.1 SQL语言的发展和特点
SQL语言的发展和特点可以从以下几个方面来简洁地概述:
- 发展历史:
- 1970年代:IBM的研究员Donald D. Chamberlin和Raymond F. Boyce开发了SQL的原型,称为SEQUEL(Structured English Query Language)。
- 1980年代:SQL成为关系数据库管理系统的标准语言,随着关系数据库的普及而广泛使用。
- 1986年:美国国家标准协会(ANSI)发布了第一个SQL标准。
- 1992年:国际标准化组织(ISO)和ANSI发布了SQL-92标准,引入了更多的功能,如存储过程、触发器等。
- 1999年:SQL:1999(SQL3)进一步扩展了SQL的功能,包括对对象关系特性的支持。
- 2016年:SQL:2016发布,引入了更多的功能,如JSON支持、递归查询等。
特点:
- 声明式:用户只需声明要执行的操作,不需要指定如何执行。
- 结构化:SQL基于关系模型,数据以表格形式存储,表格之间通过关系连接。
- 标准化:SQL是一种标准化的语言,不同的数据库系统都遵循相同的基本语法。
- 可扩展性:SQL支持多种数据类型和复杂的查询操作。
- 数据操作语言(DML):包括SELECT、INSERT、UPDATE、DELETE等,用于数据的增删改查。
- 数据定义语言(DDL):包括CREATE、ALTER、DROP等,用于定义和管理数据库结构。
- 数据控制语言(DCL):包括GRANT、REVOKE等,用于定义数据的访问权限。
- 事务控制:支持事务处理,确保数据的一致性和完整性。
- 嵌套查询:允许在查询中嵌套其他查询,提高查询的灵活性。
- 连接操作:支持不同类型的连接操作,如内连接、外连接、交叉连接等。
- 聚合函数:提供SUM、AVG、COUNT、MAX、MIN等函数,用于对数据进行聚合计算。
- 索引支持:可以创建索引以提高查询性能。
- 跨平台:SQL可以在多种操作系统和数据库系统上运行。
SQL语言的这些特点使其成为处理关系数据库的强大工具,广泛应用于数据管理和分析领域。
3.1.2 SQL语言的组成
SQL语言主要由以下几个部分组成,每个部分都有其特定的功能和用途:
-
数据定义语言(DDL):用于定义和管理数据库结构,包括:
CREATE
:创建数据库、表、视图、索引等。ALTER
:修改数据库结构,如添加或删除表的列。DROP
:删除数据库对象,如表、视图等。TRUNCATE
:快速删除表中的所有数据。
-
数据操纵语言(DML):用于对数据库中的数据进行操作,包括:
SELECT
:查询数据库中的数据。INSERT
:向表中插入新数据。UPDATE
:更新表中的数据。DELETE
:从表中删除数据。
-
数据控制语言(DCL):用于定义数据库的访问权限和安全策略,包括:
GRANT
:授予用户权限。REVOKE
:撤销用户权限。
-
事务控制语言(TCL):用于管理数据库事务,确保数据的一致性和完整性,包括:
BEGIN
或START TRANSACTION
:开始一个新的事务。COMMIT
:提交事务,使所有更改永久生效。ROLLBACK
:回滚事务,撤销所有未提交的更改。
-
查询语句:SQL的核心,用于从数据库中检索数据,包括:
WHERE
子句:用于过滤记录。JOIN
操作:用于连接多个表。GROUP BY
子句:用于数据分组。ORDER BY
子句:用于排序结果。HAVING
子句:用于过滤分组后的数据。
-
数据类型:定义数据的类型,如整型(INT)、浮点型(FLOAT)、字符型(VARCHAR)等。
-
函数:SQL提供了多种内置函数,用于处理数据,包括:
- 字符串函数:如
CONCAT
,SUBSTRING
,UPPER
,LOWER
等。 - 数值函数:如
ABS
,ROUND
,CEILING
,FLOOR
等。 - 日期和时间函数:如
NOW
,CURDATE
,DATE_ADD
等。 - 聚合函数:如
SUM
,AVG
,COUNT
,MAX
,MIN
等。
- 字符串函数:如
-
子查询:在查询中嵌套另一个查询,可以是嵌套在
SELECT
,FROM
, 或WHERE
子句中。 -
存储过程和函数:允许用户编写可重复使用的代码块,存储在数据库中,可以是:
- 存储过程:一系列SQL语句的集合,可以带参数,用于执行复杂的操作。
- 函数:返回单个值的SQL代码块,通常用于计算或转换数据。
-
触发器:数据库管理系统在特定事件(如INSERT、UPDATE、DELETE)发生时自动执行的SQL代码。
这些组成部分共同构成了SQL语言,使其能够高效地管理和操作关系数据库。