• 一个关系数据库管理系统的实例(Instance)中可以建立多个数据库
  • 一个数据库中可以建立多个模式
  • 一个模式下通常包括多个表、视图和索引等数据库对象

image-20250404150206020

在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。

CREATE SCHEMA<模式名>AUTHORIZATION<用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]

例子:

image-20250404154908108

DROP SCHEMA<模式名><CASCADE|RESTRICT>

  • CASCADE(级联)
  • 删除模式的同时把该模式中所有的数据库对象全部删除
  • RESTRICT(限制)
  • 如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。

CREATE TABLE<表名> (<列名><数据类型>[<列级完整性约束条件>] [,<列名><数据类型>[<列级完整性约束条件>]] [,<表级完整性约束条件>]);

  • <表名>:所要定义的基本表的名字
  • <列名>:组成该表的各个属性(列)
  • <列级完整性约束条件>:涉及相应属性列的完整性约束条件
  • <表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件
  • 如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。

例子:

image-20250404155343193

SQL中域的概念用数据类型来实现

ALTER TABLE<表名> [ADD[COLUMN]<新列名><数据类型>[完整性约束]] [ADD<表级完整性约束>] [DROP[COLUMN]<列名>[CASCADE|RESTRICT]] [DROP CONSTRAINT<完整性约束名>[RESTRICT|CASCADE ]] [ALTER COLUMN<列名><数据类型>];

  • <表名>是要修改的基本表
  • ADD子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件
  • DROP COLUMN子句用于删除表中的列
    • 如果指定了CASCADE短语,则自动删除引用了该列的其他对象
    • 如果指定了RESTRICT短语,则如果该列被其他对象引用,关系数据库管理系统将拒绝删除该列
  • DROP CONSTRAINT子句用于删除指定的完整性约束条件
  • ALTER COLUMN子句用于修改原有的列定义,包括修改列名和数据类型

例子:

image-20250404155935422

DROP TABLE<表名>[RESTRICT|CASCADE];

  • RESTRICT:删除表是有限制的。
  • 欲删除的基本表不能被其他表的约束所引用
  • 如果存在依赖该表的对象,则此表不能被删除
  • CASCADE:删除该表没有限制。
    • 在删除基本表的同时,相关的依赖对象一起删除
  • 建立索引的目的:加快查询速度
    • 由数据库管理员或表的拥有者建立
    • 关系数据库管理系统自动完成维护
    • 系数据库管理系统自动使用合适的索引作为存取路径,用户不必也不能显式地选择索引
  • 关系数据库管理系统中常见索引:
    • 顺序文件上的索引
    • B+树索引
    • 散列(hash)索引
    • 位图索引

语句格式

CREATE [UNIQUE] [CLUSTER]INDEX<索引名> ON<表名>(<列名>[<次序>] [,<列名>[<次序>]]);

  • <表名>:要建索引的基本表的名字
  • 索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔
  • <次序>:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC
  • UNIQUE:此索引的每一个索引值只对应唯一的数据记录
  • CLUSTER:表示要建立的索引是聚簇索引

例子:

image-20250404160533655

ALTER INDEX<旧索引名>RENAME TO<新索引名>

  • [例3.14]将SC表的SCno索引名改为SCSno
    • ALTER INDEX SCno RENAME TO SCSno;

DROP INDEX<索引名>;

  • 删除索引时,系统会从数据字典中删去有关该索引的描述。

  • [例3.15]删除Student表的Stusname索引
    • DROP INDEX Stusname;
  • 数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有定义信息:
    • 关系模式定义
    • 视图定义
    • 索引定义
    • 完整性约束定义
    • 各类用户对数据库的操作权限
    • 统计信息等
  • 关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典表中的相应信息。