网络数据库实验指导书.docx
- 文档编号:6562751
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:60
- 大小:1.21MB
网络数据库实验指导书.docx
《网络数据库实验指导书.docx》由会员分享,可在线阅读,更多相关《网络数据库实验指导书.docx(60页珍藏版)》请在冰豆网上搜索。
网络数据库实验指导书
《网络数据库实验》指导书
计算机科学与技术专业
佛山科学技术学院计算机系
2015年3月
目录
实验一数据库和数据库表操作……………………………………………………………1
实验二数据库单表查询……………………………………………………………………5
实验三数据库多表连接查询………………………………………………………………9
实验四数据库嵌套查询和组合查询…………………………………………………………11
实验五数据的更新…………………………………………………………………………17
实验六T-SQL语言…………………………………………………………………………19
实验七视图与索引………………………………………………………………24
实验八存储过程的实现……………………………………………………………27
实验九触发器的实现……………………………………………………………32
实验十数据库的安全性………………………………………………………………36
实验十一备份、还原与导入、导出………………………………………………………37
实验十二数据库应用系统设计……………………………………………………………38
参考资料
1.王珊萨师煊.《数据库系统概论》(第四版).北京:
高等教育出版社,2006
2.方风波.网络数据库项目教程.北京:
电子工业出版社,2012
3.吴德胜.SQLServer入门经典.北京:
机械工业出版社,2013
公共邮箱:
fosucomputer@
邮箱密码:
computer
学生-课程数据库xscj中用到的四个表文件如下:
1.学生表(Student表)
Student表(学生表)结构
字段名称
数据类型
长度
空值
说明
Sno
char
10
否
学号
Sname
varchar
8
否
姓名
Ssex
char
2
√
性别
Sbirth
smalldatetime
√
出生日期
Sage
smallint
√
年龄
Dno
char
2
否
系代号
Student表(学生表)记录
Sno
Sname
Ssex
Sbirth
Sage
Dno
备注
2012314101
李勇
男
1995-09-13
20
DX01
12计算机1班
2012314102
刘晨
女
1996-07-28
19
DX01
12计算机1班
2012314201
欧阳原野
男
1998-11-02
17
DX01
12计算机2班
2012314202
周小李
女
1997-01-15
18
DX01
12计算机2班
2012394101
郑涛
男
1996-05-14
19
DX01
12网络1班
2012394201
吴小莉
女
1997-11-05
18
DX01
12网络2班
2012374120
王敏
女
1999-07-16
18
DX02
12电子信息工程1班
2012214230
欧大海
男
1996-04-04
19
LX01
12数学与应用数学2班
2.课程表(Course表)
Course表(课程表)结构
字段名称
数据类型
长度
空值
说明
Cno
char
6
否
课程编号
Cname
varchar
20
√
课程名称
Cpno
char
6
√
先修课
Ccredit
smallint
√
学分
Course表(课程表)记录
Cno
Cname
Cpno
Ccredit
1
数据库
5
4
2
数学
NULL
2
3
信息系统
1
4
4
操作系统
6
3
5
数据结构
7
4
6
数据处理
NULL
2
7
PASCAL语言
6
4
8
DB_Design
1
2
3.成绩表(SC表)
SC表(成绩表)结构
字段名称
数据类型
长度
空值
说明
Sno
char
10
否
学号
Cno
char
6
否
课程编号
Grade
smallint
√
成绩
SC表(成绩表)记录
Sno
Cno
Grade
2012314101
1
92
2012314101
2
59
2012314101
3
88
2012314102
1
78
2012314102
2
95
2012314102
3
80
2012314201
1
90
2012314202
1
80
2012394101
1
69
2012394201
1
88
2012374120
1
45
2012214230
1
100
2012314101
4
NULL
4.系表(Department表)
Department表(系表)结构
字段名称
数据类型
长度
空值
说明
Dno
char
2
否
系代号
Dname
varchar
20
√
系名称
College
varchar
20
√
所属学院
Department表(系表)结构
Dno
Dname
College
DX01
计算机系
电信学院
DX02
电子系
电信学院
LX01
数学系
理学院
LX02
物理系
理学院
实验一数据库和数据库表操作
一、实验目的和要求
1.掌握利用查询窗口和对象资源管理器进行数据库及基本表的定义、删除与修改;
2.掌握索引的建立与删除的方法。
二、实验内容与步骤
(一)建立数据库
【SY1-01】通过企业管理器或查询分析器建立学生-课程数据库xskc。
CREATEDATABASExscj
ONPRIMARY
(NAME='xscj_data',FILENAME='E:
\sjk2015\xscj.mdf')
LOGON
(NAME='xscj_log',FILENAME='E:
\sjk2015\xscj.ldf')
【注】先在E:
盘上建立一个文件夹(例如:
E:
\sjk2015),数据库文件保存到自建的文件夹中。
(二)基本表的定义、修改与删除
1.定义基本表
利用查询窗口和对象资源管理器创建基本表,并输入数据。
【SY1-02】建立一个学生表Student,它由学号Sno、姓名Sname、性别Ssex、出生日期Sbirth、年龄Sage、系代号Dno五个属性组成。
要求“学号”为主键,“姓名”不能为空,“性别”默认值为“男”。
CREATETABLEStudent
(Snochar(10)PRIMARYKEY,
SnameVarchar(8)NOTNULL,
Ssexchar
(2)DEFAULT'男'CHECK(Ssexin('男','女')),
SbirthsmalldatetimeNULL,
Sageintnull,
Dnochar(4)NULL
)
【SY1-03】建立课程表Course,它由课程号Cno、课程名Cname、先修课Cpno、Ccredit学分四个属性组成。
要求“课程号”为主键,“课程名”属性不能为空。
CREATETABLECourse
(Cnochar(6)PRIMARYKEY,
Cnamevarchar(20)NOTNULL,
Cpnochar(6)Null,
Ccreditsmallint
)
【SY1-04】建立学生成绩表SC,包含学号Sno、课程号Cno、成绩Grade三个字段。
要求建立主键及与student、sc表联接的外键,并创建检查约束(Grade>=0andGrade<=100)。
CREATETABLESC
(Snochar(10)NOTNULL,
Cnochar(6)NOTNULL,
GradeintCHECK(GradeBETWEEN0AND100),
PRIMARYKEY(Sno,Cno),
FOREIGNKEY(Sno)REFERENCESStudent(Sno),
FOREIGNKEY(Cno)REFERENCESCourse(Cno)
)
【SY1-05】建立系表Department,包含系代号Dno、系名称Dname、所属学院College三个字段。
CREATETABLEDepartment
(Dnochar(4)PRIMARYKEY,
DnameVarchar(20)NOTNULL,
CollegeVarchar(20)
)
2修改基本表
利用查询窗口和对象资源管理器修改基本表。
【SY1-06】向基本表Student中增加“入学时间”属性列,其属性名为S_entrance,数据类型为日期型。
ALTERTABLEStudentADDS_entranceDATETIME;
【SY1-07】将Student表中Sage(年龄)的数据类型改为SMALLINT型。
ALTERTABLEStudentALTERCOLUMNSageSMALLINT;
【SY1-08】增加课程名称必须取唯一值的约束条件。
ALTERTABLECourseADDUNIQUE(Cname);
【SY1-09】将Student表的Dno列允许空值的属性更改为不允许为空。
ALTERTABLEStudentALTERCOLUMNDnoCHAR(4)NOTNULL;
【SY1-10】删除Student表中的S_entrance列。
ALTERTABLEStudentDROPCOLUMNS_entrance;
3删除基本表
【SY1-11】删除Student表。
DROPTABLEStudent;
说明:
此表删除后,请立即将其建立起来,以便后面的例子使用。
(三)索引的建立和删除
1建立索引
【SY1-12】在基本表Student的Sname(姓名)列上建立一个聚簇索引,而且Student中的物理记录将按照Sname值的升序存放。
其语句为:
CREATECLUSTEREDINDEXStu_SnameONStudent(Sname);
【SY1-13】分别为学生-课程数据库中的Student,Course,SC三个表建立索引。
其中Student表按Sno(学号)升序建唯一索引,Course表按Cno(课程号)升序建唯一索引,SC表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。
其语句为:
CREATEUNIQUEINDEXStu_SnoONStudent(Sno);
CREATEUNIQUEINDEXCou_CnoONCourse(Cno);
CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);
2删除索引
【SY1-14】删除Student表的Stu_Sname索引。
DROPINDEXStudent.Stu_Sname;
建立数据库文件
CREATEDATABASExscj
ONPRIMARY
(NAME='xscj_data',FILENAME='E:
\sjk2015\xscj.mdf')
LOGON
(NAME='xscj_log',FILENAME='E:
\sjk2015\xscj.ldf')
建立表结构
USExscj
CREATETABLEStudent
(Snochar(10)PRIMARYKEY,
SnameVarchar(8)NOTNULL,
Ssexchar
(2)DEFAULT'男'CHECK(Ssexin('男','女')),
SbirthsmalldatetimeNULL,
Sageintnull,
Dnochar(4)NOTNULL
)
CREATETABLEDepartment
(Dnochar(4)PRIMARYKEY,
DnameVarchar(20)NOTNULL,
CollegeVarchar(20)
)
CREATETABLECourse
(Cnochar(6)PRIMARYKEY,
Cnamevarchar(20)NOTNULL,
Cpnochar(6)Null,
Ccreditsmallint
)
CREATETABLESC
(Snochar(10)NOTNULL,
Cnochar(6)NOTNULL,
GradeintCHECK(GradeBETWEEN0AND100),
PRIMARYKEY(Sno,Cno),
FOREIGNKEY(Sno)REFERENCESStudent(Sno),
FOREIGNKEY(Cno)REFERENCESCourse(Cno)
)
输入表记录
INSERTINTOStudentVALUES('2012314101','李勇','男','1995-09-13',null,'DX01')
INSERTINTOStudentVALUES('2012314102','刘晨','女','1996-07-28',null,'DX01')
INSERTINTOStudentVALUES('2012314201','欧阳原野','男','1998-11-02',null,'DX01')
INSERTINTOStudentVALUES('2012314202','周小李','女','1997-01-15',null,'DX01')
INSERTINTOStudentVALUES('2012394101','郑涛','男','1996-05-14',null,'DX01')
INSERTINTOStudentVALUES('2012394201','吴小莉','女','1997-11-05',null,'DX01')
INSERTINTOStudentVALUES('2012374120','王敏','女','1999-07-16',null,'DX02')
INSERTINTOStudentVALUES('2012214230','欧大海','男','1996-04-04',null,'LX01')
UPDATEStudentSETSage=year(getdate())-year(Sbirth)
INSERTINTODepartmentVALUES('DX01','计算机系','电信学院')
INSERTINTODepartmentVALUES('DX02','电子系','电信学院')
INSERTINTODepartmentVALUES('LX01','数学系','理学院')
INSERTINTODepartmentVALUES('LX02','物理系','理学院')
INSERTINTOCourseVALUES('1','数据库','5',4)
INSERTINTOCourseVALUES('2','数学',NULL,2)
INSERTINTOCourseVALUES('3','信息系统','1',4)
INSERTINTOCourseVALUES('4','操作系统','6',3)
INSERTINTOCourseVALUES('5','数据结构','7',4)
INSERTINTOCourseVALUES('6','数据处理',NULL,2)
INSERTINTOCourseVALUES('7','C语言',6,4)
INSERTINTOCourseVALUES('8','DB_Design',1,2)
INSERTINTOSCVALUES('2012314101','1',92)
INSERTINTOSCVALUES('2012314101','2',59)
INSERTINTOSCVALUES('2012314101','3',88)
INSERTINTOSCVALUES('2012314102','1',78)
INSERTINTOSCVALUES('2012314102','2',90)
INSERTINTOSCVALUES('2012314102','3',80)
INSERTINTOSCVALUES('2012314201','1',90)
INSERTINTOSCVALUES('2012314202','1',80)
INSERTINTOSCVALUES('2012394101','1',85)
INSERTINTOSCVALUES('2012394201','1',88)
INSERTINTOSCVALUES('2012374120','1',45)
INSERTINTOSCVALUES('2012214230','1',100)
INSERTINTOSCVALUES('2012314101','4',NULL)
实验二数据库单表查询
1无条件查询
【SY2-01】查询全体学生的详细信息。
这是一个无条件的选择查询,其命令为:
SELECT*FROMStudent
或SELECTSno,Sname,Ssex,Sbirth,DnoFROMStudent
【SY2-02】查询全体学生的姓名(Sname)、学号(Sno)。
这是一个无条件的投影查询,其命令为:
SELECTSname,SnoFROMStudent;
【SY2-03】查询全体学生的学号(Sno)、姓名(Sname)及年龄。
由于SELECT子句的<目标列表达式>不仅可以是表中的属性列,也可以是表达式,故可以查询经过计算的值。
其命令为:
SELECTSno,Sname,year(getdate())-year(Sbirth)as'年龄'FROMStudent;
【SY2-04】查询全体学生的学号、姓名、年龄和所在系,要求用小写字母表示所有系代号。
SELECTSno,Sname,year(getdate())-year(Sbirth)as'年龄',LOWER(Dno)Dno
FROMStudent;
【SY2-05】查询选修了课程的学生学号。
SELECTDISTINCTSno
FROMSC;
2条件查询
【SY2-06】查询计算机系(DX01)全体学生的学号(Sno)和姓名(Sname)和系代号(Dno)。
SELECTSno,Sname,Dno
FROMStudent
WHEREDno='DX01';
【SY2-07】查询考试成绩有不及格的学生的学号。
SELECTDISTINCTSno
FROMSC
WHEREGrade<60;
【SY2-08】查询所有年龄在19岁以下的学生姓名(Sname)及年龄。
SELECTSname,Sage
FROMStudent
WHERESage<19;
【SY2-09】查询所有年龄在18~20岁(包括18岁和20岁)之间的学生姓名(Sname)及年龄。
SELECTSname,Sage
FROMStudent
WHERESage>=18ANDSage<=20;
或
SELECTSname,Sage
FROMStudent
WHERESageBETWEEN18AND20;
【SY2-10】查询年龄不在18-20岁之间的学生姓名(Sname)及年龄(Sage)。
SELECTSname,Sage
FROMStudent
WHERESageNOTBETWEEN18AND20;
【SY2-11】查询计算机系和数学系学生的信息。
SELECT*FROMStudent
WHEREDnoIN('DX01','LX01');
或
SELECT*FROMStudent
WHEREDno='DX01'ORDno='LX01'
【SY2-12】查询既不是计算机系,也不是数学系的学生的信息。
SELECT*FROMStudent
WHEREDnoNOTIN('DX01','LX01');
或
SELECT*FROMStudent
WHEREDno!
='DX01'ANDDno!
='LX01'
【SY2-13】查询所有姓“欧”的学生的姓名(Sname)、学号(Sno)和性别(Ssex)。
SELECTSname,Sno,Ssex
FROMStudent
WHERESnameLIKE'欧%';
【SY2-14】查询姓“欧”且全名为3个汉字的学生的信息。
SELECT*FROMStudent
WHERESnameLIKE'欧__';
【SY2-15】查询所有不姓“刘”的学生姓名(Sname)和年龄(Sage)。
SELECTSname,Sage
FROMStudent
WHERESnameNOTLIKE'欧%';
【SY2-16】查询课程名为“DB_Design”的课程号信息。
SELECTCno,Cname,Ccredit
FROMCourse
WHERECnameLIKE'DB\_Design'ESCAPE'\';
【SY2-17】查询以"DB_"开头,且倒数第3个字符为“i”的课程的详细情况。
SELECT*
FROMCourse
WHERECnameLIKE'DB\_%i__'ESCAPE'\';
【SY2-18】假设某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。
试查询缺少成绩的学生的学号(Sno)和相应的课程号(Cno)。
SELECTSno,Cno,Grade
FROMSC
WHEREGradeISNULL;
【SY2-19】查询所有有成绩的学生学号(Sno)和课程号(Cno)。
SELECTSno,Cno,Grade
FROMSC
WHEREGradeISNOTNULL;
【SY2-20】查询计算机系年龄在20岁以下的学生姓名。
SELECT*
FROMStudent
WHEREDno='DX01'ANDSage<19;
3查询结果排序
【SY2-21】查询选修了1号课程的学生的学号(Sno)和成绩(Grade),并按成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 数据库 实验 指导书