数据库SQL查询语句练习Word格式.docx

上传人:b****6 文档编号:18812731 上传时间:2023-01-01 格式:DOCX 页数:13 大小:34.46KB
下载 相关 举报
数据库SQL查询语句练习Word格式.docx_第1页
第1页 / 共13页
数据库SQL查询语句练习Word格式.docx_第2页
第2页 / 共13页
数据库SQL查询语句练习Word格式.docx_第3页
第3页 / 共13页
数据库SQL查询语句练习Word格式.docx_第4页
第4页 / 共13页
数据库SQL查询语句练习Word格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

数据库SQL查询语句练习Word格式.docx

《数据库SQL查询语句练习Word格式.docx》由会员分享,可在线阅读,更多相关《数据库SQL查询语句练习Word格式.docx(13页珍藏版)》请在冰豆网上搜索。

数据库SQL查询语句练习Word格式.docx

WHERECno=‘C2'

);

WHERESC.Sno=S.Sno'

'

WHERESdept=CSANDCno=‘C2'

)检索学习课程号为(2C2的学生学号与姓名;

(7)检索学习全部课程的学生姓名;

在表S中找学生,要求这个学生学了全部课程。

换言之,在S表Sname

1.SELECTSno,Sname

,2.SELECTS.SnoFROMS

中找学生,在C中不存在一门课程,这个学生没有学。

SC

,FROMSWHERESnoINWHERES.Sno=SC.SnoSELECTSnameSELECTSno(;

‘ANDSC.Cno=C2'

FROMS

FROMSC

C2Cno=WHERE‘WHERENOTEXISTS

(SELECT*

FROMC

WHERENOTEXISTS(SELECT*

WHERESC.Sno=S.SnoANDSC.Cno=C.Cno));

(8)查询所学课程包含学生S3所学课程的学生学号。

DS)检索选修课程名为“”的学生学号与姓名3(分析:

不存在这样的课程Y,学生S3选了Y,而学生X没有选。

S本查询涉及到学号、姓名和课程名三个属性,分别存放在

SELECTDISTINCTSno表建立它们CS和C表中,但和表没有直接联系,必须通过SCFROMSCX

SCSC→→二者的联系。

WHERENOTEXISTS基本思路:

(SELECT*

C)首先在(1表中找出“;

CnoDS”课程的课程号FROMSCY

集合中的某)等于第一步给出的表中找出然后在SCCnoCno2(WHEREY.Sno=‘S3'

ANDNOTEXISTS;

Cno个元素(SELECT*集合中某个元S)最后在3(关系中选出等于第二步中SnoSno

FROMSCZ

素的元组,取出送入结果表列。

和SnoSnameWHEREZ.Sno=X.SnoANDZ.Cno=Y.Cno));

Sname,SELECTSnoFROMS

WHERESnoINSELECTSno(FROMSC

WHERECnoIN

SELECTCno(FROMC

))DS‘WHERECname='

33:

查询所有未选修C2课程的学生姓名。

34:

查询与“张三”在同一个系学习的学生学号、姓名和系别。

35:

查询选修了全部课程的学生姓名。

36:

查询所学课程包含学生S3所学课程的学生学号

(1)比较

设教学数据库有三个关系:

Education例1:

查所有年龄在20岁以下的学生姓名及年龄。

SEX,SDEPT)学生关系S(SNO,SNAME,AGE,

SELECTSname,Sage);

学习关系SC(SNO,CNO,GRADEFROMS

),TNAMECNO课程关系C(,CNAME,CDEPTWHERESage<

20;

(NOTage>

=20)查询问题:

岁以下的学生姓名及年龄。

201:

查所有年龄在例2:

查考试成绩有不及格的学生的学号

查考试成绩有不及格的学生的学号2SELECTDISTINCTSno

23岁之间的学生姓名、系别及年龄。

3:

查所年龄在20至WHEREgrade<

60;

查计算机系、数学系、信息系的学生姓名、性别。

4:

查既不是计算机系、数学系、又不是信息系的学生姓名、性5

(2)确定范围别例3:

查所年龄在20至23岁之间的学生姓名、系别及年龄。

6:

查所有姓“刘”的学生的姓名、学号和性别。

SELECTSname,Sdept,Sage个汉字的学生姓名。

7:

查姓“上官”且全名为3FROMS

WHERESageBETWEEN20AND23;

8:

查所有不姓“张”的学生的姓名。

9:

查DB_Design课程的课程号。

10:

查缺考的学生的学号和课程号。

(3)确定集合

查年龄为空值的学生的学号和姓名。

11例4:

岁以下的学生的学号和姓名。

查计算机系1220SELECTSname,Ssex

13FROMS

WHERESdeptIN('

CS'

‘IS'

‘MATH'

课程的学生的学号和成绩,其结果按分数的C3:

查询选修了14降序排列。

例5:

查既不是计算机系、数学系、又不是信息系的学生姓名、:

查询全体学生的情况,查询结果按所在系升序排列,对同一15性别系中的学生按年龄降序排列。

SELECTSname,Ssex16:

查询学生总人数。

17:

查询选修了课程的学生人数。

WHERESdeptNOTIN('

18课程的学生平均成绩。

计算选修了C1(C319:

查询学习课程的学生最高分数。

4)字符匹配

例6:

查询各个课程号与相应的选课人数。

20:

SELECTSname,Sno,Ssex321:

查询计算机系选修了门以上课程的学生的学号。

有多少人?

S:

22求基本表中男同学的每一年龄组人)(超过50WHERESnameLIKE‘刘%'

要求查询结果按人数升序排列,人数相同按年龄降序排列。

23:

查询每个学生及其选修课程的情况。

例7:

查姓“上官”且全名为3个汉字的学生姓名。

SELECTSname:

查询选修了24分以上的所有学生。

课程且成绩在C290FROMS

查询每个学生选修的课程名及其成绩。

25WHERESnameLIKE‘上官__'

26:

统计每一年龄选修课程的学生人数。

C2:

查询选修了27课程的学生姓名。

例8:

28:

SELECTSname,Sno,Ssex

查询选修课程名为“数据库”的学生学号和姓名。

29WHERESnameNOTLIKE‘张%'

30:

例9:

31:

SELECTCno

课程的学生姓名。

C2:

查询选修了32.

WHERECno=‘C3'

‘\'

‘DB\_Design'

ESCAPEWHERECnameLIKE(5)涉及空值的查询:

例105、对查询结果分组SELECTSno,Cno例20:

=代替);

(不能用WHEREGradeISNULLSELECTCno,COUNT(Sno)

ISNOTNULLL;

}WHERE{有成绩的Grade

FROMSCGROUPBYCno;

例11该SELECT语句对SC表按Cno的取值进行分组,所有具有相同SELECTSno,SnameCno值的元组为一组,然后对每一组作用聚合函数COUNT以求得FROMS

该组的学生人数。

WHERESageISNULL;

(6)多重条件查询如果分组后还要求按一定的条件对这些组进行筛选,最终只输岁以下的学生的学号和姓名。

20例12:

查计算机系出满足指定条件组,则可以使用HAVING短语指定筛选条件。

Sname,SELECTSno

例21:

查询计算机系选修了3门以上课程的学生的学号。

ANDSage<

CSSdept=‘'

WHERESELECTSnoFROMSC

例13WHERESdept=‘CS'

,SsexSELECTSnameGROUPBYSno

HAVINGCOUNT(*)>

3;

Sdept='

‘ISORSdeptCSWHERESdept='

OR=WHERE子句与HAVING短语的根本区别在于作用对象不同。

WHEREMATH'

子句作用于基本表或视图,从中选择满足条件的元组。

HAVING3、对查询结果排序短语作用于组,从中选择满足条件的组。

课程的学生的学号和成绩,其结果按分数例14:

查询选修了C3的降序排列。

例22:

求基本表S中男同学的每一年龄组(超过50人)有多少,GradeSELECTSno

人?

要求查询结果按人数升序排列,人数相同按年龄降序排列。

C3Cno=WHERE‘'

SELECTSage,COUNT(Sno)

ORDERBYGradeDESC;

WHERESsex='

M'

对同查询结果按所在系升序排列,:

查询全体学生的情况,例15GROUPBYSage一系中的学生按年龄降序排列。

50SELECT*ORDERBY2,SageDESC;

,ORDERBYSdepSageDESC;

二、多表查询

1、联接查询4.聚合函数的使用例23:

16:

例SELECTS.Sno,Sname,Sage,Ssex,Sdept,Cno,Grade*)(SELECTCOUNTFROMS,SC

WHERES.Sno=SC.Sno;

17例:

DISTINCTSno()COUNTSELECT例24:

查询选修了C2课程且成绩在90分以上的所有学生。

SELECTS.Sno,Sname例18C1:

计算选修了课程的学生平均成绩。

FROMS,SC

)GradeVGASELECT(WHERES.Sno=SC.SnoFROMSC

ANDSC.Cno=‘C2'

C1‘WHERECno=;

ANDSC.Grade>

90;

查询学习C3课程的学生最高分数。

19例

SELECT)Grade(MAX例25:

SELECTS.Sno,Sname,Cname,SC.GradeFROMSC

C

,SC,FROMS

ANDSC.Cno=C.CnoWHERES.Sno=SC.Sno

(1)首先在C表中找出“DB”课程的课程号Cno;

(2)然后在SC表中找出Cno等于第一步给出的Cno集合中的某个元素Cno;

例26(3)最后在S关系中选出Sno等于第二步中Sno集合中某个元),COUNT(DISTINCTS.SnoSELECTSageSC

FROMS,素的元组,取出Sno和Sname送入结果表列。

WHERES.Sno=SC.SnoSELECTSno,Sname

GROUPBYS;

子因此要把满足WHERE由于要统计每一个年龄的学生人数,WHERESnoIN

(SELECTSno句中条件的查询结果按年龄分组,在每一组中的学生年龄相同。

子句应对每一组分开进行操作,在每一组中,年SELECT此时的WHERECnoIN

龄只有一个值,统计的人数是这一组中的学生人数。

(SELECTCno

、嵌套查询1WHERECname=‘DB'

));

(1)带有IN谓词的子查询联接查询方式进行联接,判断某个属性列值指父查询与子查询之间用IN

(2)带有比较运算符的子查询是否在子查询的结果中。

例30:

查询与“张三”在同一个系学习的学生学号、例27:

查询选修了C2课程的学生姓名。

姓名和系别。

SnameSELECT

SELECTSno,Sname,SdeptS

FROM

INWHERESnoFROMS

Sno(SELECTWHERESdept=SC

FROM(SELECTSdeptC2‘'

);

WHERECno=

WHERESname=‘张三'

28例:

查询与“张三”在同一个系学习的学生学号、姓名和系别。

例31:

分析:

SELECTSno,Sname

(1)确定“张三”所在的系;

系学习的学生。

X2()查找所有在WHERESnoIN

SELECTSdept(SELECTSnoFROMS

WHERESname=‘张三'

WHERECno=(SELECTCnoSdept,Sname,SELECTSnoFROMC

WHERECname=‘DB'

‘WHERESdept=X'

把第一步查询嵌入到第二步查询中,用以构造第二步查询的条(3)带有EXISTS谓词的子查询

件。

(1)带有EXISTS谓词的子查询不返回任何实际数据,它只产SS2

SFROMSSname,SELECTSnoSdept逻辑值。

WHERE

S1.Sdept=S2.Sdept例32:

INSdeptWHERE

1.SELECTSnameSELECTSdept(

WHERESnoIN‘张三'

WHERESname=);

(SELECTSno

例:

29WHERECno=‘C2'

S本查询涉及到学号、姓名和课程名三个属性,分别存放在2.SELECTSname

表建立它们C和S表中,但C和SC表没有直接联系,必须通过WHEREEXISTSS→SCC二者的联系。

→(SELECT*基本思路:

SC

WHERESC.Sno=S.SnoANDCno=‘C2'

FROMSCZ

WHEREZ.Sno=X.SnoANDZ.Cno=Y.Cno));

例33:

SELECTSname

WHERENOTEXISTS

(SELECT*

[NOT]EXISTS实际上是一种内、外层互相关的嵌套查询,

只有当内层引用了外层的值,这种查询才有意义。

例34:

查询与“张三”在同一个系学习的学生学号、

SELECTSno,Sname,Sdept

FROMSASS1

WHEREEXISTS

(SELECT*

FROMSASS2

WHERES2.Sdept=S1.SdeptANDS2.Sname=‘张三'

相关子查询

例35:

换言之,在

S表中找学生,在C中不存在一门课程,这个学生没有学。

FROMS

例36:

查询所学课程包含学生S3所学课程的学生学号

分析:

SELECTDISTINCTSno

FROMSCX

WHERENOTEXISTS

FROMSCY

NOTEXISTS

AND'

S3‘WHEREY.Sno=

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

当前位置:首页 > 经管营销

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

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