数据库实验实验五.docx

上传人:b****4 文档编号:5011878 上传时间:2022-12-12 格式:DOCX 页数:18 大小:335.56KB
下载 相关 举报
数据库实验实验五.docx_第1页
第1页 / 共18页
数据库实验实验五.docx_第2页
第2页 / 共18页
数据库实验实验五.docx_第3页
第3页 / 共18页
数据库实验实验五.docx_第4页
第4页 / 共18页
数据库实验实验五.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

数据库实验实验五.docx

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

数据库实验实验五.docx

数据库实验实验五

实验报告

1、目的(本次实验所涉及并要求掌握的知识点)

1.掌握数据的基本检索方法;

2.掌握数据查询的join和Orderby子句的使用;

3.掌握聚集函数的使用方法。

2、实验内容与设计思想(设计思路、主要数据结构、主要代码结构、主要代码段分析)

1.对数据表进行简单检索;

2.对数据表进行排序检索;

3.多表查询;

三、实验使用环境(本次实验所使用的平台和相关软件)

硬件环境要求:

PC机(单机)

使用的软件名称、版本号以及模块:

Windows10SQLServer2016

4、实验步骤和调试过程(实验步骤、测试数据设计、测试结果分析)

用SQL语句创建四个表:

createdatabaseSTU103

go

useSTU103

go

createtablestudent103

Snochar(3)notnullprimarykey,--学号

Snamenchar(4)notnull,--学生姓名

Ssexnchar

(1)notnull,--学生性别

Sbirthdaydate,--学生出生年月

Classchar(5)--学生所在班级

go

createtableteacher103--老师

Tnochar(3)notnullprimarykey,--教工编号(主码)

Tnamenchar(4)notnull,--教工姓名

Tsexnchar

(1)notnull,--教工性别

Tbirthdaydate,--教工出生年月

Profnchar(3),--职称

Departnchar(5)notnull--教工所在部门

go

createtableCourse103--课程

Cnochar(5)notnullprimarykey,--课程号

CnameNvarchar(25)notnull,--课程名称

Tnochar(3)notnullreferencesteacher103(Tno)--教工编号(外码)

go

createtableScore103--分数

Snochar(3)notnullreferencesstudent103(Sno),--学号(外码)

Cnochar(5)notnullreferencesCourse103(Cno),--课程号(外码)

primarykey(Sno,Cno),

DegreeDecimal(4,1)--成绩

表中数据如下,请插入相应的数据表中:

