实验:数据库综合查询_第1页
实验:数据库综合查询_第2页
实验:数据库综合查询_第3页
实验:数据库综合查询_第4页
实验:数据库综合查询_第5页
已阅读5页,还剩17页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验六:数据库综合查询

一、实验目得

1.掌握SELECT语句得基本语法和查询条件表示方法;

2.掌握查询条件种类和表示方法;

3.掌握连接查询得表示及使用;

4.掌握嵌套查询得表示及使用;

5.了解集合查询得表示及使用。

二、实验环境

已安装SQLServer2005企业版得计算机(13台);

具有局域网环境,有固定IP;

三、实验学时

2学时

四、实验要求

1.了解SELECT语句得基本语法格式和执行方法;

2.了解连接查询得表示及使用;

3.了解嵌套查询得表示及使用;

4.了解集合查询得表示及使用;

5.完成实脸报告;

五、实脸内容及步骤

以数据库原理实脸5数据为基础,请使用T-SQL语句实现进行以下操作:

1.查询以*DB_,开头,且倒数第3个字符为's'得课程得详细情况;

USEstudent

SELECT'课程号’二Cn。,‘课程名'二Cname,'先行课号'=Cpn。,’学

分’=Ccredit

FROMcourse

WHERE

结果鱼消息

课程号课程:先行设二字分

SUBSTRING(Cname,1,3)='DB_'AND

SUBSTRING(RIGHT(RTRIM(Cname),3),1,1)='s'

2.查询名字中第2个字为‘阳'得学生姓名和学号及选修得课程号、课程

名;

USEstudent

SELECT1姓名"=student>Sname,'学号,=student、Sno,'课程号

'=course>Cno,'课程名'二course>Cname

FROMstudent,course,sc

WHERE

student、Sn。=sc、SnoAND

国结果I由消息

姓名学…课程…课程名

course、Cno=sc、CnoAND

SUBSTRING(LTRIM(student、Sname),2,1)='阳'

3.列出选修了‘数学'或者'大学英语'得学生学号、姓名、所在院系、

选修课程号及成绩;

USEstudent

SELECT

'学号'二student、Sno,

‘姓名‘二student、Sname,

'所在院系'二student、Sdept,

'课程号,:sc、Cno,

'成绩'二sc、Grade

FROMstudent,course,sc

WHERE

student、Sno=sc、SnoAND

<--------------

二I结果必消息

学号姓名所在院…课程…成绩

1120051Q张衡IS246

2200515005张向东IS289

3200515006张向丽IS265

4200515008王民生MA272

520051500S王小民MA276

6200515010王丹丹MA296

200515010王丹丹MA891

8200515011张毅WM867

9200515015李蕾EN85

10200515016刘社CM8N...

11200515017刘星耀CM8N...

12200515018李贯EN863

course、Cno=sc、CnoAND

(course、Cnama二‘数学’ORcourse、Cname二‘大学英语’)

4.查询缺少成绩得所有学生得详细情况;

USEstudent

SELECTstudent>*

FROMstudent,sc

WHERE

rs结果至消息

SnoSnameSsexSageSdept

1!200515016;刘社男21CM

2'"200575017-Z刘星耀男18CM

student、Sno二sc、SnoAND

sc、GradeISNULL

5.查询与‘张力'(假设姓名唯一)年龄不同得所有学生得信息;

USEstudent

SELECT*

FROMstudent

WHERE

Sname!='张力'AND

Sage!=(SELECTSageFROMstudentWHERESname='张力

三结果|洎息

Sno

赵百

女23

1j200515001

咏

李

男2c

2200515002cs

衡

张

男18

32005150042ls

向

张

男

东o

4200515Q05ls

向

张

女2o

5200515006丽ls

芳

王

女

6200515007生2C

民cs

王

男MA

7200515008民

小

王

女8MA

S200515009丹

丹

王

女2c

9200515010

毅

张

男2oMA

10200515011WM

磊

楠

女2c

11200515012EN

丰

张

男

12200515014CS

留

李

女EN

200515015社

刘

13男CM

星

刘

男CM

耀8

200515017

15自

林

男wM

许20

嵯

刘

16200515019男

鸥

小

朱

杵

,)

6.查询所选课程得平均成绩大于张力得平均成绩潺学生学号、姓名及平均

成绩;

USEstudent

DECLAREZLAVGINT

