实验五SELECT数据查询.docx
《实验五SELECT数据查询.docx》由会员分享,可在线阅读,更多相关《实验五SELECT数据查询.docx(13页珍藏版)》请在冰豆网上搜索。
![实验五SELECT数据查询.docx](https://file1.bdocx.com/fileroot1/2022-11/17/cb7dba8a-82bb-4bb6-bf7b-782065c568c4/cb7dba8a-82bb-4bb6-bf7b-782065c568c41.gif)
实验五SELECT数据查询
旦结果.冷消息
snosname
1s10\吴玉江
*huiaiuuiiKiuiE
2S6马常友
实验五、SELECTS据查询
一、实验目的
要求学生熟练使用T-SQL语句进行数据查询,掌握SELECTS句的基本结构和多表连接查询、子查询、分组查询、查询结果的排序等操作。
二、实验内容
(1)利用SELECT^询语句进行单表、多表查询设计。
(2)禾9用SELECT语句进行子查询和外连接查询.
(3)设计ORDERB渣询子句以及带有GROUPBY的查询子句。
三、实验指导
1、SELECT基本语句格式
SELECT^询的基本语句包含要返回的列、要选择的行、放置行的顺序和将信息分组的规范,其语句格式如下:
2、简单查询实验
利用T-SQL语句在JXGL数据库中实现简单查询操作:
(1)查询数学系(MA)学生的学号和姓名。
USEJXGL
GO
ESELECTsno,snarr.efrom3
-whereadept}
GO
(2)查询选修了课程的学生的学号
USEJXG匸
GO
□SELECTsno
FROMSC
GO
(3)查询选修了课程号为“C2”的学生的学号和成绩,并对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
USEJXGL
GO
□SELECTsno,grade
FROMSC
WHERE(cnc^1C2')
ORDER3YgradeDESC,snc鑫5匚
GO
(4)查询选修了课程为“C2'的成绩在80到90分之间的学生的学号和成绩,并将成绩乘以0.8输出。
USEJXGL
GO
□SELECTsnoas■学号*■已d芒”0.8
h®,成绩Jg玄『课程号,
FROM
5C
-J
-■口乔
-JI
WHERE
cno=1c2'and
学号
成第
课程号
grade
bet>ree^80and.90
1
jS5
I72
C2
order
bygradedesc^sncasc
2
S10
70.4
C2
-
3
S2
704
C2
GO
4
S6
704
C2
(5)
查询数学系(MA)或计算机科学系(CS)中张的学生信息
(6)查询缺少了成绩的学生学号和课程号
USEJXGL
GO
E]SELECT3NG,CNC
FROMSC
-WHEREgr«deISNULL
GO
3、连接查询实验
利用T-SQL语句在JXGL数据库中实现下列连接查询
(1)查询每个学生的情况以及他(她)所选修的课程
USE
GO
□
JXGL
selectS.,C*cnamefroicSrSC,C
whereST3no=sc.anoandsc・cno=C,cnc;
GO
sno
sname
age
sex
sdept
cname
1
UIJILIUIBIUIUI^
I
张晓倩
21
F
CS
math
2
S10
吴玉江
22
M
MA
math
3
S11
张金凤
23
F
IS
math
4
SB
吕露
19
女
CS
Chinese
5
S2
姜芸
24
F
IS
math
G
S3
李小冈I]
20
M
CS
math
7
S5
22
F
IS
math
二1结果」消息
(2)
查询学生的学号、姓名、选修的课程名及成绩
□结果
山消息
sno
sname
yrsds
1isii
r強金風
39
2S5
李芸
30
3S7
张文秀
99
(3)
90分以上的学号、姓名及成绩
查询选修“离散数学”课程且成绩为
USEJXGL
GO
selectS.ano,snair^.grade
fromSfSCfC
whereS.sno-3c.sno
andsc+cno=C.cna=ndgrade>=90
andcnaiLe=1math*
GO
COG
eno*
1
j23
;23
1
2
2d
24
3
25
25
4
26
26
5
Cl
Cl
6
C2
C2
—3结果_J消息
(4)查询每一门课的间接先修课(即先修课的先修课)
USEJXGL
GO
selectc.second.eno
frontcasfirst,|oas
secondwherefirst.onc-second.cflq
GO
4、嵌套查询
利用T-SQL语句在JXGL数据库中实现下列嵌套查询操作:
(1)查询选修了“离散数学”的学生的学号和姓名。
USEJXGL
GO
日selectsno,s^ame
froicS
wheresno
z_nselectsnofreinsc
wherecno=(selecteno
froircwherecrLaiEe^1math'
GO
消息512,级别16,状态1,第1行
子查询返回的值不止一个°肖子章询跟随在=>
<=>>=之后,或子查询角推表达式时;
这种情况是不允许的。
(2)查询课程号为“C2'、成绩高于张林的学生的学号和成绩
USEJXGL
GO
SELECTgrade
FROM5C
WHERE5Cxcna=,C2T三ndgrade>
E
SELECTgrade
FROMS亡
WHERE5匚^nc-'CZ1ANDsno-(
SELECTano
FROM5
WHEREmnaiy=i张林,
)
(3)查询其他系中年龄小于计算机科学系(cs)中年龄最大者的学生
GO
ESELECT-|
FROM5
WHEREsdepi:
<>r亡5'Ai-IL(
SELECT1-IAX■age
FROM5WHERE3dept=,CS,
L}
GO
sno
sname
sex
sdept
1
i$4
-••-t
i土册萍
19
F
IS
2
S6
"“张常友
20
M
MA
-a-:
-
-—1■
二踣果J消息
(4)查询其他系中比计算机科学系(
cs)中学生年龄都小的学生
USEJXGL
GO
BSELECT*
FROM5
WHEREsdep匸A1IDage
SELECTMIll|agei
FROMS
WHEREsdept='CS*II因结杲二消息
L)snosnarnemgesexsdwt
GO1\王輛萍19FIS
(5)查询和“王洪敏”的“数据库原理及应用”课程分数相同的学生的学号。
USEJXGL
GO
曰SELECTano
FROM匚『5
WHEREcredir=i
selectcredit
fromSfSCtC
WHERES.sn.c=S.snaANDSC.eno=C.cna一
网P丙结果山消息
匚•口口斬童数据库原理及应用「'JW
and3.sname='主哄敏*
L)
GO
(6)查询选修了“c2”课程的学生的姓名
5、组合查询和统计查询
利用T-SQL语句在JXGL数据库中实现下列数据组合查询和统计查询操作
(1)查询选修了“计算机基础”课程的比此课程的平均成绩大的学生的学号和成绩。
USEJXGL
GO
selectsc,sno,sc・gr己且亡
froir.sc
(2)查询选修了“计算机基础”课程的学生的平均成绩
USEJXGL
dt-xzj-#w-rv-JJ-JJ
GO
3select巴匚・snofsc・gxNd巳
frombc
a
结果
A消息
sno
grade
i
Psri
H99
2
S1598
3
S7
99
wheresc.grade>(
selectAVS(sc・g工已1日皂
fromSCr亡
wherec.cnan;e=*计算机基础
GO
(3)查询年龄大于女同学平均年龄的男的同学的姓名和年龄
USE-JXGL
GO
□selectage,anairLe
from5
age
sname
1
!
!
囲I
李球
2
2S
王洪敏
wheresex='M1andage》(selectAVGfag已'ifromS
Wheresex=*F'
r}
GO
⑷列出各系学生的总人数,并按人数进行降序排列
USEJXGL
GO
3selectadeptas*/完系"丁
COUNT(*)as’人数「
fremS
f…|/MJ?
S|
groupbysdset
除系.人数
orderby'人数、desc
1fis:
6
GO
2MA5
3CS3
1
MIIBIIUIIUIMIIU
|CS
25
NULL
2
IS
25
NULL
3
MA
25
NULL
4
CS
C2
936S66666旺
5
IS
C2
93666€6eS6€€C67
6
MA
C2
93566666566耐
7
CS
C4
825
3
IS
C4
S2.5
9MA
匸4
825
sdepteno阮列自
二结果
(5)统计各系各门课程的平均成绩
USEJXGL
GO
□selectsdep€,eno,AVG(gradeiftoilS,S亡
-groupbyadept,eno
GO
(6)查询选修了“计算机基础”和“离散数学”的学生的学号和平均成绩
□SELECTAVS(gradeifromSCassi
WHERE•计算机基础*in(
selectcnair.e
fromC
whereenoir(selects2,eno
fromSCass2
wnerec~Bcii-离散数学,in(selectcnair.e
fromC
sno
whereenoin(
selecteno
fromSCslss3
wheres3-snc=31,sna}|
-groupbyal.sncl