实 验1
实验项目名称 基本表的定义、删除与修改(2课时,验证) 实验主要内容及方法 数据表的定义、删除及修改 实验要求:
(1) 了解并掌握SSMS的使用; (2) 掌握基本表的定义、删除与修改。
实验目的:熟练掌握基本表的定义、删除与修改,为后继学习作准备。
实验设备:装有SQL SERVER 2005的电脑 实验步骤:
(1) 启动SSMS;
(2) 选择SQL SERVER后,按确认; (3) 选择数据库; (4) 验证如下例题: 表3.3 关系Students
Sno S01 S02 S03 S04 S05 S06 Sname 王建平 刘华 范林军 李伟 黄河 长江 Ssex Sage Sdept 男 21 自动化 女 19 自动化 女 18 计算机 男 数学 19 男 数学 18 男 数学 20 Cno C01 C02 C03 C04 C05 C06 C07 表3.4 关系Courses Cname 英语 数据结构 数据库 DB_设计 C++ 网络原理 操作系统 Pre_Cno Credits C05 C02 C03 C07 C05 4 2 2 3 3 3 3 表3.5 关系Reports Sno S01 S01 S02 S02 S02 S03 S03 S04 Cno C01 C03 C01 C02 C03 C01 C02 C03 Grade 92 84 90 94 82 72 90 75
6
1 定义基本表
例3.1 建立表3.3所示的学生表Students,每个属性名的意义为Sno-学号、Sname-姓名、Ssex-性别、Sage-年龄、Sdept-所在系。这里要求Sno和Sname不能为空值,且取值唯一。 CREATE TABLE Students /*列级完整性约束条件*/
(Sno CHAR(5) NOT NULL, /* Sno不能为空值*/
Sname CHAR(20) NOT NULL, /*Sname不能为空值*/
Ssex CHAR(2), Sage INT, Sdept CHAR(15),
CONSTRAINT un_Sno UNIQUE(Sno), /* Sno取值唯一的约束*/
CONSTRAINT un_Sname UNIQUE(Sname)); /* Sname取值唯一的约束*/
例3.1-1 建立表3.4所示的课程表Courses,其属性名意义分别为Cno-课程号, Cname-课程名, Pre_Cno-先修课程号, Credits-学分。
CREATE TABLE Courses
(Cno CHAR(5) NOT NULL, /* Cno不
7
能为空值*/ Cname
CHAR(20)
NOT
NULL,
/*Cname不能为空值*/ Pre_Cno CHAR(5), Credits INT, CONSTRAINT /*Cno取值唯一的约束*/
例3.1-2 建立表3.5所示的成绩表Reports。其中的属性名意义分别为Sno-学号,Cno-课程号和Grade-考试成绩。 CREATE TABLE Reports
( Sno CHAR(5) NOT NULL, /* Sno不能为空值*/
Cno CHAR(5) NOT NULL, /* Cno不能为空值*/ Grade INT, CONSTRAINT
Sno_Cno
UNIQUE(Sno,Cno));
un_Cno
UNIQUE(Cno));
/*Sno+Cno取值唯一的约束*/ 2 修改基本表
例3.2 向基本表Students中增加“入学时间”属性列,其属性名为Sentrancedate,数据类型为DATETIME型。 ALTER TABLE Students ADD Sentrancedate DATETIME;
8
例3.3 将Sage(年龄)的数据类型改为SMALLINT型。 ALTER TABLE Students ALTER COLUMN Sage SMALLINT;
例3.4 删除Sname(姓名)必须取唯一值的约束。 ALTER TABLE Students DROP CONSTRAINT un_Sname; 注意:SQL Server 2000 增加了删除属性的命令。比如,删除属性列Sentrancedate的命令为:
ALTER TABLE Students DROP COLUMN Sentrancedate; 说明:⑴ 为了保证后面例子能够顺利运行,请大家一定将属性列Sentrancedate从Students表中删除。
⑵ 为了调试SQL语句方便,这里没有在表Reports中增加参照完整性约束,甚至没有定义主键。在后面的实验中如需要要把这些约束全部加上。 3 删除基本表
例3.5 删除Students表。 DROP TABLE Students;
说明:此表删除后,请立即用例3.1将其建立起来,以便后面的例子使用。 4 向表中添加元组
例3.6 将一个学生元组(S01,王建平,男,21,计算机)添加到基本表Students中。
9
INSERT INTO Students
VALUES ('S01','王建平','男',21,'自动化');
说明:⑴ 请读者用这个命令将其余5个学生的元组也添加到基本表Students中。
⑵ 向Courses表插入元组(‘C01’,’英语’,’’,4)的命令
为:
INSERT INTO Courses
VALUES ('C01','英语','',4);
请大家将其余6门课程的信息插入Courses表
中。
例3.7 将学习成绩的元组(‘S01’, ’C01’)添加到基本表Reports中。 INSERT
INTO Reports(Sno, Cno) VALUES (‘S01’,’C01’);
说明:请大家用这个命令将其余7个选课元组也添加到基本表Reports中.
10