一、 实验目的
熟悉SQL的数据定义语言,能够熟练地使用SQL语句来创建和更改基本表,创建和取消索引。
二、实验内容1
-
问题描述
使用CREATE语句创建基本表。
更改基本表的定义,增加列,删除列,修改列的数据类型。
创建表的升降序索引。
取消表、表的索引或表的约束。 -
数据库设计
用create语句创建基本表,一般形式如下:
CREATE TABLE tbl_name(create_definition,…) [TYPE =table_type]
create_definition: col_name type [NOT NULL | NULL]
[DEFAULT default_value] [AUTO_INCREMENT][PRIMARY KEY]
ALTER语句更改表的语句的一般格式如下:
ALTER TABLE<表名>
[ADD<新列名><数据类型>[完整性约束]]
[DROP CONSTRAINT[完整性约束名]]
[ALTER COLUMN<列名><数据类型>]
取消表的语句格式:
DROP TABLE <表名>
创建索引的语句格式:
CREATE[UNIQUE][CLUSTERED]<索引名>
On<表名> -
程序实现
使用SQL语句创建关系数据库表:
CREATE TABLE PERSON
(P# CHAR(8) NOT NULL UNIQUE,
Pname CHAR(20) NOT NULL,
Page INT,
PRIMARY KEY(P#),CHECK(Page>18))
CREATE TABLE ROOM
(R# CHAR(8) NOT NULL UNIQUE,
Rname CHAR(20),
Rarea FLOAT(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
)
更改表PERSON,增加属性Ptype,取消Page大于18的约束。把表ROOM中的属性Rname的数据类型改为长度40:
ALTER TABLE PERSON ADD Rtype CHAR(10)
ALTER TABLE PERSON DROP CONSTRAINT CK__PERSON__Page__0425A276
ALTER TABLE ROOM ALTER COLUMN Rname CHAR(40)
删除表Room的一个属性Rarea:
ALTER TABLE ROOM DROP COLUMN Rarea
取消表PR:
DROP TABLE PR
为Room表创建按R#降序排列的索引:
CREATE INDEX XCNO ON ROOM(R# DESC)
为PERSON表创建按P#升序排列的索引:
CREATE INDEX XSNO ON PERSON(P#)
创建表PERSON按P#升序排列的唯一性索引:
CREATE UNIQUE INDEX RNUA ON PERSON(Pname ASC)
取消PERSON表P#升序索引:
DROP INDEX PERSON.XSNO
三、实验内容2
-
问题描述
(1)创建数据库表CUSTOMERS(CID,CNAME,CITY,DISCNT),数据库AGENTS(AID,ANAME,CITY,PERCENT),数据库表PRODUCTS(PID,PNAME)。其中CID,AID,PID分别是各表的主键,具有唯一性约束。
(2)创建数据库表ORDERS(ORDNA,MONTH,CID,AID,PID,QTY,DOLLARS),其中,ORDNA是主键,具有唯一性约束,CID,AID,PID是外键,分别参照的是表CUSTOMERS的CID字段,表AGENTS的AID字段,表PRODUCTS的PID字段。
(3)增加数据库表PRODUCTS的三个属性列:CITY,QUANTITY,PRICE。
(4)为以上4个建立了各自的按主键增序排列的索引。
(5)取消步骤四建立的4个索引。 -
数据库设计
用create语句创建基本表,一般形式如下:
CREATE TABLE tbl_name(create_definition,…) [TYPE =table_type]
create_definition: col_name type [NOT NULL | NULL]
[DEFAULT default_value] [AUTO_INCREMENT][PRIMARY KEY]
ALTER语句更改表的语句的一般格式如下:
ALTER TABLE<表名>
[ADD<新列名><数据类型>[完整性约束]]
[DROP CONSTRAINT[完整性约束名]]
[ALTER COLUMN<列名><数据类型>]
取消表的语句格式:
DROP TABLE <表名>
创建索引的语句格式:
CREATE[UNIQUE][CLUSTERED]<索引名>
On<表名> -
程序实现
创建数据库表CUSTOMERS(CID,CNAME,CITY,DISCNT),数据库AGENTS(AID,ANAME,CITY,PERCENT),数据库表PRODUCTS(PID,PNAME)。其中CID,AID,PID分别是各表的主键,具有唯一性约束。
创建数据库表ORDER(ORDNA,MONTH,CID,AID,PID,QTY,DOLLARS),其中,ORDNA是主键,具有唯一性约束,CID,AID,PID是外键,分别参照的是表CUSTOMERS的CID字段,表AGENTS的AID字段,表PRODUCTS的PID字段。
CREATE TABLE CUSTOMERS
(CID CHAR(20) NOT NULL UNIQUE,
AID CHAR(20),
PID CHAR(20),
DISCNT INT,
PRIMARY KEY (CID)
);
CREATE TABLE AGENTS
(AID CHAR(20) NOT NULL UNIQUE,
ANAME CHAR(20),
CITY CHAR(20),
“PERCENT” FLOAT,
PRIMARY KEY (AID)
);
CREATE TABLE PRODUCTS
(PID CHAR(20) NOT NULL UNIQUE,
PNAME CHAR(20),
PRIMARY KEY (PID)
);
CREATE TABLE ORDERS
(ORDNA CHAR(20) NOT NULL UNIQUE,
“MONTH” INT,
CID CHAR(20),
AID CHAR(20),
PID CHAR(20),
QTY INT,
DOLLARS FLOAT,
PRIMARY KEY (CID,AID,PID),
FOREIGN KEY (CID) REFERENCES CUSTOMERS(CID),
FOREIGN KEY (AID) REFERENCES AGENTS(AID),
FOREIGN KEY (PID) REFERENCES PRODUCTS(PID)
);
增加数据库表PRODUCTS的三个属性列:CITY,QUANTITY,PRICE。
ALTER TABLE PRODUCTS ADD CITY CHAR(20);
ALTER TABLE PRODUCTS ADD QUANTITY CHAR(20);
ALTER TABLE PRODUCTS ADD PRICE CHAR(20);
为以上4个建立了各自的按主键增序排列的索引:
CREATE INDEX XCON ON CUSTOMERS(CID ASC);
CREATE INDEX XAON ON AGENTS(AID ASC);
CREATE INDEX XPON ON PRODUCTS(PID ASC);
CREATE INDEX XOON ON ORDERS(ORDNA ASC);
取消步骤四建立的4个索引:
DROP INDEX CUSTOMERS.XCON;
DROP INDEX AGENTS.XAON;
DROP INDEX PRODUCTS.XPON;
DROP INDEX ORDERS.XOON;