3.1SQL概述
- 结构化查询语言(SQL)是关系数据库的标准语言。
SQL的特点:
- 综合统一
- SQL集数据定义语言、数据操纵语言、数据控制语言的功能于一体,可以独立完成数据库生命周期中的全部活动。
- 关系模型中数据结构的单一性带来了数据操作符的统一性,克服了非关系系统由于信息表示方式的多样性带来的操作复杂性。
- 高度非过程化
- 用SQL进行数据操作时,无需了解存取路径,存取路径的选择以及SQL的操作过程由系统自动完成。
- 面向集合的操作方式
- 非关系数据模型采用面向记录的操作方式,操作对象是一条记录。
- SQL采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,一次插入、删除、更新操作的对象也可以是元组的集合。
- 以同一种语法结构提供多种使用方式
- SQL既能独立地用于联机交互的使用方式,又能够嵌入到高级语言程序中。
- 语言简洁,易学易用
- SQL的动词:
SQL的基本概念:
- 支持SQL的关系数据库的外模式包括若干视图(view)和部分基本表(base table),模式包括若干基本表,内模式包括若干存储文件。
- 可以用SQL对基本表和视图进行查询或其他操作,基本表和视图都是关系。
- 基本表是本身独立存在的表,在关系数据库管理系统中一个关系对应一个基本表。
- 一个或多个基本表对应一个存储文件,一个表可以带若干索引,索引也存放在存储文件中。
- 存储文件的逻辑结构组成了关系数据库的内模式。
- 存储文件的物理结构对最终用户是隐蔽的。
- 视图是从一个或几个基本表导出的表,数据库中只存放视图的定义不存放视图对应的数据,这些数据存放在到处视图的基本表中,因此视图是一个虚表,可以在视图上再定义视图。
3.3数据定义
- SQL的数据定义功能包括模式定义、表定义、视图和索引的定义:
- SQL不提供修改模式定义和修改视图定义的操作。
- 一个关系数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包括多个表、视图和索引等数据库对象。
定义模式:
- 模式定义语句:CREATE SCHEMA<模式名>AUTHORIZATION<用户名>;
- 如果没有指定<模式名>,那么<模式名>隐含为<用户名>。
- 创建模式的用户必须拥有数据库管理员权限,或者获得了管理员授予的CREATE SCHEMA的权限。
- 定义模式即定义一个命名空间,在这个空间里可以进一步定义该模式包含的数据库对象,如基本表、视图、索引等
- 可以在创建模式的同时在这个模式定义中进一步创建基本表、视图,定义授权。
删除模式:
- 删除模式语句:DROP SCHEMA<模式名><CASCADE|RESTRICT>;
- CASCADE 和 RESTRICT 必须二选一。
- CASCADE(级联):在删除模式的同时把该模式中所有的数据库对象全部删除,
- RESTRICT(限制):如果该模式已经定义了下属的数据库对象,则拒绝该删除语句的执行。只有当该模式中没有任何下属的对象时才能执行该语句。
定义基本表:
- 定义基本表语句:
CREATE TABLE<表名>(<列名><数据类型>[列级完整性约束条件],
<列名><数据类型>[列级完整性约束条件],
……
<表级完整性约束条件>
);
- 如果完整性约束条件涉及多个属性列,那么必须定义在表级上。
- 与表有关的完整性约束条件存入系统的数据字典中。
完整性约束:
- 列级完整性约束:
- 标记某属性为主码:Sno CHAR(9) PRIMARY KEY
- 标记某属性取唯一值:Sname CHAR(20) UNIQUE
- 标记某属性不能取空值:Cname CHAR(40) NOT NULL
- 表级完整性约束:
- 标记外码:FOREIGN KEY(Cpno)REFERENCES Course(Cno) //Cpno是外码,被参照表是Course,被参照列是Cno
- 主码由两个属性构成时标记主码:PRIMARY KEY(Sno,Cno)
数据类型:
- 定义表的各种属性时需要指明其数据类型及长度。
- 常用数据类型: