SQL查询复习.docx

上传人:b****6 文档编号:4350116 上传时间:2022-11-30 格式:DOCX 页数:12 大小:18.80KB
下载 相关 举报
SQL查询复习.docx_第1页
第1页 / 共12页
SQL查询复习.docx_第2页
第2页 / 共12页
SQL查询复习.docx_第3页
第3页 / 共12页
SQL查询复习.docx_第4页
第4页 / 共12页
SQL查询复习.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

SQL查询复习.docx

《SQL查询复习.docx》由会员分享,可在线阅读,更多相关《SQL查询复习.docx(12页珍藏版)》请在冰豆网上搜索。

SQL查询复习.docx

SQL查询复习

 数据查询

一、目的与要求

1.掌握SELECT语句的基本语法。

2.掌握子查询的表示。

3.掌握连接查询的表示。

4.掌握SELECT语句的统计函数的作用和使用方法。

5.掌握SELECT语句的GROUPBY和ORDERBY子句的作用和使用方法。

二、实验准备

1.了解SELECT语句的基本语法格式。

2.了解SELECT语句的执行方法。

3.了解子查询的表示方法。

4.了解SELECT语句的统计函数的作用。

5.了解SELECT语句的GROUPBY和ORDERBY子句的作用。

三、实验步骤

1.将FTP下实验文件夹下的stu_c.txt文件拷到本地盘,打开后,在SQL查询分析器中执行,生成STUDENT、COURSE、SC三张表。

将所有运行通过的SQL语句保存在文档中。

请认真观察每张表的表名、属性及表之间的联系

2.SELECT语句的基本使用

(1)分别查询STUDENT、COURSE、SC的基本信息。

SELECT*FROMStudent;

(2)查询全体学生的姓名、学号、所在系、家庭地址。

SELECTSname,Sno,Sdept,SaddrFROMStudent;

(3)查询全体学生的姓名、出生年份和所在系、班级,要求用小写字母表示所在系名,并用别名表达列标题。

SELECTsname姓名,2010-sage出生年份,lower(sdept)系别,class班级FROMStudent;

(4)查询那些学生选修了课程。

SELECTdistinctsnoFROMSCWHEREgradeisnull;

(5)查询所有年龄在20岁以上的学生姓名、班级及其年龄。

SELECTsname,class,sageFROMStudentWHEREsage>20;

(6)查询年龄在17~19岁(包括17岁和19岁)之间的学生的姓名、系别、班级和年龄。

SELECTsname,sdept,class,sageFROMStudentWHEREsagebetween17and19;

(7)查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。

SELECTsname,ssexFROMStudentWHEREsdeptnotin(‘IS’,’MA’,’cs’);

(8)查询所有姓张学生的姓名、学号和性别。

SELECTsname,sno,ssexFROMStudentWHEREsnamelike‘张%’;

(9)查询姓"欧阳"且全名为四个汉字的学生的姓名。

SELECTsnameFROMStudentWHEREsnamelike’欧阳__’;

(10)查询所有家庭地址中包含‘成都’的同学的基本信息

SELECT*FROMStudentWHEREsaddrlike‘%成都%’;

2.单表查询

(1)查询信息系(IS)、数学系(MA)和计算机科学系(CS)中女学生的姓名和性别

(分别用inand和andor两种方式查询)

SELECTsname,ssex

FROMStuden

WHEREsdeptin(‘IS’,’CS’,’MA’)andssex=’女’;

SELECTsname,ssex

FROMStudent

WHERE(sdept=’IS’orsdept=’CS’orsdept=”MA’)andssex=’女’;

(2)查询选修表中1号课程成绩为空(即1号课程选修了而未参加考试)的同学学号.

SELECTsnoFROMSCWHEREgradeisnullandcno=’1’;

(3)查询课程表中第三学期开设了那些选修课.

SELECT*FROMCourseWHEREctype=’选修’;

(4)查询SC的基本信息,结果按学号升序排列,同一学号按课程号降序排列.

SELECT*FROMSCorderby

(5)查询学生表的学号、姓名、班级,结果按班级号升序排列。

SELECTFROMStudent,Course,SCWHEREorderbysno,classdesc

(6)查询学生表的学号、姓名、班级,结果按班级号升序排列,同一班级学生按学号升序排列。

SELECTsno,sname,classFROMStudentWHEREorderbyclass,snodesc

(7)查询家在成都的信息系(IS)的男同学基本信息。

SELECT*FROMStudentWHEREsaddrlike‘%成都%’andssex=’男’;

(8)查询200507班的女同学的姓名、学号。

SELECTsname,snoFROMStudentWHEREclass=’200507’;

3.SELECT语句的连接查询(用连接查询)

(1)列出“计算机”(CS)系选修了编号为“2”的课程的学生的学号和姓名

SELECTsname,student.sno

FROMStudent,SC

WHEREstudent.sno=sc.snoandsdept=’CS’andcno=’2’

(2)列出选修了学分大于3,并且成绩不及格的学生的学号、姓名、课程编号

SELECTsc.sno,sname,o

FROMStudent,course,SC

WHEREstudent.sno=sc.snoando=oandgrade<60andccredit>3;

(3)列出“信息”(IS)、“数学”(MA)、“计算机”三个系的学生成绩在85分以上的选修课程编号、成绩;

SELECTdistinctcno,grade

FROMStudent,SC

WHEREstudent.sno=sc.snoando=o

Andvsdeptin(‘IS’,’MA’,’CS’)andgrade>85;

(4)查询成绩在80到90分之间的学生的学号、姓名、选修的课程名称、成绩

SELECTsc.sno,sname,cname,grade

FROMStudent,Course,SC

WHEREstudent.sno=sc.snoando=oandgradebetween80and90;

