实验内容
本节的主要内容是 :
- 使用 CREATE 语句创建基本表 ;
- 更改基本表的定义 ,增加列 ,删除列 ,修改列的数据类型 .
- 创建表的升降序索引 .
- 取消表,表的索引或表的约束.
实验步骤 :
(1) 使用SQL 语句创建关系数据库表: 人员表 PERSON(P# ,Pname ,Page ,Pgender)
房间表 ROOM (R#,Rname , Rarea)
P-R (P#,R# ,Date)
其中P# 是表PERSON 的主建,具有唯一性约束 ; 大于18
R# 是 ROOM 的主建 ,具有唯一性约束
P-R 表中 P#,R#是外键 ;
CREATE TABLE PERSON
(P# CHAR(8) NOT NULL UNIQUE ,
Pname CHAR(20) NOT NULL UNIQUE,
Page INT,
Pgender CHAR(8),
PRIMARY KEY(P#),CHECK(Page>18))
CREATE TABLE ROOM
(R# CHAR(8) NOT NULL UNIQUE ,
Rname CHAR(20),
Rarea CHAR(10),
PRIMARY KEY(R#))
CREATE TABLE PR
(P# CHAR(8) NOT NULL UNIQUE ,
R# CHAR(8) NOT NULL UNIQUE ,
Date Datetime,
PRIMARY KEY(P#,R#),
FOREIGN KEY(P#) REFERENCES PERSON ON DELETE CASCADE, /*外键 */
FOREIGN KEY(R#) REFERENCES ROOM ON DELETE CASCADE
)
(2)更改表 PERSON , 增加属性Ptype (类型是 CHAR ,长度 10 ) , 取消 Page 大于18的约束. 把表 ROOM 中的属性Rname 的数据类型长度改成 30 ;
ALTER TABLE PERSON ADD Rtype CHAR(10) /* 增加Rtype属性*/
ALTER TABLE PERSON DROP CK__PERSON__Page__51BA1E3A
ALTER TABLE ROOM ALTER COLUMN Rname CHAR(30)
这里在 取消page 大于18 这个约束的时候 , 由于我在定义约束时没有指定约束的名称,但是数据库会为这个约束起一个名称 .不同的时候创建名称可能不同. 要找到这个名字 在系统表约束里面找到 如上图 .
修改完 :
(3) 删除表 ROOM 的一个属性 Rarea .
ALTER TABLE ROOM DROP COLUMN Rarea
(4) 取消表 PR
DROP TABLE PR
(5) 为ROOM 表创建按 R# 降序排列的索引 ,
CREATE INDEX XCNO ON ROOM(R# DESC) /* 索引的名称 XCNO DESC 是降序 ASC是升序*/
在本例子中, 创建的索引名称为XCNO , 排列方式之一ASC(升序), DESC(降序) 两种 ,缺省为 ASC .
(6) 为PERSON 表创建按 P# 升序排列的索引
CREATE INDEX XSNO ON PERSON(P#)
(7) 创建表 Person 按P# 升序的唯一性索引
CREATE UNIQUE INDEX RNUA ON PERSON(Pname ASC)
缺省值为CLUSTER
(8) 取消PERSON 表P# 升序索引
DROP INDEX PERSON.XSNO