数据库系统概论——数据定义
数据库系统概论——数据定义
SQL
的数据定义功能可以定义各种数据库的对象,如模式定义、表定义、视图定义、索引定义等
- 操作方式
操作对象 | 创建 | 删除 | 修改 |
---|---|---|---|
模式 | CREATE SCHEMA | DROP SCHEMA | |
表 | CREATE TABLE | DROP TABLE | ALTER TABLE |
视图 | CREATE VIEW | DROP VIEW | |
索引 | CREATE INDEX | DROP INDEX | ALTER INDEX |
- 数据字典
数据字典是关系数据库管理系统内部的一组系统表,记录了数据库中所有对象的定义信息及一些统计信息(关系模式、表、视图、索引、完整性约束条件的定义、各类用户操作权限和统计信息等
),关系数据库执行SQL
数据定义时,实际上就是在更新数据字典表中的相应信息
模式定义
定义模式
定义模式实际上定义了一个命名空间(目录),在这个空间里可以定义该模式包含的数据库对象,如基本表、视图、索引等
例如,为用户USER
定义一个学生-课程模式S-T
CREATE SHEMA "S-T" AUTHORIZATION USER;
删除模式
- 级联
级联(CASCADE
),删除模式的同时把该模式所有的数据库对象全部删除
- 限制
限制(RESTRICT
),若该模式中定义了下属的数据库对象,则拒绝删除,只有该模式没有任何下属对象时可以删除
例如,删除模式SCHEMA0
,其定义的表也会被删除
DROP SCHEMA0 USER CASCADE;
基本表
定义基本表
- 列级完整性约束条件
涉及相应属性列的完整性约束条件
- 表级完整性约束条件
涉及一个或多个属性列的完整性定义条件,若完整性约束条件涉及该表的多个列则必须定义在表级
- 例子
ID为主码,名字取值非空,部门名称为外码,部门名称为表级完整性约束条件
create table instructor(
ID varchar(5) primary key,
name varchar(20) not null,
dept_name varchar(20),
salary numeric(8,2),
foreign key(dept_name) references department(dept_name));
数据类型
关系模型中域
的概念用数据类型实现,定义表属性需要指名其数据类型及长度
模式与表
任一基本表都必须属于某个模式
- 例子
create table "College".department(...);
create table "College".instructor(...);
修改表
- 添加新列或新的列级/表级完整性约束条件
ADD
- 删除表中的列
DROP COLUMN
若指定了CASCADE
,则自动删除引用了该列的其他对象
若指定了RESTRICT
,则会拒绝删除该列若该列被其他对象引用
- 删除指定的完整性约束条件
DROP CONSTRAINT
- 修改原有列定义的列名和数据类型
ALTER COLUMN
例如,将年龄的数据类型改为整型
alter table student alter column age int
索引定义
索引是为了加快查询速度的机制
关系数据库管理系统中常见的索引
-
顺序文件的索引
-
B+树索引
-
哈希索引
-
位图索引
特点
-
B+树索引具有动态平衡的特点
-
Hash索引查找速度快
-
数据库管理员或表的属主可以建立索引
-
索引由关系数据库管理系统维护
-
关系数据库管理系统自动选择合适的索引作为存取路径,用户不必且不能显式地选择索引
建立索引
CREATE [UNIQUE] [CLUSTER] INDEX <index name> ON <table name> (<column name>[<order>],[<column name>[<order>]]
其中UNIQUE
表示此索引值只对应唯一的数据记录
CLUSTER
表示要建立的索引是聚簇索引,按照索引值是否相同来进行聚类存储
修改索引
ALTER INDEX <old index name> rename to <new index name>
删除索引
DROP INDEX <index name>
鸣谢
数据库系统概论(第5版)
数据库系统概念(原书第6版)
最后
- 由于博主水平有限,不免有疏漏之处,欢迎读者随时批评指正,以免造成不必要的误解
数据库系统概论——数据定义
数据库系统概论——数据定义
SQL
的数据定义功能可以定义各种数据库的对象,如模式定义、表定义、视图定义、索引定义等
- 操作方式
操作对象 | 创建 | 删除 | 修改 |
---|---|---|---|
模式 | CREATE SCHEMA | DROP SCHEMA | |
表 | CREATE TABLE | DROP TABLE | ALTER TABLE |
视图 | CREATE VIEW | DROP VIEW | |
索引 | CREATE INDEX | DROP INDEX | ALTER INDEX |
- 数据字典
数据字典是关系数据库管理系统内部的一组系统表,记录了数据库中所有对象的定义信息及一些统计信息(关系模式、表、视图、索引、完整性约束条件的定义、各类用户操作权限和统计信息等
),关系数据库执行SQL
数据定义时,实际上就是在更新数据字典表中的相应信息
模式定义
定义模式
定义模式实际上定义了一个命名空间(目录),在这个空间里可以定义该模式包含的数据库对象,如基本表、视图、索引等
例如,为用户USER
定义一个学生-课程模式S-T
CREATE SHEMA "S-T" AUTHORIZATION USER;
删除模式
- 级联
级联(CASCADE
),删除模式的同时把该模式所有的数据库对象全部删除
- 限制
限制(RESTRICT
),若该模式中定义了下属的数据库对象,则拒绝删除,只有该模式没有任何下属对象时可以删除
例如,删除模式SCHEMA0
,其定义的表也会被删除
DROP SCHEMA0 USER CASCADE;
基本表
定义基本表
- 列级完整性约束条件
涉及相应属性列的完整性约束条件
- 表级完整性约束条件
涉及一个或多个属性列的完整性定义条件,若完整性约束条件涉及该表的多个列则必须定义在表级
- 例子
ID为主码,名字取值非空,部门名称为外码,部门名称为表级完整性约束条件
create table instructor(
ID varchar(5) primary key,
name varchar(20) not null,
dept_name varchar(20),
salary numeric(8,2),
foreign key(dept_name) references department(dept_name));
数据类型
关系模型中域
的概念用数据类型实现,定义表属性需要指名其数据类型及长度
模式与表
任一基本表都必须属于某个模式
- 例子
create table "College".department(...);
create table "College".instructor(...);
修改表
- 添加新列或新的列级/表级完整性约束条件
ADD
- 删除表中的列
DROP COLUMN
若指定了CASCADE
,则自动删除引用了该列的其他对象
若指定了RESTRICT
,则会拒绝删除该列若该列被其他对象引用
- 删除指定的完整性约束条件
DROP CONSTRAINT
- 修改原有列定义的列名和数据类型
ALTER COLUMN
例如,将年龄的数据类型改为整型
alter table student alter column age int
索引定义
索引是为了加快查询速度的机制
关系数据库管理系统中常见的索引
-
顺序文件的索引
-
B+树索引
-
哈希索引
-
位图索引
特点
-
B+树索引具有动态平衡的特点
-
Hash索引查找速度快
-
数据库管理员或表的属主可以建立索引
-
索引由关系数据库管理系统维护
-
关系数据库管理系统自动选择合适的索引作为存取路径,用户不必且不能显式地选择索引
建立索引
CREATE [UNIQUE] [CLUSTER] INDEX <index name> ON <table name> (<column name>[<order>],[<column name>[<order>]]
其中UNIQUE
表示此索引值只对应唯一的数据记录
CLUSTER
表示要建立的索引是聚簇索引,按照索引值是否相同来进行聚类存储
修改索引
ALTER INDEX <old index name> rename to <new index name>
删除索引
DROP INDEX <index name>
鸣谢
数据库系统概论(第5版)
数据库系统概念(原书第6版)
最后
- 由于博主水平有限,不免有疏漏之处,欢迎读者随时批评指正,以免造成不必要的误解
发布评论