(问题如果数据更多,除了用insert语句外,有没有其他更快的方法?

可以使用表格导入数据

(一)Student103

Sno

Sname

Ssex

Sbirthday

class

108

曾华庆

1999-09-01

95033

105

匡明强

1998-10-02

95031

107

王丽娜

1996-01-23

95033

101

李君帅

1996-02-20

95033

109

王芳芳

1995-03-10

95031

103

陆君茹

1994-04-03

95031

104

陈文文

1994-08-13

95032

106

李丽丽

1996-11-13

95032

BULKINSERTStudent103

FROM'H:

\大二下\DB\s.txt'

with

(FIRSTROW=2)

(二)Course103

Cno

Cname

Tno

3-105

计算机导论

825

3-245

操作系统

804

3-235

数据结构

825

3-236

离散数学

831

6-166

数字电路

856

9-888

高等数学

831

9-886

[数学100%技巧

831

4-123

毛泽东思想和中国特色社会主义理论体系概论]

811

4-101

[马克思主义基本原理]概论

811

BULKINSERTCourse103

FROM'H:

\大二下\DB\c.txt'

with

(FIRSTROW=2)

表(三)Score103

Sno

Cno

Degree

103

3-245

86

105

3-245

75

109

3-245

68

103

3-105

92

105

3-105

88

109

3-105

76

101

3-105

64

107

3-105

91

108

3-105

78

101

6-166

85

107

6-166

79

108

6-166

81

103

9-886

88

103

4-123

77

103

4-101

78

101

9-886

98

101

4-123

87

101

4-101

88

103

6-166

NULL

注:

null怎么导入

最后含有null的记录可以用:

insertScore103(Sno,Cno)values('103','6-166')或者直接编辑插入

表(四)Teacher103

Tno

Tname

Tsex

Tbirthday

Prof

Depart

804

李诚

1958-12-02

副教授

计算机系

856

张旭

1969-03-12

讲师

电子工程系

825

王萍

1972-05-05

助教

计算机系

828

李丽丽

1976-11-13

讲师

计算机系

831

刘冰

1977-08-14

助教

电子工程系

811

李强栋

1977-09-24

讲师

社科系

BULKINSERTTeacher103

FROM'H:

\大二下\DB\t.txt'

with

(FIRSTROW=2)

select*fromTeacher103

六、验证性实验

以下查询要求在逐个语句执行,执行后将执行结果记录下来:

1.无条件查询全部数据

USESTUDENT

SELECT*FROMSTUDENT103

2.在SELECT关键字后指明要检索的列名

(1)查询学生表的学生学号和姓名

SELECTSNO,SNAMEFROMSTUDEN103

(2)查询STUDENT表中的班级名

SELECTclassFROMSTUDENT103

(3)查询S表中不重复的班级

SELECTDISTINCTclassFROMSTUDENT103

3.改变列标题的检索

(1)使用空格形式:

列名新标题

SELECTSNO学号,SNAME姓名FROMSTUDENT103

(2)使用“AS”形式,列名AS新标题

SELECTSNOAS'学号',SNAMEAS'姓名'FROMSTUDENT103

(3)使用“AS”形式,列名AS新标题

SELECTSNOAS'学号',SNAMEAS'姓名'FROMSTUDENT103

(4)使用“AS”形式,列名AS新标题

SELECT'学号'=SNO,'姓名'=SNAMEFROMSTUDENT103

4.有条件选择的查询

在S表检索“95033”的学生信息

SELECT*FROMSTUDENT103WHERECLASS='95033'

(1)在S表中检索姓“王”的学生信息

SELECT*FROMSTUDENT103

WHEREsnamelike'王%'

 

(2)在SC表检索’3-105’选修课成绩为空的选课记录

SELECTSNO,CNOFROMSCORE103

WHEREcno='3-105'andDegreeisnull

(3)检索年龄为21,25,22的学生学号、姓名

SELECTSNO,SNAMEFROMSTUDENT103

WHEREYEAR(GETDATE())-YEAR([Sbirthday])IN(21,25,22)

5.多表查询

查询所有人的学号,姓名,课程号,课程名,成绩

Selects.snosname,o,cname,DegreefromSTUDENT103sjoinSCORE103sc

Ons.sno=sc.snojoincourse103cono=o

注意:

表的别名

6.对检索结果进行排序

SELECT*FROMSCORE103

WHEREDegreeISnotNULL

ORDERBYSNO,CNODESC

七、设计性实验

(1).实验要求

1、查询Student表中95031班的所有记录的sno,Sname和Ssex列。

selectSno,Sname,Ssexfromstudent103whereclass='95031'

2、查询教师所有的单位即不重复的Depart列。

selectDISTINCTDepartfromteacher103

3、查询Score表中成绩在60到80之间的所有记录。

select*fromScore103wheredegree>=60anddegree<=80

4、查询Score表中成绩为85,86或88的记录。

select*fromScore103wheredegree=85ordegree=86ordegree=88

5、查询Student表中“95031”班或性别为“女”的同学记录。

select*fromstudent103whereclass='95031'orSsex='女'

6、以Cno升序、Degree降序查询Score表的所有记录。

select*fromScore103ORDERbyCno,Degreedesc

7、查询课程名中的第15个字符是‘理’课程信息。

select*fromCourse103wherecnamelike'______________理%'

8、查询Student表中不姓“王”且姓名第二字为‘君’的同学记录。

select*fromStudent103wherenotSnamelike'王%'andSnamelike'_君%'

9、查询Student表中每个学生的姓名和年龄。

selectSname,year(getdate())-year(Sbirthday)agefromstudent103

10、查询Student表中最大和最小的Sbirthday日期值。

selecttop1SbirthdayfromStudent103orderbySbirthday

selecttop1SbirthdayfromStudent103orderbySbirthdaydesc

11、以班号和年龄从大到小的顺序查询Student表中的全部记录。

select*,year(getdate())-year(Sbirthday)agefromstudent103orderbyclass,age

12.查询Student表本月过生日同学的信息,包括学号,姓名,课程号,课程名,任课教师和成绩。

Selects.sno,s.sname,o,cname,t.Tname,DegreefromSTUDENT103sjoinSCORE103sc

Ons.sno=sc.snojoincourse103cono=ojointeacher103tont.Tno=c.Tnowheremonth(getdate())-month(Sbirthday)=0

13.查询选修课程名中含有%的信息,包括学号,姓名,课程号,课程名和成绩。

Selects.sno,s.sname,o,cname,DegreefromSTUDENT103sjoinSCORE103sc

Ons.sno=sc.snojoincourse103cono=owhereCnamelike'%[%]%'

14.查询选修课程名中含有’[‘或’]’的信息,包括学号,姓名,课程号,课程名和成绩。

Selects.sno,s.sname,o,cname,DegreefromSTUDENT103sjoinSCORE103sc

Ons.sno=sc.snojoincourse103cono=owhereCnamelike'%或%'

15.查询选修课程名中含有’[‘和’]’的课程信息,包括学号,姓名,课程号,课程名和成绩。

Selects.sno,s.sname,o,cname,DegreefromSTUDENT103sjoinSCORE103sc

Ons.sno=sc.snojoincourse103cono=owhereCnamelike'%和%'

16.查询所有学生信息,包括学号,姓名,课程号,课程名,任课教师和成绩(包括没上课的学生,没有选修的课程以及没上课的教师)。

Selects.sno,s.sname,o,cname,t.Tname,DegreefromSTUDENT103sfulljoinSCORE103sc

Ons.sno=sc.snofulljoincourse103cono=ofulljointeacher103tont.Tno=c.Tno

五、实验小结(实验中遇到的问题及解决过程、实验中产生的错误及原因分析、实验体会和收获)

1、导入的时候要注意编码。

2、查询的时候需要掌握一些匹配规则,特别是中文,或者特殊符号。

3、插入NULL值可以右键编辑插入或者是用插入命令直插入有值得部分。

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

当前位置:首页 > 求职职场 > 简历

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

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