关系数据库标准语言 SQL
结构化查询语言( Structured Query Language,SQL )是关系数据库的标准语言。
1、SQL 概述
(1.1)SQL 的特点
SQL 集数据查询(data query)、数据操纵(data manipulation)、数据定义(data definition)和数据控制(data control)功能于一体,其主要特点如下:
(1)综合统一
集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。可以独立完成数据库生命周期中的全部活动:
- 定义和修改、删除关系模式,定义和删除视图,插入数据,建立数据库;
- 对数据库中的数据进行查询和更新;
- 数据库重构和维护;
- 数据库安全性、完整性控制,以及事务控制;
- 嵌入式 SQL 和动态 SQL 定义。
(2)高度非过程化
非关系数据模型的数据操纵语言 “ 面向过程 ”,必须指定存取路径;而 SQL 只要提出 “ 做什么 ”,无须了解存取路径。存取路径的选择以及 SQL 的操作过程由系统自动完成。
(3)面向集合的操作方式
非关系数据模型采用面向记录的操作方式,操作对象是一条记录;而 SQL 采用集合操作方式,操作对象、查找结果可以是元组的集合,并且一次插入、删除、更新操作的对象可以是元组的集合。
(4)以同一种语法结构提供多种使用方式
SQL 是独立的语言,能够独立地用于联机交互的使用方式;SQL 又是嵌入式语言,能够嵌入到高级语言( 例如 C,C++,Java )程序中,供程序员设计程序时使用。
(5)语言简洁,易学易用
SQL 功能极强,完成核心功能只用了 9 个动词。如下表:
SQL 功能 | 动词 |
数据查询 | SELECT |
数据定义 | CREATE,DROP,ALTER |
数据操纵 | INSERT,UPDATE,DELETE |
数据控制 | GRANT,REVOKE |
(1.2)SQL 的基本概念
支持 SQL 的关系数据库管理系统同样支持关系数据库三级模式结构。如图所示:

概念说明:
(1)基本表
本身独立存在的表;SQL 中一个关系就对应一个基本表;一个(或多个)基本表对应一个存储文件;一个表可以带若干索引。
(2)存储文件
逻辑结构组成了关系数据库的内模式,物理结构对用户是隐蔽的。
(3)视图
从一个或几个基本表导出的表。数据库中只存放视图的定义而不存放视图对应的数据;视图是一个虚表,用户可以在视图上再定义视图。
2、学生 - 课程数据库
示例数据库:
学生 - 课程模式 S - T:
学生表:Student ( Sno,Sname,Ssex,Sage,Sdept )
课程表:Course ( Cno,Cname,Cpno,Ccredit )
学生选课表:SC ( Sno,Cno,Grade )
分别如下表:
Student 学号
Sno
姓名
Sname
性别
Ssex
年龄
Sage
所在系
Sdept
201215121 李勇 男 20 CS 201215122 刘晨 女 19 CS 201215123 王敏 女 18 MA 201215125 张立 男 19 IS
Course 课程号
Cno
课程名
Cname
先行课
Cpno
学分
Ccredit
1 数据库 5 4 2 数学 2 3 信息系统 1 4 4 操作系统 6 3 5 数据结构 7 4 6 数据处理 2 7 PASCAL 语言 6 4
SC 学号
Sno
课程号
Cno
成绩
Grade
201215121 1 92 201215121 2 85 201215121 3 88 201215122 2 90 201215122 3 80
3、数据定义
SQL 的数据定义功能:定义各种数据库的 “ 对象 ”。有模式定义、表定义、视图定义以及索引定义。如下表所示:
操作对象 | 操作方式 | ||
创建 | 删除 | 修改 | |
模式 | CREATE SCHEMA | DROP SCHEMA | |
表 | CREATE TABLE | DROP TABLE | ALETER TABLE |
视图 | CREATE VIEW | DROP VIEW | |
索引 | CREATE INDEX | DROP INDEX | ALTER INDEX |
现代关系数据库管理系统提供了一个层次化的数据库对象命名机制:一个数据库中可以建立多个模式,一个模式下通常包括多个表、视图和索引等数据库对象。
数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有对象的定义信息以及一些统计信息:
- 关系模式、表、视图、索引的定义;
- 完整性约束的定义;
- 各类用户对数据库的操作权限;
- 统计信息等。
关系数据库管理系统在执行 SQL 的数据定义语句时,实际上就是在更新数据字典中的相应信息。
(3.1)模式定义
(1)定义模式
定义模式实际上定义了一个命名空间(或者说目录)。在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。
在 CREATE SCHEMA 中可以接受 CREATE TABLE,CREATE VIEW 和 GRANT 子句。格式为:
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
[ <表定义子句> | <视图定义子句> | <授权定义子句> ]
【例1】为用户 WANG 定义一个学生-课程模式 S - T。
CREATE SCHEMA “S-T” AUTHORIZATION WANG;
【例2】CREATE SCHEMA AUTHORIZATION WANG;
该语句没有指定 <模式名>,<模式名> 隐含为 <用户名>。
【例3】为用户 ZHANG 创建了一个模式 TEST,并且在其中定义一个表 TAB1。
CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TAB1 ( COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3),
COL5 DECIMAL(5,2)
);
(2)删除模式
删除模式:
DROP SCHEMA <模式名> <CASCADE | RESTRICT>
CASCADE(级联):
删除模式的同时把该模式中所有的数据库对象全部删除
RESTRICT(限制):
如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。仅当该模式中没有任何下属的对象时才能执行。
【例4】DROP SCHEMA ZHANG CASCADE;
删除模式 ZHANG;同时该模式下定义的表 TAB1 也被删除。·
(3.2)表定义
基本表定义: