数据库实验报告模版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据库系统原理》课程实验
姓名:
班级:
学号:
佛山科学技术学院计算机系
2012年12月
目录
一.实验需用表格 (3)
二.实验内容 (4)
2.1 SQL数据定义 (4)
2.2实验二 SQL数据查询 (6)
2.3实验三连接、嵌套和集合查询 (10)
2.4实验四 SQL的数据更新 (15)
2.5实验五视图的定义和维护 (17)
2.6实验六触发器和存储过程 (22)
三.实验感想 (26)
一.实验需用表格
学生-课程数据库xskc中用到的三个表文件如下:
学生表:Student
课程表:Course
学生选课表:SC
二.实验内容
2.1 SQL数据定义
一、实验目的和要求
1.掌握利用SQL查询分析器和企业管理器进行数据库及基本表的定义、删除与修改;
2.掌握索引的建立与删除的方法。
二、实验内容与步骤
(一)建立数据库
通过企业管理器或查询分析器建立学生-课程数据库xskc。
create database xskc
on
( name=xskc_data,
filename='e:\sjksy\xskc_data.mdf')
log on
( name=xskc_log,
filename='e:\sjksy\xskc_log.ldf')
注:先在E:盘上建立一个文件夹(例如:E:\sjksy),数据库文件保存到自建的文件夹中。
(二)基本表的定义、修改与删除
1.定义基本表
利用查询分析器或企业管理器创建基本表,并输入数据。
【题1-01】建立一个学生表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。要求“学号”为主键,“姓名”不能为空,“性别”默认值为“男”。
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) NOT NULL,
Ssex CHAR(2) DEFAULT ‘男’,
Sage INT,
Sdept CHAR(20)
);
说明:在Microsoft SQL Server 2000的查询分析器(Query Analyzer)中使用单条SQL语句,其末尾不需要分号“;”作为命令结尾标记。通常,SQL Server 2000对大多数末尾带有分号的SQL命令都能顺利执行,但对少数的SQL命令,末尾若带分号,则SQL Server 2000会给出错误信息提示。比如,若在实验五的例1的SQL命令末尾加上一个分号“;”,SQL Server 2000就会出现“Incorrect syntax near ';'”的提示,虽然SQL Server 2000实际上已经执行了该命令。
【题1-02】建立课程表Course,它由课程号Cno、课程名Cname、先修课Cpno、Ccredit学分四个属性组成。要求“课程号”为主键,“课程名”属性不能为空。
CREATE TABLE Course
(Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40) NOT NULL ,
Cpno CHAR(4),
Ccredit INT
);
【题1-03】建立学生选修课表SC,包含学号Sno、课程号Cno、成绩Grade三个字段。要求建立主键及与student、kc表联接的外键,并创建检查约束(Grade>=0 and Grade<=100)。
CREATE TABLE SC
( Sno CHAR(9),
Cno CHAR(4),
Grade INT,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY(Sno) REFERENCES Student(Sno),
FOREIGN KEY(Cno) REFERENCES Course(Cno)
);
2 修改基本表
利用查询分析器或企业管理器修改基本表。
【题1-04】向基本表Student中增加“入学时间”属性列,其属性名为S_entrance,数据类型为日期型。
ALTER TABLE Student ADD S_entrance DATETIME;
【题1-05】将Student表中Sage(年龄)的数据类型改为SMALLINT型。
ALTER TABLE Student ALTER COLUMN Sage SMALLINT;
【题1-06】增加课程名称必须取唯一值的约束条件。
ALTER TABLE Course ADD UNIQUE(Cname);
【题1-07】将Student表的Sdept列允许空值的属性更改为不允许为空。
ALTER TABLE Student ALTER COLUMN Sdept CHAR(20) NOT NULL;
【题1-08】删除Student表中的S_entrance列。
ALTER TABLE Student DROP COLUMN S_entrance;
3 删除基本表
【题1-09】删除Student表。
DROP TABLE Student;
说明:此表删除后,请立即将其建立起来,以便后面的例子使用。
(三)索引的建立和删除
1 建立索引
【题1-10】在基本表Student的Sname(姓名)列上建立一个聚簇索引,而且Student中的物理记录将按照Sname值的升序存放。其语句为:
CREATE CLUSTERED INDEX Stu_Sname ON Student(Sname);
【题1-11】分别为学生-课程数据库中的Student,Course,SC三个表建立索引。其中Student表按Sno(学号)升序建唯一索引,Course表按Cno(课程号)升序建唯一索引,SC表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。其语句为:
CREATE UNIQUE INDEX Stu_Sno ON Student(Sno);
CREATE UNIQUE INDEX Cou_Cno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC, Cno DESC);
2 删除索引
【题1-12】删除Student表的Stu_Sname索引。
DROP INDEX Student.Stu_Sname;