《数据库系统原理》课程实验

  • 格式:pdf
  • 大小:858.56 KB
  • 文档页数:37

《数据库系统原理》课程实验

姓名:

班级:

学号:

佛山科学技术学院计算机系

2012年12月目录

一、实验所需表格.....................................................................................3

二、实验内容..............................................................................................3

2.1实验一SQL数据定义................................................................3

2.2实验二SQL数据查询................................................................7

2.3实验三连接、嵌套和集合查询.............................................14

2.4实验四SQL的数据更新..........................................................21

2.5实验五视图的建立和维护.....................................................24

2.6实验六触发器和存储过程...................................................330

三、实验感想...........................................................................................37

参考资料

1.王珊萨师煊.《数据库系统概论》(第四版).高等教育出版社,2006

2.李存斌.数据库应用技术---SQLServer2000简明教程.中国水利水电出版社,

2001一、实验所需表格

学生-课程数据库xskc中用到的三个表文件如下:

学生表:StudentSno(学号)Sname(姓名)Ssex(性别)Sage(年龄)Sdept(所在系)200215121李勇男20CS(计算机科学系)200215122刘晨女19CS(计算机科学系)200215123欧阳原野女18MA(数学系)200215125刘阳光男19IS(信息系)

课程表:CourseCno(课程号)Cname(课程名)Cpno(先修课)Ccredit(学分)1数据库542数学23信息系统144操作系统635数据结构746数据处理27PASCAL64

学生选课表:SCSno(学号)Cno(课程号)Grade(成绩)200215121192200215121285200215121388200215122290200215122380

二、实验内容

2.1实验一SQL数据定义

一、实验目的和要求1.掌握利用SQL查询分析器和企业管理器进行数据库及基本表的定义、删除与

修改;

2.掌握索引的建立与删除的方法。

二、实验内容及结果

(一)建立数据库

通过查询分析器或企业管理器建立学生-课程数据库xskc。

createdatabasexskc

on

(name=xskc_data,

filename='e:\sjksy\xskc_data.mdf')

logon

(name=xskc_log,

filename='e:\sjksy\xskc_log.ldf')

注:先在E:盘上建立一个文件夹(例如:E:\sjksy),数据库文件保存到

自建的文件夹中。

(二)基本表的定义、修改与删除

1.定义基本表

利用查询分析器或企业管理器创建基本表,并输入数据。

【题1-01】建立一个学生表Student,它由学号Sno、姓名Sname、性别

Ssex、年龄Sage、所在系Sdept五个属性组成。要求“学号”为主键,“姓名”

不能为空,“性别”默认值为“男”。

CREATETABLEStudent

(SnoCHAR(9)PRIMARYKEY,

SnameCHAR(20)NOTNULL,

SsexCHAR(2)DEFAULT‘男’,

SageINT,

SdeptCHAR(20)

);

5说明:在MicrosoftSQLServer2000的查询分析器(QueryAnalyzer)中使

用单条SQL语句,其末尾不需要分号“;”作为命令结尾标记。通常,SQLServer

2000对大多数末尾带有分号的SQL命令都能顺利执行,但对少数的SQL命令,

末尾若带分号,则SQLServer2000会给出错误信息提示。比如,若在实验五

的例1的SQL命令末尾加上一个分号“;”,SQLServer2000就会出现“Incorrect

syntaxnear';'”的提示,虽然SQLServer2000实际上已经执行了该命令。

【题1-02】建立课程表Course,它由课程号Cno、课程名Cname、先修课

Cpno、Ccredit学分四个属性组成。要求“课程号”为主键,“课程名”属性不

能为空。

CREATETABLECourse

(CnoCHAR(4)PRIMARYKEY,

CnameCHAR(40)NOTNULL,

CpnoCHAR(4),

CcreditINT);

【题1-03】建立学生选修课表SC,包含学号Sno、课程号Cno、成绩Grade

三个字段。要求建立主键及与student、kc表联接的外键,并创建检查约束

(Grade>=0andGrade<=100)。

CREATETABLESC

(SnoCHAR(9),

CnoCHAR(4),GradeINT,

PRIMARYKEY(Sno,Cno),

FOREIGNKEY(Sno)REFERENCESStudent(Sno),

FOREIGNKEY(Cno)REFERENCESCourse(Cno));

2修改基本表

利用查询分析器修改基本表。

【题1-04】向基本表Student中增加“入学时间”属性列,其属性名为

S_entrance,数据类型为日期型。

ALTERTABLEStudentADDS_entranceDATETIME;

【题1-05】将Student表中Sage(年龄)的数据类型改为SMALLINT型。

ALTERTABLEStudentALTERCOLUMNSageSMALLINT;

【题1-06】增加课程名称必须取唯一值的约束条件。

ALTERTABLECourseADDUNIQUE(Cname);

【题1-07】将Student表的Sdept列允许空值的属性更改为不允许为空。

ALTERTABLEStudentALTERCOLUMNSdeptCHAR(20)NOTNULL;

【题1-08】删除Student表中的S_entrance列。

ALTERTABLEStudentDROPCOLUMNS_entrance;

3删除基本表

【题1-09】删除Student表。DROPTABLEStudent;说明:此表删除后,请立即将其建立起来,以便后面的例子使用。

(三)索引的建立和删除

1建立索引

【题1-10】在基本表Student的Sname(姓名)列上建立一个聚簇索引,而

且Student中的物理记录将按照Sname值的升序存放。其语句为:

CREATECLUSTEREDINDEXStu_SnameONStudent(Sname);

【题1-11】分别为学生-课程数据库中的Student,Course,SC三个表建立

索引。其中Student表按Sno(学号)升序建唯一索引,Course表按Cno(课程号)

升序建唯一索引,SC表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。其

语句为:

CREATEUNIQUEINDEXStu_SnoONStudent(Sno);

CREATEUNIQUEINDEXCou_CnoONCourse(Cno);

CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);2删除索引

【题1-12】删除Student表的Stu_Sname索引。DROPINDEXStudent.Stu_Sname;

2.2实验二SQL数据查询

一、实验目的和要求

1.掌握SQLServer查询分析器的使用方法,加深对SQL查询语句的理解。

2.熟练掌握查询语句的一般格式。

3.熟练掌握数据查询中的排序、分组、统计、计算和集合的操作方法。

二、实验内容及结果

1无条件查询

【题2-01】查询全体学生的详细记录。这是一个无条件的选择查询,其命

令为:

SELECT*/*这里的“*”等价于ALL*/

FROMStudent;

8【题2-02】查询全体学生的姓名(Sname)、学号(Sno)、所在系(Sdept)。这

是一个无条件的投影查询,其命令为:

SELECTSname,Sno,Sdept

FROMStudent;

【题2-03】查询全体学生的学号(Sno)、姓名(Sname)及出生年份。由于

SELECT子句的不仅可以是表中的属性列,也可以是表达式,故

可以查询经过计算的值。其命令为:

SELECTSno,Sname,2012-Sageas‘2012-Sage’

FROMStudent;

【题2-04】查询全体学生的学号、姓名、出生年份和所在系,要求用小写

字母表示所有系名。其命令为:SELECTSno,Sname,2012-Sage'YearofBirth',LOWER(Sdept)Sdept

FROMStudent;

【题2-05】查询选修了课程的学生学号。其命令为:SELECTDISTINCTSno

FROMSC;