SETZL_AVG=(

SELECTAVG(sc>Grade)

FROMsc,student

WHEREsc、Sno=stucent^SnoANDstudent、Sname='张力'

GROUPBYsc、Sn。,student、Sno)

SELECTDISTINCT

'学号'二student、Sno,

'姓名'=student、Sname,

‘平均成绩’二AVG[sc、Grade)

FROMstudent,sc

WHEREsc、Sno=student^Sno

而结果直遁I______________

学号姓名平均成绩

1r26o5l"501o'"'i王丹丹93

•、.......................;

GROUPBYsc、Sno,student>Sn。,student、Sname

HAVINGAVG(sc,Grade)>ZL_AVG

7.按照“学号,姓名,所在院系,已修学分”得顺序列出学生学分得获得情况。

其中已修学分为考试已经及格得课程学分之和;

USEstudent

SELECTDISTINCT

'学号'二student、Sno,

‘姓名‘二student、Sname,

‘所在院系'二student、Sdept,

'已修学分':SUM1CASEWHENsc.Grade>=60THENcours

e、Ceredit*1ELSE0END)

FROMstudent,sc,course

WHEREsc、Sno=studentsSnoANDsc、Cno=course、Cno

学号姓名所在院…已修学分

1200515QC1:赵菁苦CS11

2200515002李咏CS7

3200515003张力CS4

4200515004张衡IS4

5200515005张向东IS9

6200515006张向丽IS6

7200515008王民生MA2

8200515009王小民MA2

920C515010王丹丹MA5

10200515011张毅WM3

11200515015李蕾EN0

12200515016刘社CM0

GROUPBYstudent>Sno,student>Sname,student>Sdept

8.列出只选修一门课程得学生得学号、姓名、院系及成绩;

USEstudent

SELECT

学号'=studentSno,

姓名’;student、Sname,

院系'二student、Sdept,

成绩■'二sc、Grade

FROMstudent,sc

WHEREstudent>Sno=sc、SnoAND

口结果石消息

学号姓名院.•成绩

1200515003张力CS91

2200515008王民生MA72

3200515009王小民MA76

4200515011张毅WM67

5200515015李蕾EN5

6200515016刘社CMNULL

7200515017刘星耀CMNULL

8200515018李贵EN63

student,Sno=ANY(SELECTSnoFROMscGROUPBYSnoH

AVINGCOUNT(Cno)=1)

9.查找选修了至少一门和张力选修课程一样得学生得学号、姓名及课程号;

USEstudent

SELECT

,学号,二student、Sno,

姓名'=student、Sname,

,课程号•二sc、Cno

FROMstudent,sc

WHEREstudent、Sno=sc、SnoAND

student、Sname!二'张力'AND

sc、Cno=ANY(SELECTsc、CnoFROMsc,studentWHEREsc^Sno

口结果消息

学号姓名课程号

11200515001j赵菁菁1

2200515002李咏1

3200515004张衡1

4200515005张向东1

5200515006张向丽1

=student、SnoANDstudent、Sname='张力')

10.只选修“数据库”和“数据结构”两门课程得学生得基本信息;

USEstudent

SELECT

'学号'=studentsSno,

‘姓名‘二student、Sname,

学院’=student、Sdept,

"选修课程'二course、Cname

FROMstudent,sc,course,courseb

WHEREstudent^Sno=sc、SnoAND

course、Cno=sc>CnoAND

b、Cno=course、CnoAND(

(sc、Sno=ANY(SELECTSnoFROMscGROUPBYSnoHAVING

COUNT(Cno)=1)AND

(course、Cname='数据库'ORcourse、Cname='数据结构'))

OR

(sc、Sno=ANY(SELECTSnoFROMscGROUPBYSnoHAVING

p结果备消息

学号姓名学…选修课程

1Q66A版运:张力cs数据库

COUNT(Cno)=2)AND

b、Cname='数据库'ANDcourse、Cname='数据结构'))

11.至少选修“数据库”或“数据结构”课程得学生得基本信息;

USEstudent

SELECTDISTINCT

,学号’二student、Sno,

'姓名'=student、Sname,

学院'=student、Sdept

FROMstudent,sc

WHEREstudent>Sno=sc>SnoAND

