例:建立学生选课表 CREATE TABLE SC SNO CHAR(9), CNO CHAR(4) GRADE SMALLINT PRIMARY KEY(SNO, CNO), /主码由两个属性构成,必须作为表级完整性进行定义 FOREIGN KEY (SNO) REFERENCES S(SNO), /表级完整性约束条件,SNo是外码,被参照表是S* FOREIGN KEY(CNO REFERENCES C(CNO) /*表级完整性约束条件,CNo是外码,被参照表是c
例:建立学生选课表 CREATE TABLE SC (SNO CHAR(9), CNO CHAR(4), GRADE SMALLINT, PRIMARY KEY(SNO,CNO), /* 主码由两个属性构成,必须作为表级完整性进行定义 */ FOREIGN KEY(SNO) REFERENCES S(SNO), /* 表级完整性约束条件,SNO是外码,被参照表是S */ FOREIGN KEY(CNO) REFERENCES C(CNO) /* 表级完整性约束条件,CNO是外码,被参照表是C */ );
修改基本表 ※SQL语言用 ALTER TABLE语句修改基本结构表,格式为: ALTER TABLE<表名> [ADD<新列名><数据类型>[完整性约束] [DROP<完整性约束名] [ ALTER COLUMN<列名><数据类型习]; ※其中<表名>是要修改的基本表。 冷ADD子句用于增加新列和新的完整性约束条件; 冷DROP子句用于删除指定的完整性约束条件; 冷 ALTER COLUMN子句用于修改原有的列定义。包括修改列名和 数据类型 ※例如,向S表增加“入学时间”列,其数据类型为日期型。 ALTER TABLE SADD S ENTRANCE DATE 令不论基本表中原来是否已有数据,新增加的列一律为空值
修改基本表 ※ SQL语言用ALTER TABLE语句修改基本结构表,格式为: ALTER TABLE <表名> [ADD <新列名> <数据类型> [完整性约束]] [DROP <完整性约束名>] [ALTER COLUMN <列名> <数据类型>]; ※ 其中<表名>是要修改的基本表。 ❖ ADD子句用于增加新列和新的完整性约束条件; ❖ DROP子句用于删除指定的完整性约束条件; ❖ ALTER COLUMN子句用于修改原有的列定义。包括修改列名和 数据类型。 ※ 例如,向S表增加“入学时间”列,其数据类型为日期型。 ❖ ALTER TABLE S ADD S_ENTRANCE DATE; ❖ 不论基本表中原来是否已有数据,新增加的列一律为空值
删除基本表 ※用 DROP TABLE语句删除基本表。格式为: ※ DROP TABLE<表名> TRESTRICT| CASCADE]; 冷若选择 RESTRICT:则该表的删除是有限制条件的。欲删除 的基本表不能被其他表的约束所引用(如 CHECK FOREIGN KEY等约束),不能有视图,不能有触发器 ( trigger),不能有存储过程或函数等。如果存在这些依 赖该表的对象,则此表不能被删除。 冷若选择 CASCADE:则该表的删除没有限制条件。在删除基 本表的同时,相关的依赖对象,例如视图,都将被一起删 除。 冷缺省情况是 RESTR|cT。 ※例48删除S表。 DROP TABLE S CASCADE
删除基本表 ※用DROP TABLE语句删除基本表。格式为: ※DROP TABLE <表名> [RESTRICT | CASCADE]; ❖ 若选择RESTRICT:则该表的删除是有限制条件的。欲删除 的基本表不能被其他表的约束所引用(如CHECK, FOREIGN KEY等约束),不能有视图,不能有触发器 (trigger),不能有存储过程或函数等。如果存在这些依 赖该表的对象,则此表不能被删除。 ❖ 若选择CASCADE:则该表的删除没有限制条件。在删除基 本表的同时,相关的依赖对象,例如视图,都将被一起删 除。 ❖ 缺省情况是RESTRICT。 ※例4.8 删除S表。 DROP TABLE S CASCADE;
建立索引 ※建立索引使用 CREATEINDEX语句,格式为: CREATE[ UNIQUEJICLUSTER]NDEX<索引名> ON<表名>(<列名><次序[,<列名>【次序>]); 冷其中,<表名>是要建索引的基本表的名字。索引可以建立在该表 的一列或多列上,各列名之间用逗号分隔。每个<列名>后面还可 以用<次序>指定索引值的排列次序,可选ASc(升序)或DESc (降序),缺省值为ASC。 冷 UNIQUE表明此索引的每一个索引值只对应唯一的数据记录。 CLUSTER表示要建立的索引是聚簇索引。所谓聚簇索引是指索 引项的顺序与表中记录的物理顺序一致的索引组织。 ※例: CREATE CLUSTER| NDEX STUSNAME ON S( SNAME 将会在S表的 SNAME(姓名)列上建立一个聚簇索引,而且S表 中的记录将按照 SNAME值的升序存放
建立索引 ※ 建立索引使用CREATE INDEX语句,格式为: CREATE [UNIQUE][CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>]]…); ❖ 其中,<表名>是要建索引的基本表的名字。索引可以建立在该表 的一列或多列上,各列名之间用逗号分隔。每个<列名>后面还可 以用<次序>指定索引值的排列次序,可选ASC(升序)或DESC (降序),缺省值为ASC。 ❖ UNIQUE表明此索引的每一个索引值只对应唯一的数据记录。 CLUSTER表示要建立的索引是聚簇索引。所谓聚簇索引是指索 引项的顺序与表中记录的物理顺序一致的索引组织。 ※ 例: CREATE CLUSTER INDEX STUSNAME ON S(SNAME); 将会在S表的SNAME(姓名)列上建立一个聚簇索引,而且S表 中的记录将按照SNAME值的升序存放
删除索引 ※索引一经建立,就由系统使用和维护它,不需用户 干预。建立索引是为了减少查询操作的时间,但如 果数据增删改频繁,系统会花费许多时间来维护索 引,从而降低了查询效率。这时,可以删除一些不 必要的索引。 ※删除索引使用 DROP INDEX语句,其一般格式为 DRoP|NDEX<索引名>; ※例:删除S表的 STUSNAME索引。 DROP INDEX STUSNAME. ※删除索引时,系统会同时从数据字典中删去有关该 索引的描述
删除索引 ※ 索引一经建立,就由系统使用和维护它,不需用户 干预。建立索引是为了减少查询操作的时间,但如 果数据增删改频繁,系统会花费许多时间来维护索 引,从而降低了查询效率。这时,可以删除一些不 必要的索引。 ※ 删除索引使用DROP INDEX语句,其一般格式为 DROP INDEX <索引名>; ※ 例: 删除S表的STUSNAME索引。 DROP INDEX STUSNAME; ※ 删除索引时,系统会同时从数据字典中删去有关该 索引的描述