SQL概述
目前,没有一个数据库系统能够支持SQL标准的所有概念和特性
许多软件厂商对SQL基本命令集还进行了不同程度的扩充和修改,有可以支持标准以外的一些功能特性
SQL的特点
SQL集数据查询(data query)、数据操纵(data manipulation)、数据定义(data definition)和数据控制(data control)功能于一体。
- 综合统一
非关系模型(层次模型、网状模型)的数据语言一般都分为:- 模式数据定义语言(Schema Data Definition Language,模式DDL) ——定义模式
- 外模式数据定义语言(Subschema Data Definition Language,外模式DDL或子模式DDL)——定义外模式
- 数据存储有关的描述语言(Data Stroage Description Language, DSDL)——定义内模式
- 数据操纵语言(Data Manipulation Language,DML)——进行数据的存储与处置
SQL集数据定义语言、数据操纵语言、数据控制语言的功能于以梯,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括以下一系列操作要求:
-
定义和修改、删除关系模式,定义和删除视图,插入数据,建立数据库
-
对数据库中的数据进行查询和更新
-
数据库重构和维护
-
数据库安全性、完整性控制,以及事务控制
-
嵌入式SQL和动态SQL定义
-
高度非过程化
-
非关系数据模型的数据操纵语言是面向过程的与i眼,用过程化语言完成某项请求必须指定存取路径
-
SQL进行数据操作时,只要提出“做什么”,而无须知名“怎么做”,因此无需了解存取路径。存取路径的选择以及SQL的操作过程由系统自动完成
-
-
面向集合的操作方式
- 非关系数据模型采用的是面向记录的操作方式,操作对象是一条记录。
- SQL采用的是集合擦制作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合
-
以同一种语法结构提供多种使用方式
-
语言简介,易学易用
学生-课程数据库
使用学生-课程数据库为例
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 |
数据定义
SQL的数据定义语句
操作对象 | 创建 | 删除 | 修改 |
---|---|---|---|
模式 | CREATE SCHEMA | DROP SCHEMA | |
表 | CREATE TABLE | DROP TABLE | ALTER TABLE |
视图 | CREATE VIEW | DROP VIEW | |
索引 | CREATE INDEX | DROP INDEX | ALTER INDEX |
SQL标准不提供修改模式定义和修改视图定义的操作。用户如果想修改这些队形,只能先将它们删除然后重建。
一个关系数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包括多个表、视图和索引等数据库对象
模式的定义与删除
定义模式
代码
CREATE SCHEMA<模式名>AUTHORIZATION<用户名>
如果没有指定模式名,那么模式名隐含为用户名
调用创建模式命令必须有CREATE SCHEMA的权限
目前,在CREATE SCHEMA中可以接受CREATE TABEL,CREATE VIEW和GRANT子句。也就是说用户可以在创建模式的同时在这个模式定义中进一步创建基本表、视图,即
CREATE SCHEMA <模式名> AUTHORIZATION <用户> [<表定义子句>|<视图定义子句>|<授权定义子句>]
删除模式
DROP SCHEMA <模式名><CASCADE|RESTRICT>
其中CASCADE和RESTRICT两者必须选其一。
CASCASDE(级联),表示在删除模式的同时把该模式种所有的数据库对象全部删除;
RESTRICT(限制)表示如果该模式中已经定义了下属的数据库对象(如表、视图等),则拒绝改删除语句的执行,只有当该模式中没有任何下属的对象时才能执行DROP SCHEMA语句
基本表的定义、删除与修改
定义基本表
语法格式
CREATE TABLE<表名>(<列名><数据类型>[列级完整性约束条件]
,<列名><数据类型>[列级完整性约束条件]
……
[,<表级完整性约束条件>])
数据类型
关系模型中有一个很重要的概念是域。每一个属性来自一个域,它的取值必须是域中的值。
SQL中域的概念用数据类型来实现。定义表的各个属性时需要指明其数据类型及长度。
模式与表
每一个基本表都属一某一种模式,一个模式包含多个基本表。当定义基本表时一般有三种方法定义它所属的模式
- 方法一、在表名中明显地给出模式名
- 方法二、在创模式语句中同时创建表
- 方法三、设置所属的模式,这样在创建表时表明中不必给出模式名
当用户创建基本表时若没有指定模式,系统根据搜索路径来确定该对象所属的模式
修改基本表
ALTER TABLE<表名>
[ADD [COLUMN]<新列名><数据类型>[完整性约束]]
[ADD<表级完整性约束>]
[DROP [COLUMN]<列名>[CASCADE|RESTRICT]]
[DROP CONSTRAINT