学生选课数据库SQL语句练习题(详细分解答案)
sql语句练习题及答案

一在数据库 school 中建立student , sc, course 表。
学生表、课程表、选课表属于数据库 School ,其各自的数据结构如下:学生 Student (Sno,Sname,Ssex,Sage,Sdept)课程表 course(Cno,Cname,Cpno,Ccredit)学生选课 SC(Sno,Cno,Grade)二设定主码1 Student表的主码:sno2 Course表的主码:cno3 Sc表的主码:sno,cno1写出使用 Create Table 语句创建表 student , sc, course 的SQL语句create table student(sno char(6),sname varchar(8),ssex char(2),sage smallint,sdept varchar(15),primary key(sno));Create table course(Cno char(4) primary key,Cname varchar(20),Cpno char(4),Ccredit tinyint)create table sc(sno char(6),cno char(4),grade decimal(12,2),primary key(sno,cno));c2在student表中插入信息insert into studentvalues( ’4001’,’赵茵’,’男’,20,’SX’)insert into studentvalues( ’4002’,’杨华’,’女’,21,’JXJ’)Delete1 删除所有 JSJ 系的男生delete from Student where Sdept=’JSJ’ and Ssex=’男’;2 删除“数据库原理”的课的选课纪录delete from SC where Cno in (select Cno fromCourse where Cname=’数据库原理’);Update1 修改 0001 学生的系科为: JSJUpdate student set sdept=’JSJ’ where sno=’0001’2 把陈小明的年龄加1岁,性别改为女。
SQL语句练习及参考答案

SQL语句练习及参考答案SQL 语句练习1.设学⽣选课数据库有关系S (sno,sname,age,sex )、SC (sno,cno,grade )和C(cno,cname,teacher ),分别表⽰学⽣、选课和课程,sno 代表学号,sname 代表学⽣姓名,age 代表年龄,sex 代表性别,grade 代表成绩,cno 代表课程号,teacher 代表任课教师。
试完成表⽰下列查询。
(1)检索年龄⼤于21的男学⽣学号(sno)和姓名(sname)。
(2)建⽴性别只能为“男”、“⼥”的约束。
(3)创建⼀个视图v1,该视图⽤来查询学⽣的选课情况,要求包含:学⽣姓名(sname),课程名(cname),任课教师teacher 和成绩grade 。
(4)检索选修课程号为k1和k5的学⽣学号(sno)。
(5)检索全部学⽣都选修的课程的课程号(cno)和课程名(cname)。
(6)删除所有男同学的选课记录。
1.(1)select sno,snae from s where sex=’男’ and age>21 (2)alter table s add constraint c1 check sex in (‘男’,’⼥’)(3)create view v1 as select sname,cname,teacher,grade from s,sc,c where s.sno=sc.sno and/doc/62176c89fe4733687e21aaca.html o=/doc/62176c89fe4733687e21aaca.html o (4)select sno fromsc sc1 where cno=’k1’ and exists (se lect * fromsc sc2 where sc1.sno =sc2.sno and/doc/62176c89fe4733687e21aaca.html o=’k5’)(5)select cno,cnam from c where not exists (select * from s where not exists (select * from sc where/doc/62176c89fe4733687e21aaca.html o=/doc/62176c89fe4733687e21aaca.html o and s.sno=sc.sno)(6)delete from sc where sno in (select sno from s where sex=’男’)或delete sc from sc,s where s.sno=sc.sno and sex=’男’2.设图书借阅数据库有关系图书(图书编号,书名,作者,出版社,出版时间,图书类别)、读者(读者编号,姓名,读者类别)和借阅(读者编号, 图书编号, 借阅⽇期,还期)。
SQL语句(有答案)

一. SQL语句【1】(C226)下列关于SQL语言特点的描述中,错误的是( )。
A)语言非常简洁B)是一种一体化语言C)是一种高度过程化的语D)可以直接以命令方式交互使用,也可以程序方式使用【2】1103(7)负责数据库中查询操作的数据库语言是A)数据定义语言B)数据管理语言C)数据操作语言D)数据控制语言【3】Y3(18)SQL语言的核心是( )。
A)数据操纵B)数据定义C)数据查询D)数据定义【4】Y1(24)VisualFoxPro在SQL方面,不支持的功能是( )。
A)数据控制B)数据操纵C)数据查询D)数据定义【5】Y4(30)下列选项中,不属于SQL特殊运算符的是( )。
A)GROUP B)ON C)ALL D)EMPTY二. SQL查询语句【1】0904(12)SQL语句的查询语句是A) INSERT B)UPDATE C) DELETE D) SELECT【2】(C126)标准的SQL基本查询语句的格式是( )。
A)SELECT…FROM…WHERE B)SELECT…WHERE…FROM C)SELECT…WHERE…GROUP BY D)SELECT…FROM…ORDER BY 【3】Y3 (25)SQL语句中,SELECT语句中的JOIN是用来建立表间的联系短语应放在下列哪个短语之后( )。
A)FROM B)WHERE C)ON D)GROUP BY【4】Y2(20)SQL语句中,SELECT命令中的JOIN是用来建立表间的联系短语,连接条件应出现在下列哪个短语中A)WHERE B)ON C)HAVING D)INNER【5】Y4(17)SQL SELECT语句中的WHERE用于说明( )。
A)查询数据B)查询条件C)查询分组D)查询排序【6】Y4(18)SQL语句可以进行多个查询的嵌套,但Visual FoxPro中只支持( )层嵌套。
A)1 B)2 C)3 D)无穷【7】(C128)在Visual FoxPro中,嵌套查询是基于( )的查询A)2个关系B)3个关系C)多个关系D)2个或3个关系【8】0704 (17)以下有关SELECT语句的叙述中错误的是A)SELECT语句中可以使用别名B)SELECT语句中只能包含表中的列及其构成的表达式C)SELECT语句规定了结果集中的顺序D)如果FROM短语引用的两个表有同名的列,则SELECT短语引用它们时必须使用表名前缀加以限定【9】0504 (31) 在Visual FoxPro中,以下有关SQL的SELECT语句的叙述中,错误的是 ( )。
学生选课数据库SQL语句练习题

学生选课数据库SQL语句练习题一、设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。
四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。
用SQL语句创建四个表并完成相关题目。
表1-1数据库的表结构表(一)Student属性名数据类型可否为含义空Sno Char(3) 否学号(主码)Sname Char(8) 否学生姓名Ssex Char(2) 否学生性别Sbirthday datetime 可学生出生年月Class Char(5) 可学生所在班级表(二)Course含义属性名数据类型可否为空Cno Char(5) 否课程号(主码)Cname Varchar(10) 否课程名称Tno Char(3) 否教工编号(外码)表(三)Score属性名数据类型可否为含义空Sno Char(3) 否学号(外码)Cno Char(5) 否课程号(外码)Degree Decimal(4,1) 可成绩主码:Sno+ Cno表(四)Teacher含义属性名数据类型可否为空Tno Char(3) 否教工编号(主码)Tname Char(4) 否教工姓名Tsex Char(2) 否教工性别Tbirthday datetime 可教工出生年月Prof Char(6) 可职称Depart Varchar(10) 否教工所在部门表1-2数据库中的数据表(一)StudentSno Sname Ssex Sbirthday class 108 曾华男1977-09-950330195031 105 匡明男1975-10-0295033 107 王丽女1976-01-2395033 101 李军男1976-02-20109 王芳女1975-02-1095031103 陆君男1974-06-0395031表(二)CourseCno Cname Tno3-105 计算机导论8253-245 操作系统8046-166 数字电路8569-888高等数学831 表(三)Score Sno Cno Degree 103 3- 24586105 3-24575109 3-24568103 3-10592105 3-105109 3-10576101 3-10564107 3-91105108 3-10578101 6-16685107 6-16679108 6-16681表(四)TeacherTno Tname Tsex Tbirthday Prof Depart 804 李诚男1958-12-02 副教授计算机系856 张旭男1969-03-12 讲师电子工825 王萍女1972-05-05 助教计算机系831 刘冰女1977-08-14 助教电子工程系1、查询Student表中的所有记录的Sname、Ssex和Class列。
3-SQL语句练习题参考答案

标准SQL语言一、选择题1、下面关于SQL标准的叙述中,不正确的是(B )。
A.SQL语言是集数据定义、数据操纵、数据控制功能为一体的语言。
B.SQL语言是一种高度过程化的语言。
C.SQL标准规定数据库是按三级模式结构构建。
D.SQL语言是关系型数据库的标准语言。
E.SQL语言是面向集合的语言。
2、SQL语言中,修改基本表结构的语句是( B )。
A.UPDATE B.ALTER C.DROP D.CREATE3、SQL语言中,删除基本表结构的语句是( C )。
A.DELETE B.ALTER C.DROP D.CREATE4、下面关于“视图”的叙述中,不正确的是( C )。
A.视图是一种“虚表”,它的数据被存放在基本表中。
B.视图提供了逻辑数据独立性。
C.不能通过视图来更新数据库中的数据。
D.视图能提供对数据的安全保护。
5、下面关于SELECT语句的叙述中,不正确的是(C)。
A.SELECT产生的结果是一个集合。
B.HA VING子句必须与GROUP BY子句一起使用。
C.可以省略FROM子句。
D.可以省略WHERE子句。
二、填空题1、在使用INSERT语句向一个表中插入元组时,“值列表”中值的个数、(顺序)、类型必须与“列名表”保持一致。
2、在向一个表中插入元组时,对于未指定默认值且(不能取空值)的字段必须赋值。
3、向表中插入元组时,主键的值不能取(NULL )值。
4、在使用DELETE语句时,如果不指定(where 条件)就会将整个表的数据删除。
5、视图是从一个或几个基本表或(视图)导出的表,它与基本表不同,是一个虚表。
三、判断题1、SQL语言是面向集合操作的语言。
√2、可以通过视图来查询数据,但不能通过视图来更新数据库中的数据。
×3、在SQL Server数据库系统中,向表中插入元组时,系统自动为具有标识属性的列赋值。
√4、在SQL Server数据库系统中,向表中插入元组时,对取值类型为timestamp(时间戳)的列不能赋值,系统自动赋值。
数据库sql课后练习题及答案解析

先创建下面三个表:(book表)(borrow表)(reader表)1) 找出姓李的读者姓名(NAME)和所在单位(COMPANY)。
2) 列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。
3) 查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。
4) 查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OU TPUT)和单价(PRICE)升序排序。
5) 查找书名以”计算机”开头的所有图书和作者(WRITER)。
6) 检索同时借阅了总编号(BOOK_ID)为和两本书的借书证号(READER_ID)。
##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。
8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。
9)* 无重复地查询2006年10月以后借书的读者借书证号(READER_ID)、姓名和单位。
##10)* 找出借阅了<FoxPro大全>一书的借书证号。
11) 找出与”赵正义”在同一天借书的读者姓名、所在单位及借书日期。
12) 查询2006年7月以后没有借书的读者借书证号、姓名及单位。
#13) 求”科学出版社”图书的最高单价、最低单价、平均单价。
##14)* 求”信息系”当前借阅图书的读者人次数。
#15) 求出各个出版社图书的最高价格、最低价格和总册数。
#16) 分别找出各单位当前借阅图书的读者人数及所在单位。
17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。
18) 分别找出借书人次数多于1人次的单位及人次数。
19) 找出藏书中各个出版单位的名称、每个出版社的书籍的总册数(每种可能有多册)、书的价值总额。
20) 查询经济系是否还清所有图书。
如果已经还清,显示该系所有读者的姓名、所在单位和职称。
附录:建表语句创建图书管理库的图书、读者和借阅三个基本表的表结构:创建BOOK:(图书表)CREATE TABLE BOOK (BOOK_ID int,SORT VARCHAR(10),BOOK_NAME VARCHAR(50),WRITER VARCHAR(10),OUTPUT VARCHAR(50),PRICE int);创建READER:(读者表)CREATE TABLE READER (READER_ID int,COMPANY VARCHAR(10),NAME VARCHAR(10),SEX VARCHAR(2),GRADE VARCHAR(10),ADDR VARCHAR(50));创建BORROW:(借阅表)CREATE TABLE BORROW (READER_ID int,BOOK_ID int,BORROW_DATE datetime)插入数据:BOOK表:insert into BOOK values(,'TP3/12','数据库导论','王强','科学出版社',17.90); insert into BOOK values(,'TP3/12','数据库导论','王强','科学出版社',17.90); insert into BOOK values(,'TP3/12','数据库导论','王强','科学出版社',17.90); insert into BOOK values(,'TP5/10','计算机基础','李伟','高等教育出版社',18.00);insert into BOOK values(,'TP3/12','FoxBASE','张三','电子工业出版社',23.60);insert into BOOK values(,'TS7/21','高等数学','刘明','高等教育出版社',20.00);insert into BOOK values(,'TR9/12','线性代数','孙业','北京大学出版社',20.80);insert into BOOK values(,'TR7/90','大学英语','胡玲','清华大学出版社',12.50);insert into BOOK values(,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(,'TP4/14','FoxPro大全','周虹','科学出版社',32.70);insert into BOOK values(,'TP4/14','FoxPro大全','周虹','科学出版社',32.70);insert into BOOK values(,'TP4/15','计算机网络','黄力钧','高等教育出版社',21.80);insert into BOOK values(,'TP4/15','计算机网络','黄力钧','高等教育出版社',2 1.80);READER表:insert into reader values(111,'信息系','王维利','女','教授','1号楼424'); insert into reader values(112,'财会系','李立','男','副教授','2号楼316 ');insert into reader values(113,'经济系','张三','男','讲师','3号楼105'); insert into reader values(114,'信息系','周华发','男','讲师','1号楼316'); insert into reader values(115,'信息系','赵正义','男','工程师','1号楼224 ');insert into reader values(116,'信息系','李明','男','副教授','1号楼318 ');insert into reader values(117,'计算机系','李小峰','男','助教','1号楼214 ');insert into reader values(118,'计算机系','许鹏飞','男','助工','1号楼216 ');insert into reader values(119,'计算机系','刘大龙','男','教授','1号楼318 ');insert into reader values(120,'国际贸易','李雪','男','副教授','4号楼506');insert into reader values(121,'国际贸易','李爽','女','讲师','4号楼510 ');insert into reader values(122,'国际贸易','王纯','女','讲师','4号楼512 ');insert into reader values(123,'财会系','沈小霞','女','助教','2号楼202'); insert into reader values(124,'财会系','朱海','男','讲师','2号楼210'); insert into reader values(125,'财会系','马英明','男','副教授','2号楼212 ');BORROW表:insert into borrow values(112,,'3-19-2006');insert into borrow values(125,,'2-12-2006');insert into borrow values(111,,'8-21-2006');insert into borrow values(112,,'3-14-2006');insert into borrow values(114,,'10-21-2006');insert into borrow values(120,,'11-2-2006');insert into borrow values(120,,'10-18-2006');insert into borrow values(119,,'11-12-2006');insert into borrow values(112,,'10-23-2006');insert into borrow values(115,,'8-21-2006');insert into borrow values(118,,'9-10-2006');现有关系数据库如下:数据库名:图书借阅管理系统读者表(读者编号 char(6),姓名,性别,年龄,单位,身份证号,职称)图书表(图书编号char(6),图书名称,出版社,作者)借阅表(读者编号,图书编号,借阅时间)用SQL语言实现下列功能的sql语句代码。
SQL语句练习及标准答案

SQL语句练习及答案————————————————————————————————作者:————————————————————————————————日期:sql语句练习题1数据库有如下四个表格:student(sno,sname,sage,ssex,sdpt) 学生表系表(dptno,dname)course(cno,cname, gradet, tno) 课程表sc(sno,cno,score) 成绩表teacher(tno,tname) 教师表要求:完成以下操作1.查询姓"欧阳"且全名为三个汉字的学生的姓名。
select sname from student where sname like “欧阳__‟;2.查询名字中第2个字为"阳"字的学生的姓名和学号。
select sname,sno from student where sname like '_阳%';3.查询所有不姓刘的学生姓名。
select sname,sno,ssexfrom studentwhere sname not like “刘%”;4.查询db_design课程的课程号和学分。
select cno,ccredit from coursewhere cname like 'db_design'5.查询以"db_"开头,且倒数第3个字符为i的课程的详细情况。
select * from course where cname like 'db%i_ _';6.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。
查询缺少成绩的学生的学号和相应的课程号。
select sno,cno from sc where grade is null;7.查所有有成绩的学生学号和课程号。
select sno,cno from sc where grade is not null;8.查询计算机系年龄在20岁以下的学生姓名。
实验答案(四-五-六)参考答案

实验四简单查询和连接查询1. 简单查询实验用Transact-SQL语句表示下列操作,在“学生选课“数据库中实现其数据查询操作:(1) 查询数学系学生的学号和姓名。
select sno,snamefrom studentwhere dept='数学系';(2) 查询选修了课程的学生学号。
select distinct(sno)from sc;(3) 查询选修课程号为0101的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
select distinct(sno),gradefrom scwhere cno='0101'order by grade desc,sno asc;(4) 查询选修课程号为0101的成绩在80-90 分之间的学生学号和成绩,并将成绩乘以系数0.8 输出。
select distinct(sno),grade*0.8 as'sore'from scwhere cno='0101'and grade between 80 and 90;(5) 查询数学系或计算机系姓张的学生的信息。
select*from studentwhere dept in('数学系','计算机系')and sname like'张%';(6) 查询缺少了成绩的学生的学号和课程号。
select sno,cnofrom scwhere grade is null;2. 连接查询实验用Transact-SQL语句表示,并在“学生选课”数据库中实现下列数据连接查询操作:(1) 查询每个学生的情况以及他(她)所选修的课程。
select student.*,amefrom student,sc,coursewhere student.sno=sc.sno and o=o;(2) 查询学生的学号、姓名、选修的课程名及成绩。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。
四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。
用SQL语句创建四个表并完成相关题目。
表1-1数据库的表结构表(一)Student含义属性名数据类型可否为空Sno Char(3)否学号(主键)Sname Char(8)否学生姓名Ssex Char(2)否学生性别Sbirthday datetime可学生出生年月Class Char(5)可学生所在班级表(二)Course含义属性名数据类型可否为空Cno Char(5)否课程号(主键)Cname Varchar(10)否课程名称Tno Char(3)否教师编号(外键)表(三)Score含义属性名数据类型可否为空Sno Char(3)否学号(外键)Cno Char(5)否课程号(外键)Degree Decimal(4,1)可成绩主码:Sno+ Cno表(四)Teacher含义属性名数据类型可否为空Tno Char(3)否教师编号(主键)Tname Char(4)否教师姓名Tsex Char(2)否教师性别Tbirthday datetime可教师出生年月Prof Char(6)可职称Depart Varchar(10)否教师所在部门表1-2数据库中的数据表(一)StudentSno Sname Ssex Sbirthday class95033108曾华男1977-09-01105匡明男1975-10-950310295033107王丽女1976-01-2395033101李军男1976-02-20109王芳女1975-02-950311095031103陆君男1974-06-03表(二)CourseCno Cname Tno3-105计算机导论8253-245操作系统8046-166数字电路8569-888高等数学831表(三)ScoreSno Cno Degree1033-245861053-245751093-245681033-105921053-105881093-105761013-105641073-105911083-105781016-166851076-166791086-16681表(四)TeacherTno Tname Tsex Tbirthday Prof Depart804李诚男1958-12-02副教授计算机系856张旭男1969-03-12讲师电子工程系825王萍女1972-05-05助教计算机系831刘冰女1977-08-14助教电子工程系-- 1、查询Student表中的所有记录的Sname、Ssex和Class列。
select sname,ssex,class from student;-- 2、查询教师所有的单位即不重复的Depart列。
select distinct depart from Teacher;-- 3、查询Student表的所有记录。
select * from student;-- 4、查询Score表中成绩在60到80之间的所有记录。
select * from score where degree between 60 and 80;-- 5、查询Score表中成绩为85,86或88的记录。
select * from score where degree in(85,86,88);-- 6、查询Student表中“95031”班或性别为“女”的同学记录。
select * from student where class = '95031' or ssex='女';-- 7、以Class降序查询Student表的所有记录。
select * from student order by class desc;-- 8、以Cno升序、Degree降序查询Score表的所有记录。
select * from score order by cno,degree desc;-- 9、查询“95031”班的学生人数。
select class,count(*) as 学生人数 from studentgroup by class having class='95031';-- 10、查询Score表中的最高分的学生学号和课程号。
(子查询或者排序)select sno,cno,degree,(select max(degree) from score) as maxscore--计算最高分from score where degree= (select max(degree) from score);-- 11、查询‘3-105’号课程的平均分。
select avg(degree) as avgdegreefrom score group by cno having cno='3-105';-- 12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
select avg(degree) as avgdegree from score group by cno --按照课程分组取平均值having cno= (select cno from score group by cno having count(*)>=5)--至少有5名学生选修的课程and cno like '3%';--以3开头的课程-- 13、查询最低分大于70,最高分小于90的Sno列。
select sno,max(degree)as maxdegree,min(degree) as mindegree from Score group by snohaving max(degree)<90 and min(degree)>70-- 14、查询所有学生的Sname、Cno和Degree列。
select sname,cno,degree from studentjoin score on student.sno=score.sno;-- 15、查询所有学生的Sno、Cname和Degree列。
select sno,cname,degree from Scorejoin course on o=o;-- 16、查询所有学生的Sname、Cname和Degree列。
select sname,cname,degree from studentjoin score on student.sno=score.snojoin course on o=o;-- 17、查询“95033”班所选课程的平均分。
select avg(degree) as avgdegree from score where sno in(select sno from student where class='95033')18、假设使用如下命令建立了一个grade表:create table grade(low int(3),upp int(3),rank char(1))insert into grade values(90,100,’A’)insert into grade values(80,89,’B’)insert into grade values(70,79,’C’)insert into grade values(60,69,’D’)insert into grade values(0,59,’E’)--现查询所有同学的Sno、Cno和rank列。
select sno,cno,(case when degree between 90 and 100 then 'A'when degree between 80 and 89 then 'B'when degree between 70 and 79 then 'C'when degree between 60 and 69 then 'D'when degree between 0 and 59 then 'E'END) as rank from score;-- 19、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
select * from score where cno='3-105'and degree>(select degree from score where sno='109' and cno='3-105');-- 20、查询score中选学多门课程的同学中分数为非最高分成绩的记录。
select * from score where sno in--选学多门课程的同学中分数为非最高分成绩的同学的全记录(select sno from score group by sno having count(cno)>1--选学多门课程的同学intersect--取交集为选学多门课程的同学中分数为非最高分成绩的同学。
select distinct sno from score where sno not in( --分数为非最高分成绩的同学select sno from score where degree=(select max(degree) from score)))--分数最高成绩的同学-- 21、查询score中选学多门课程的同学中分数为非同课程最高分成绩的记录。
方法1:select * from score where sno in--选学多门课程的同学中分数为非同课程最高分成绩的同学的全记录(select sno from score group by sno having count(cno)>1--选学多门课程的同学intersect--取交集为选学多门课程的同学中分数为非同课程最高分成绩的同学。
select distinct sno from score where sno not in(--非同课程分数最高成绩的同学select distinct sno from score where degree in (--同课程分数最高成绩的同学select max(degree)from score group by cno)))--同课程分数最高成绩方法2:select * from score where sno in--选学多门课程的同学中分数为非同课程最高分成绩的同学的全记录(select sno from score group by sno having count(cno)>1-- 选学多门课程的同学intersect -- 取交集为选学多门课程的同学中分数为同课程非最高分成绩的同学select distinct sno from score where sno not in -- 选出非同课程最高分成绩的同学(select distinct sno from score as s1where degree=(select max(degree) from score as s2 where o=o group by cno)));-- 使用关联子查询选出同课程最高分成绩的同学-- 22、查询1975年之后出生的学生的所学课程以及成绩。