网络数据库实验指导书.docx

上传人:b****6 文档编号:6562751 上传时间:2023-01-07 格式:DOCX 页数:60 大小:1.21MB
下载 相关 举报
网络数据库实验指导书.docx_第1页
第1页 / 共60页
网络数据库实验指导书.docx_第2页
第2页 / 共60页
网络数据库实验指导书.docx_第3页
第3页 / 共60页
网络数据库实验指导书.docx_第4页
第4页 / 共60页
网络数据库实验指导书.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

网络数据库实验指导书.docx

《网络数据库实验指导书.docx》由会员分享,可在线阅读,更多相关《网络数据库实验指导书.docx(60页珍藏版)》请在冰豆网上搜索。

网络数据库实验指导书.docx

网络数据库实验指导书

 

《网络数据库实验》指导书

 

计算机科学与技术专业

 

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

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),并按成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1