sc、Sno=ANY(

SELECTsc、Sno

FROMcourse,sc

WHEREcourse>Cno=sc、CnoAND

(course、Cname二'数据库’ORcourse、Cname二‘数据结构’))

二]结果」消息

字号姓名字院

120c515001j赵菁菁CS

2200515002李咏CS

3200515003张力CS

420C515004张衡IS

5200515005张向东IS

620C515006张向丽IS

12.列出所有课程被选修得详细情况,包括课程号、课程名、学号、姓名及成

绩;

USEstudent

SELECT

'课程号':sc、Cno,

‘课程名'二course、Cname,

学号,=sc^Sno,

姓名'二student、Srame,

成绩'二sc、Grade

FROMsc,course,student

WHEREsc、Cno=course、CnoANDsc、Sno=student>Sno

口缄,j)M

课程号课程名学号姓名成渍

1....微据库200515001赵菁苦801

21数据库2005150C2李咏90

3_1数据库200515003张力91

41数据库2005150W张缗79

51数据库200515006张向丽89

61数据库200515005张向东63

710人工智德2005150C5张向东65

82数学200515005张向东89

92数学200515006张向丽65

102数学200515008王民生72

112数学2005150CS王小民7S

122数学200515010王丹丹%

132数学2005150W张窝46

143僖息系统200515002李咏53

154犊作系统200515002李尿85

164操作系统200515001赵菁菁62

175数据结构200515001跑菁菁58

18S数据处理200515021刘修58

19_7PASCA...200515001赵菁菁70

::8大学英语200515010王丹丹91V

,置诃已成功执行,JGZ-VIRTUALXP\>QLEXPRESS(90SP4)JGZ-VIKrilAU八ASinHratorS2)student00:00:0026行

ORDERBYsc、CnoASC

13.查询只被一名学生选修得课程得课程号、课程名;

USEstudent

SELECT

'课程号'=sc、Cno,

课程名'二course、Cname

FROMsc,course

WHEREsc、Cno二course、Cno

GROUPBYsc、Cno,course、Cname

HAVINGCOUNT(sc>Sno)=1

ORDERBYsc、CnoASC

口萩]由而______

课程号课程名

1f人工智能

2T"~~信息系统

35数据结构

46数据处理

57PASCAL语言

69计算机网络

14.检索所学课程包含学生'张向东'所学课程得学生学号、姓名;

USEstudent

SELECTDISTINCT

,学号’二sc、Sno,

'姓名':student、Sname

FROMsc,student

WHEREsc、Sno=student、SnoAND

student^Sname!二’张向东‘AND

sc、Cno=ANY(SELECTsc、CnoFROMsc,student

WHEREsc>Sno=student、SnoANDstudent、Sname二’张

向东')

二]结果口消息

学号姓名

1200515001赵菁菁

2200515002李咏

3200515003张力

