数据定义
SQL的数据定义语言DLL包括定义模式、域、关系、视图、索引等
本节介绍如何定义 基本表、 索引和 模式
4.3.1 SQL的数据类型
4.3.2 模式的定义和删除 (尚未学习)
DBMS为关系的命名提供了一个三级层次结构。
目录->模式->关系或视图
SQL环境中的目录不能重名,同一目录下模式不能重名,同一模式下的关系不能重名
当用户连接到数据库时,系统为该连接建立一个默认的目录和模式
符号约定 见课本p73
4.3.3 定义、修改、删除基本表
SQL的表有三类:基本表、视图表、导出表
基本表包括持久基本表、全局临时表、局部临时表
视图表是命名的导出表,用创建视图定义
导出表通过查询表达式求值,直接或间接从一个或多个表中导出
本书中,“基本表”主要用于表示持久基本表,“表”泛指基本表和导出表(包括视图)
1. 创建基本表
CREATE TABLE 表名(
列名 数据类型 [DEFAULT 缺省值] [列级约束定义],
列名 数据类型 [DEFAULT 缺省值] [列级约束定义],
…,
[表级约束定义], …, [表级约束定义]);
1) 列约束定义
列级约束定义形式:
[CONSTRAINT 约束名] 列约束
常用列约束:
NOT NULL 不允许该列取空值;不加NOT NULL 限制时,该列可以取空值
PRIMARY KEY:指明该列是主码,其值非空唯一
UINQUE :该列上的值必须唯一,说明该列为候选码
CHECK(条件):指明该列上的值必须满足的条件,其中条件是一个布尔表达式
2) 表约束定义
一个表可以包含零个或多个表约束定义
表级约束定义形式:
[CONSTRAINT 约束名] 表约束
PRIMARY KEY(A1,A2,…,AK):说明属性列A1,A2,…,AK构成关系的主码
UNIQUE(A1,A2,…,AK):说明属性列A1,A2,…,AK上的值必须唯一,说明属性列A1,A2,…,AK构成候选码
CHECK(条件):该表上的一个完整性约束,条件是一个涉及该表一个或多个列的布尔表达式
FOREIGN KEY(A1,A2,…,AK) REFERENCES 外表名 (外表名主码):该表上属性列A1,A2,…,AK是该表的外码,且与外表X中的主码相对应
注意:主码是唯一且不能取空的,不用再说明UNIQUE和NOT NULL
2. 修改基本表
ALTER TABLE 表名
ADD 列名 数据类型
ALTER 列名 SET DEFAULT 缺省值
ALTER 列名 DROP DEFAULT
DROP 列名 CASCADE/RESTRICT
ADD 表约束定义
DROP CONSTRAINT 约束名 CASCADE/RESTRICT
3. 删除基本表
DROP TABLE 表名 CASCADE/RESTRICT