数据库系统概论——数据定义

数据库系统概论——数据定义

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;

基本表

定义基本表

  • 列级完整性约束条件

涉及相应属性列的完整性约束条件

  • 表级完整性约束条件

涉及一个或多个属性列的完整性定义条件,若完整性约束条件涉及该表的多个列则必须定义在表级

扫描二维码关注公众号,回复: 11652900 查看本文章
  • 例子

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版)

最后

  • 由于博主水平有限,不免有疏漏之处,欢迎读者随时批评指正,以免造成不必要的误解

猜你喜欢

转载自blog.csdn.net/qq_44486439/article/details/107902784