42005150(X张衡

5200515006张向丽

6200515008王民生

7

200515009王小民

8200515010王丹丹

15.使用嵌套查询列出选修了“数据结构”课程得学生学号和姓名;

USEstudent

SELECTDISTINCI

'学号’=sc、Sno,

'姓名'二student、Sname

FROMsc,student,course

WHEREsc、Sno=studentSnoAND

sc、Cno=course、OnoAND

sc>Sno=ANY(SELECTsc^SnoFROMsc,courseWHEREsc、

日结果石消息

学号姓名

1[260515661',|赵菁菁

Cno=course、CnoANDcourse、Cname="数据结构’)

16.使用嵌套查询查询其她系中年龄小于CS系得某个学生得学生姓名、年龄

和院系;

USEstudent二1结果_3消息

姓名年…院系

1张衡118IS

SELECT

2张向东20IS

3张向丽20IS

4王小民18MA

'姓名'二Sname,

5王丹丹20MA

6张毅20WM

一

'年龄'二Sage,i杨磊20EN

8李晨19MA

9李蕾21EN

‘院系'=Sdept10刘社21CM

11刘星耀18CM

12李贵19EN

FROMstudent13林自许20WM

WHERESdept!='CS'ANDSage<ANY(SELECTTOP4SageFRO

MstudentWHERESdept=1CS')

17.使用ANY、ALL查询,列出其她院系中比CS系所有学生年龄小得学生;

USEstudent

SELECT*

□结果|J消息

SnoSnameSsexSageSdept

一:200515期j张衡男18IS

2200515009王小民女18MA

3200515017刘星耀男18CM

FROMstudent

WHERESdept!='CS'ANDSage<ALL(SELECTSageFROMs

tudentWHERESdept='CS')

18.分别使用连接查询和嵌套查询,列出与‘张力'在一个院系得学生得信息;

连接:

USEstudent

SELECTa、*

FROMstudenta,studentb

WHEREa、Sdept=b、SdeptANDa、Sname!二'张力'ANDb、Sname

=,张力'

嵌套:

USEstudent

SELECT*

FROMstudent

WHERESdept=ALL(SELECTSdeptFROMstudentWHERESna

忠结果1B消息

SnoSnameSsexSageSdept

1200515001赵菁菁女23CS

2200515002李咏男20CS

3200515007王芳女20CS

4200515014张丰毅男22CS

5200515021刘峥男25CS

SnoSnameSsexSageSdept

1200515001赵菁善女23CS

2200515002李咏男20CS

3200515007王芳女20CS

4200515014张丰毅男22CS

5200515021刘蟾男25CS

me='张力’)ANDSname!='张力’

19.使用集合查询列出CS系得学生以及性别为女得学生名单;

USEstudent

SELECT*

FROMstudent

WHERESdept='CS'

UNION

SELECT*

FROMstudent

WHERESsex='女'

ORDERBYSdept,SsexASC

20.使用集合查询列出CS系得学生与年龄不大于19岁得学生得交集、差集;

USEstudent

口结果居消息SELECT*

SnoSnameSsexSageSdept

1一200一5.1L5.L0.0L.2LT:I李咏男20CSFROMstudent

2200515003张力男19CS

3200515014张丰毅男22CS

4200515021刘峰男25CSWHERESdept='CS'

5200515001越菁菁女23CS

6200515007王芳女20CS

一200515012杨磊女20ENEXCEPT

8200515015李蕾女21EN

9200515006张向丽女20IS

102005150CS王小民女18MA

11200515010王丹丹女20MA

12200515013李晨女19MA

SELECT*

二1结果」消息

SnoSnameSsexSageSdept

1i200515003I张力男19CS

a.....................-IFROMstudent

WHERESage>19

SnoSname3sexSageSdept

i2DC515D02i李咏男20CS

1ORDERBYSageASC

2200515007壬芳女20CS

3200515014张丰毅男22CS

-200515001越苦菁女23CSGO

5200515021刘峰男25CS

SELECT*

FROMstudent

WHERESdept='CS1

EXCEPT

SELECT*

FROMstudent

WHERESage!>19

ORDERBYSageASC

21.使用集合查询列出选修课程1得学生集合与选修课程2得学生集合得交

集;

USEstudent

SELECTstudent、*□结果消息

SnoSnameSsexSageSdept

1200515004张衡男18IS

2200515005张向东男20IS

3200515006张向丽女20IS

FROMstudent,sc

WHEREsc>Sno=student>SnoANDsc、Cno='1'

INTERSECT

SELECTstudent、*

FROMstudent,sc

WHEREsc^Sno=student>SnoANDsc、Cno='2'

22.思考题:按照课程名顺序显示各个学生选修得课程(如200515001数

据库数据结构数学);

一种笨拙得循环方法:

USEstudent

DECLARESNumberINT

DECLARETmpSnoINT

SETSNumber=0

WHILESNumber<15

BEGIN

SETTmpSno=(SELECTDISTINCTTOP(SNumber+1)Sno

FROMsc

EXCEPTSELECTDISTINCTTOP(SNumber)Sno

FROMsc)

SELECT,学号'二Sn。,‘姓名'二Sname,

,第一门一(SELECTTOP1course、Cname

FROMsc,course

WHEREsc^Cno二course、CnoANDsc、Sno=TmpSno),

‘第二门’=(SELECTTOP2course、Cname

FROMsc,course

WHERESG、Cno=course、CnoANDsc、Snc=TmpSno

EXCEPTSELECTTOP1course、Cname

FROMsc,course

WHEREsc、Cno=course、CnoANDsc、Sno=TmpSno),

‘第三门'二(SELECTTOP3course.Cname

FROMsc,course

WHEREsc、Cno=course、CnoANDsc、Sno二TmpSno

EXCEPTSELECTTOP2course、Cname

FROMsc,course

WHEREsc、Cno=course、CnoANDsc、Sno=TmpSno),

第四门,二(SELECTTOP4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论