数据库 - 索引、基本表创建与删除

修改基本表

ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [ 完整性约束 ] ]
[ DROP <完整性约束名> ]
[ ALTER COLUMN<列名> <数据类型> ];
[例8]向Student表增加“入学时间”列,其数据类型为日期型。
     ALTER TABLE Student ADD S_entrance DATE;
不论基本表中原来是否已有数据,新增加的列一律为空值。 
[例9]将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。
            ALTER TABLE Student ALTER COLUMN Sage INT;
[例10]增加课程名称必须取唯一值的约束条件。
            ALTER TABLE Course ADD UNIQUE(Cname); 

删除基本表

DROP TABLE <表名>[RESTRICT| CASCADE];
RESTRICT:删除表是有限制的。
欲删除的基本表不能被其他表的约束所引用
如果存在依赖该表的对象,则此表不能被删除
CASCADE:删除该表没有限制。
在删除基本表的同时,相关的依赖对象一起删除 
    [例11]  删除Student表
     DROP TABLE  Student  CASCADE ;
基本表定义被删除,数据被删除
表上建立的索引、视图、触发器等一般也将被删除 
[例12]若表上建有视图,选择RESTRICT时表不能删除   
    CREATE VIEW IS_Student      
    AS 
        SELECT Sno,Sname,Sage
        FROM  Student
            WHERE Sdept=‘IS‘DROP TABLE Student RESTRICT;   
          --ERROR: cannot drop table Student because other 
                            objects depend on it
[例12]如果选择CASCADE时可以删除表,视图也自动被删除 
DROP TABLE Student CASCADE;         
 --NOTICE: drop cascades to view IS_Student
SELECT * FROM IS_Student;
--ERROR: relation " IS_Student " does not exist 

索引的建立与删除

建立索引的目的:加快查询速度
谁可以建立索引
DBA 或 表的属主(即建立表的人)
DBMS一般会自动建立以下列上的索引
PRIMARY KEY
UNIQUE
谁 维护索引
DBMS自动完成
使用索引
DBMS自动选择是否使用索引以及使用哪些索引
RDBMS中索引一般采用B+树、HASH索引来实现
B+树索引具有动态平衡的优点
HASH索引具有查找速度快的特点
采用B+树,还是HASH索引 则由具体的RDBMS来决定
索引是关系数据库的内部实现技术,属于内模式的范畴
CREATE INDEX语句定义索引时,可以定义索引是唯一索引、非唯一索引或聚簇索引

语句格式
CREATE [UNIQUE] [CLUSTER] INDEX <索引名> 
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
[例13] CREATE CLUSTER INDEX Stusname 
           ON   Student(Sname);
在Student表的Sname(姓名)列上建立一个聚簇索引
在最经常查询的列上建立聚簇索引以提高查询效率 
一个基本表上最多只能建立一个聚簇索引 
经常更新的列不宜建立聚簇索引 
  [例14]为学生-课程数据库中的Student,Course,SC三个表建  立索引。

CREATE UNIQUE INDEX  Stusno ON Student(Sno);
CREATE UNIQUE INDEX  Coucno ON Course(Cno);
CREATE UNIQUE INDEX  SCno ON SC(Sno ASC,Cno DESC);

      Student表按学号升序建唯一索引
      Course表按课程号升序建唯一索引
      SC表按学号升序和课程号降序建唯一索引
DROP INDEX <索引名>;
删除索引时,系统会从数据字典中删去有关该索引的
描述。
[例15]  删除Student表的Stusname索引
       DROP INDEX Stusname;

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。