32.3表结构的修改 SQL语言用 ALTER TABLE命令修改基本表,其基本语法为: ALTER TABLE<表名 AD(<新列名〉数据类型〉[完整性约束][,])] DROP<完整性约束名 LMODIFY(<列名〉<数据类型入,1)] 基本表的修改分3种情况: 令使用ADD子句增加新列和新的完整性约束条件 【例3-6】在 student表中增加“籍贯 native_ place”列,数据类型为 字符型 ALTER TABLE Student ADd native place VARCHAR (50) 2021/1/21
第3章 关系数据库标准语言SQL 2021/1/21 3.2.3表结构的修改 SQL语言用ALTER TABLE命令修改基本表,其基本语法为: ALTER TABLE <表名> [ADD (<新列名><数据类型>[完整性约束] [,…])] [DROP <完整性约束名>] [MODIFY (<列名> <数据类型>[,…])]; 基本表的修改分3种情况: ❖ 使用ADD子句增加新列和新的完整性约束条件 【例3-6】在student表中增加“籍贯native_place”列,数据类型为 字符型。 ALTER TABLE student ADD native_place VARCHAR(50); 1 1
令使用DR0P子句删除指定的完整性约束条件 【例3-7】删除 student表学生姓名必须取惟一值的约束条件。 ALTER TABLE Student DROP UNIQUE (name) 令使用 MODIFY子句修改基本表的列定义 【例3-8】将 student表name列的数据类型改为定长字符串型 ALTER TABLE Student MODIFY name char 8)NOT NULL 注意 (1)修改列定义时,要将原来的列级约束条件写上,否则原有的列 级约束会不起作用。 (2)修改列定义时,有可能会破坏已有的数据,应事先作好备份工 (3)SQL未提供删除属性列的语句,只能采取间接的方法。 2021/1/21
第3章 关系数据库标准语言SQL 2021/1/21 ❖ 使用DROP子句删除指定的完整性约束条件 【例3-7】 删除student表学生姓名必须取惟一值的约束条件。 ALTER TABLE student DROP UNIQUE(name); ❖ 使用MODIFY子句修改基本表的列定义 【例3-8】 将student 表name列的数据类型改为定长字符串型。 ALTER TABLE student MODIFY name char(8) NOT NULL; 注意: (1)修改列定义时,要将原来的列级约束条件写上,否则原有的列 级约束会不起作用。 (2)修改列定义时,有可能会破坏已有的数据,应事先作好备份工 作。 (3)SQL未提供删除属性列的语句,只能采取间接的方法
32.4建立索引 ◆索引的概念 索引是建立在列上的一种数据库对象,它对表中的数据提供 逻辑顺序,当在数据库表中搜索某一行时,可以通过使用索引来 找到它的物理位置。索引建立后,什么时候使用索引以及使用哪 个索引(当有多个索引存在时),由DBMS内部根据情况自行决 定,不需要人员干预。索引是动态的,每当数据库表的数据更新 一次,相应的索引也随之更新 2021/1/21
第3章 关系数据库标准语言SQL 2021/1/21 3.2.4建立索引 ❖ 索引的概念 索引是建立在列上的一种数据库对象,它对表中的数据提供 逻辑顺序,当在数据库表中搜索某一行时,可以通过使用索引来 找到它的物理位置。索引建立后,什么时候使用索引以及使用哪 一个索引(当有多个索引存在时),由DBMS内部根据情况自行决 定,不需要人员干预。索引是动态的,每当数据库表的数据更新 一次,相应的索引也随之更新
建立索引 在SQL语言中,建立索引使用 CREATE INDEX命令,其一般语法为: CREATE[ UNIQUE][ CLUSTER] INDEX<索引名> 0N<表名>(<列名>[<次序)[,<列名〉[<次序]][,]); 说明: (1)表名是要建立索引的基本表的名字。 ②2)列名是被建立索引的列的名称。索引可以建立在某一列或多个 (3)次序是指按照该列名的索引值的排列顺序。次序可以取值ASC (升序)或DESC(降序),默认值是ASC。 (4) UNIQUE表示创建的索引是惟一索引,索引列上的数据不能有重 复值 (5) CLUSTER表示要建立的是聚簇索引。聚簇索引是指索引项的顺序 与表中记录的物理顺序一致的索引。 2021/1/21
第3章 关系数据库标准语言SQL 2021/1/21 ❖ 建立索引 在SQL语言中,建立索引使用CREATE INDEX命令,其一般语法为: CREATE [UNIQUE] [CLUSTER] INDEX<索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>]][,…]); 说明: (1)表名是要建立索引的基本表的名字。 (2)列名是被建立索引的列的名称。索引可以建立在某一列或多个 列上。 (3)次序是指按照该列名的索引值的排列顺序。次序可以取值ASC (升序)或DESC(降序),默认值是ASC。 (4)UNIQUE表示创建的索引是惟一索引,索引列上的数据不能有重 复值。 (5)CLUSTER表示要建立的是聚簇索引。聚簇索引是指索引项的顺序 与表中记录的物理顺序一致的索引
【例3-9】为学生表 student和班级信息表 class建立索引。其中, student表按学号id升序建立惟一索引, class表按班级号降序建立 惟一索引。 CREATE UNIQUE INDEX Stuid ind oN Student(id ASC) CREATE UNIQUE INDEX laid ind on class(id DESC) 【例3-10】为表 student在姓名name列上建立一个聚簇索引 CREATE CLUSTER INDEX Stu cluind oN Student (name) 该语句执行后, student表中记录的物理顺序将按照name列值 的升序存放。一个基本表只能建立一个聚簇索引,因为表中的数据 不能以多种方式进行物理排序。可以在经常查询的列上建立聚簇索 引,以提高查询效率。但对于经常更新的列则不宜建立聚簇索引, 因为建立聚簇索引后,更新索引列数据时,要更新表中记录的物理 顺序,开销较大 2021/1/21
第3章 关系数据库标准语言SQL 2021/1/21 【例3-9】为学生表student和班级信息表class建立索引。其中, student表按学号id升序建立惟一索引,class表按班级号降序建立 惟一索引。 CREATE UNIQUE INDEX stuid_ind ON student(id ASC); CREATE UNIQUE INDEX claid_ind ON class(id DESC); 【例3-10】为表student在姓名name列上建立一个聚簇索引。 CREATE CLUSTER INDEX stu_cluind ON student(name); 该语句执行后,student表中记录的物理顺序将按照name列值 的升序存放。一个基本表只能建立一个聚簇索引,因为表中的数据 不能以多种方式进行物理排序。可以在经常查询的列上建立聚簇索 引,以提高查询效率。但对于经常更新的列则不宜建立聚簇索引, 因为建立聚簇索引后,更新索引列数据时,要更新表中记录的物理 顺序,开销较大