(6)查询所有学生的学号、姓名、选修的课程名及成绩(并对其按学号升序排序、课程名降序排列。

SELECTsc.sno,sname,cname,grade

FROMStudent,Course,SC

WHEREstudent.sno=sc.snoando=o

orderbysc.sno,cnamedesc;

(7)查询选修“数据库”这门课且成绩在85分以上的所有学生的学号、姓名,并对其按学号升序排序

SELECTsc.sno,sname

FROMStudent,Course,SC

WHEREstudent.sno=sc.snoando=oandcname=’数据库’

Andgrade>=85

Orderbysno

(8)查询学分在2-4范围内的课程的基本信息

SELECT*FROMCourseWHEREccreditbetween2and4

(9)查找选修了2号课程,并且成绩在85-----100之间的学生的学号、姓名、所在系、成绩,结果以成绩降序排列,成绩相同者以学号升序排列

SELECTsc.sno,sname,sdept,grade

FROMStudent,SC

WHEREstudent.sno=sc.snoandcno=’2’andgradebetween85and100

Orderbygradedesc,sc.sno

(10)查询信息系选修“PASCAL语言”课程的同学学号及姓名

SELECTsc.sno,sname

FROMStudent,Course,SC

WHEREstudent.sno=sc.snoando=oand

Cname=’PASCAL语言’;

(11)列出所有学生的的学号、姓名、不及格的课程编号及具体成绩

SELECTsc,sno,sname,cno,grade

FROMStudent,SC

WHEREstudent.sno=sc.snoandgrade<60;

(12)列出所有课程的选修情况,包括没有选的课程信息

SELECT*FROMCoursejoinleftouterSCo=o’

(13)列出所有同学的选课信息,包括未选课的同学

SELECT*FROMStudentjoinleftSCstudent.sno=sc.sno

4.聚合函数及分组查询

(1)统计有成绩的学生的人数。

SELECTcount(distinctsno)

FROMSC

WHEREgradeidnull

(2)统计编号为“2”的课程的平均成绩。

SELECTavg(grade)FROMSCWHEREcno=’2’;

(4)求全校有多少个系。

SELECTcount(distinctsdept)FROMStudent

(5)求“MA”系成绩大于85分的学生的人数。

SELECTcount(distinctsc.sno)

FROMStudent,SC

WHEREstudent.sno=sc.snoandgrade>=85;

(6)求学号为“95001”的学生的总分和平均分。

SELECTsum(grade),avg(grade)

FROMSC

WHEREsno=’95001’;

(7)查询“1”号课程的最高分、最低分及之间相差的分数。

SELECTmax(grade),min(grade),max(grade)-min(grade)

FROMSCWHEREcno=’1’;

(8)求“计算机”系学生的人数。

SELECTcount(sno)FROMStudentWHEREsdept=’CS’;

(9)查询每门课的选课人数及平均成绩。

SELECTcno,count(sno)FROMSC

Groupbycno

(10)查询有两门课以上不及格的学生学号及不及格的课程门数。

SELECTsno,count(cno)

FROMSC

WHEREgrade<60

Groupbysno

Havingcount(cno)>=2;

(11)统计每门选修课程不及格的人数,列出课程编号和不及格的人数。

SELECTcno,count(sno)

FROM,SC

WHEREgrade<60

Groupbycno

(12)统计每个同学所修的学分总数

SELECTsno,sum(ccredit)

FROMCourse,SC

WHEREo=o

Groupbysno

(13)查询每个系的学生人数、并按人数的降序排列。

SELECTsdept,count(sno)

FROMStudent

Groupbysdept

Orderbycount(sno)desc;

(15)查询每门课的平均分、最高分、最低分。

SELECTavg(grade),max(grade),min(grade)

FROMSC

Groupbycno

(17)分课程统计成绩在85分以上的学生的人数,列出课程编号、课程名称和学生人数

SELECTo,cname,count(sno)

FROMCourse,SC

WHEREo=oandgrade>=85

Groupbyo,sname

(18)列出平均成绩在85分以上的学生的学号和姓名

SELECTsc.sno,sname

FROMStudent,SC

Groupbysc.sno,sname

Havingavg(grade);

(20)列出选修人数小于5的课程的编号和实际选修人数

SELECTcno,count(sno)

FROMSC

Groupbycno

Havingcount(sno)<5;

(21)列出“信息”系每个学生不及格的课程门数

SELECTsc.sno,count(cno)

FROMStudent,SC

WHEREstudent.sno=sc.snoandsdept=’IS’andgrade<60

Groupbysc.sno

嵌套查询(子查询)

(1)查询选修了一号课程的同学姓名

ELECTsnameFROMStudent

WHEREsnoin(selectsno

Fromsc

Wherecno=’1’)

(2)查找家庭住址包含“成都”的学生选修的课程的名称。

SELECTcnameFROMCourse

WHEREcnoin(selectcno

Fromsc

Wheresnoin(selectsno

Fromstudent

Wheresaddrlike(%成都%));

(3)查询选修了数据库这门课的同学的学号、姓名

SELECTsno,snameFROMStudent

WHEREsnoin(selectsno

Fromsc

Wherecnoin(selectcno

Fromcourse

Wherecname=’数据库’));

(4)查询选修了‘1’号课程,并且成绩在该课程平均分以下的学生的学号、姓名、成绩

SELECTsc.sno,sname,grade

FROMStudent,SC

WHEREstudent.sno=sc.snoandcno=’1’andgrade<

(selectavg(grade)

Fromsc

Wherecno=’1’);

(5)查询选修了“数据库系统”这门课且成绩在85分以上的所有学生的学号、姓名。

SELECTsno,sname

FROMStudent

WHEREsnoin(selectsno

Fromsc

Grade>=85andcnoin(selectcno

Fromcourse

Wherecname=’数据库’);

(7)列出选修的课程学分都大于3的学生的学号、姓名

SELECTsno,snameFROMStudent

WHEREsnoin(selectsno

Fromsc

Wherecnoin(selectcno

Fromcoursewhereccredit>3));

(8)查询其他系中比信息系所有学生年龄都小的学生姓名及年龄

SELECTsname,sage

FROMStudent

WHEREsdept<>’IS’andsage

Fromstudent

Wheresdept=’IS’);

(9)查询同时选修了一号课程和选修了二号课程的同学姓名。

SELECTsnameFROMStudent

WHEREsnoin(selectsno

Fromsc

Wherecno=’1’andsnoin(selectsno

Fromsc

Wherecno=’2’));

(10)列出“2”号课程得分最高的学生的学号,姓名,成绩

SELECTsc.sno,sname,grade

FROMStudent,SC

WHEREcno=’2’andgrade>=all(selectgrade

Fromsc

Wherecno=’2’);

1.列出没有任何一门课成绩不及格的学生的学号、姓名

SELECTsno,sname

FROMStudent

WHEREsnonotin(selectsno

Fromsc

Grade<60);

2.查询李丽同学不学的课程的课程号

SELECTcnoFROMCourse

WHEREcnonotin(selectcno

Fromsc

Wheresnoin(selectsno

Fromstudent

Wheresname=’李丽’));

3.求年龄最大的学生姓名

SELECTsnameFROMStudent

WHEREsage>=(selectmax(sage)

Fromstudent);

4.求年龄最小的学生姓名

SELECTsnameFROMStudent

WHEREsage<=all(selectdistinctsage

Fromstudent);

5.求得分最低的学生的姓名、课程名及成绩

SELECTsname,cname,grade

FROMStudent,Course,SC

WHEREstudent.sno=sc.snoando=oand

Grade<=(selectmin(grade)

Fromsc);

6.求未选修3号课程的同学学号。

SELECTsnoFROMStudent

WHEREsnonotin(selectsno

Fromsc

Wherecno=’3’);

7.求平均成绩最高的学生的姓名及平均分

SELECTsname,avg(grade)

FROMStudent,SC

Wherestudent.sno=sc.sno

Groupbysname

Havingavg(grade)>=all(selectavg(grade)

Fromsc

Groupbysno);

8.列出既有成绩不及格又有成绩在85分以上的学生的学号,姓名

Selectsno,sname

Fromstudent

Wheresnoin(selectsno

Fromsc

Wheregrade>85andsnoin(selectsno

Fromsc

Wheregrade<60));

更新

(1)将本人信息插入STUDENT表中

insertintostudent

values('95066','李勇智','男',21,'CS','200506','四川省成都市光华村街55号一银杏203');

(2)插入一条课程信息:

(课程编号“16”,课程名“面向对象程序设计”,先和行课号7,学分4,)

Insertintocourse(cno,cname,cpno,ccredit)

Values(‘16’,’面向对象程序设计’,’7’,4)

(2)向SC表中插入一条选课记录(’95010’,’16’,85)

Insertinto

Values(‘95010’,’16’,85)

(3)删除‘95009’同学选课的记录

Delete

Fromscwheresno=’95009’

(4)删除“数学”系所有学生的选课信息

Delete

Fromsc

Wheresnoin(selectsno

Fromstudent

Wheresdept=’MA’)

(5)将“2”课程的成绩增加5分

Updatesc

Setgrade=grade+5

Wherecno=’2’

(6)将学生选修的学分大于4的课程的成绩增加5分

Updatesc

Setgrade=grade+5

Wherecnoin(selectcno

Fromcourse

Whereccredit>=4);

(7)将“1”号课程中成绩大于82分的同学分数提高3分。

Updatesc

Setgrade=grade+3

Wherecno=’1’andgrade>82

(8)把所有选修了1号课程的同学的成绩增加5分。

(9)将选修了‘数据库’这门课的同学的该课程分数提高5分。

Updatesc

Setgrade=grade+5

Wherecnoin(selectcno

Fromcourse

Wherecname=’数据库’);

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

当前位置:首页 > 初中教育 > 其它课程

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

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