S(S#,SNAME,SEX,DEPARTMENT),主码是S#;
C(C#,CNAME,TEACHER),主码是C#;
SC(S#,C#,GRADE),主码是(S#,C#)。
在下列关于保持数据库完整性的叙述中,哪一个是不正确的?(可以任意删除关系C中的元组 )
S(S#,SNAME,SEX,DEPARTMENT),主码是S#;
C(C#,CNAME,TEACHER),主码是C#;
SC(S#,C#,GRADE),主码是(S#,C#)。
若要查找姓名中第一个字为“王”的学生的学号和姓名,则下面列出的SQL语句中,哪个(些)是正确的?( Ⅱ )。
Ⅰ. SELECT S#,SNAME FROM S WHERE SNAME=王%
Ⅱ. SELECT S#,SNAME FROM S WHERE SNAME LIKE 王%
Ⅲ. SELECT S#,SNAME FROM S WHERE SNAME LIKE 王_
S(S#,SNAME,SEX,DEPARTMENT),主码是S#;
C(C#,CNAME,TEACHER),主码是C#;
SC(S#,C#,GRADE),主码是(S#,C#)。
若要“查询选修了3门以上课程的学生的学号”,则正确的SQL语句是(SELECT S# FROM SC GROUP BY S# HAVING COUNT(*)> 3 )。
S(S#,SN,SEX,AGE,DEPT)(学号,姓名,性别,年龄,系别);
C(C#,CN)(课程号,课程名称);
SC(S#,C#,GRADE)(学号,课程号,成绩)。
检索学生姓名及其所选修课程的课程号和成绩。正确的SELECT语句是(SELECT S.SN,SC.C#,SC.GRADE FROM S, SC WHERE S.S#=SC.S# )
Ⅰ. SELECT sname FROM s, sc WHERE grade<60
Ⅱ. SELECT sname FROM s WHERE sno IN(SELECT sno FROM sc WHERE grade<60)
Ⅲ. SELECT sname FROM s, sc WHERE s.sno=sc.sno AND grade<60
若要查找分数(grade)不及格的学生姓名(sname),则以上正确的有哪些?(Ⅱ和Ⅲ )
S(S#,SN,SEX,AGE,DEPT)(学号,姓名,性别,年龄,系别);
C(C#,CN)(课程号,课程名称);
SC(S#,C#,GRADE)(学号,课程号,成绩)。
检索所有比“王华”年龄大的学生姓名、年龄和性别。下面正确的SELECT语句是(SELECT SN,AGE,SEX FROM S WHERE AGE>(SELECT AGE FROM S WHERE SN='王华') )。
(NO char(4) NOT NULL,
NAME char(8) NOT NULL,
SEX char(2),
AGE int)
可以插入到STUDENT表中的是(('1031', '曾华',NULL,NULL) )。
Ⅰ.UPDATE S_AVG SET AVG_GRADE=90 WHERE SNO=2004010601
Ⅱ.SELECT SNO, AVG_GRADE FROM S_AVG WHERE SNO=2004010601
S(S#,SNAME,SEX,AGE),SC(S#,C#,GRADE),C(C#,CNAME,TEACHER)。现要查找选修“数据库技术”这门课程的学生的学生姓名和成绩,可使用如下的SQL语句。
SELECT SNAME,GRADE FROM S,SC,C WHERE CNAME=数据库技术 AND S.S#=SC.S# AND__SC.C#=C.C#__。
对于教学数据库的三个基本表:
S(S#,SNAME,AGE,SEX)
SC(S#,C#,GRADE)
C(C#,CNAME,TEACHER)
试用SQL的查询语句表达下列查询:
1)检索LIU老师所讲授课程的课程名。
1)select cname from c where teacher=’liu’
2)检索年龄大于19岁的男学生的学号和姓名。
2)select s#,sname from student where age>19 and sex=’男’
3)检索学号为S1的学生的姓名及所学课程的课程名。
3)select sname,cname from sc,c,s where s.s#=sc.s# and sc.c#=c.c# and s#=’s1’
4)检索SUN同学不学的课程的课程号。
4)select c# from c where c# not in (select c# from s,sc where s.s#=sc.s# and sname=’SUN’)
5)统计每门课程的学生选修人数(超过10人的课程才统计)。要求显示课程号和人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
5)select c#,count(*) from sc group by c# having count(*)>=10 order by 2 desc,1 asc
6)求LIU老师所授课程的每门课程的平均成绩。
6)select c#,avg(grade) from sc,c where c.c#=sc.c# and teacher=’LIU’group by c.c#
7)求年龄大于女同学平均年龄的男学生姓名和年龄。
7)select sname,age from s where age>(select avg(age) from s where sex=’女’)
8)检索姓名以L打头的所有学生的姓名和性别。
8)select sname,sex from s where sname like ‘L%’
9)把低于所有课程总平均成绩的女同学成绩提高5%。
9) update sc set grade=grade+grade*5% where s# in (select s# from sc,s where sc.s#=s.s# and grade<(select avg(grade) from sc))
10)在SC中删除尚无成绩的选课元组。
10)delete from sc where grade is null
对于教学数据库的三个基本表:
S(S#,SNAME,AGE,SEX)
SC(S#,C#,GRADE)
C(C#,CNAME,TEACHER)
试用SQL的查询语句表达下列查询:
1)检索LIU老师所讲授课程的课程号。
1)select c# from c where teacher=’liu’
2)检索年龄小于20岁的女学生的学号和姓名。
2)select s#,sname from student where age<20 and sex=’女’
3)检索学号为S1的学生所学课程的课程名与任课教师名。
3)select cname,teacher from sc,c where sc.c#=c.c# and s#=’s1’
4)检索LI同学不学的课程的课程号。
4)select c# from c where c# not in (select c# from s,sc where s.s#=sc.s# and sname=’LI’)
5)检索至少选修四门课程的学生学号。
5)select s# from sc group by s# having count(*)>=4
6)求选修C2课程的男学生的平均成绩。
6)select avg(grade) from sc,s where s.s#=sc.s# and sex=’男’and c#=’c2’
7)检索学号比WANG同学小,而年龄比他大的学生姓名。
7)select sname from s where s#<(select s# from s where sname=’WANG’) and age>(select age from s where sname=’WANG’)
8)检索姓名以M打头的所有学生的姓名和年龄。
8)select sname,age from s where sname like ‘M%’
9)在表SC中检索成绩为空值的学生学号和课程号。
9)select s#,c# from sc where grade is null
10)把ENGLISH课不及格的成绩全改为60分。
10)update sc set grade=60 where s# in (select s# from c,sc where c.c#=sc.c# and cname=’ENGLISH’ and grade<60)
对于教学数据库的三个基本表:
S(S#,SNAME,AGE,SEX)
SC(S#,C#,GRADE)
C(C#,CNAME,TEACHER)
试用SQL的查询语句表达下列查询:
1)检索“程军”老师所授课程的课程号和课程名。
1)select c#,cname from c where teacher=’程军’
2)检索年龄大于21的男学生学号和姓名。
2)select s#,sname from student where age>21 and sex=’男’
3)检索“李强”同学不学课程的课程号。
3)select c# from c where c# not in (select c# from s,sc where s.s#=sc.s# and sname=’李强’)
4)检索至少选修两门课程的学生学号。
4) select s# from sc group by s# having count(*)>=2
5)检索所有姓刘的学生的平均年龄。
5)select avg(age) from s where sname like ‘刘%’
6)检索选修课程名为“C语言”的学生学号和姓名。
6)select s#,sname from s,sc,c where s.s#=sc.s# and c.c#=sc.c# and cname=’C语言’
7)检索选修课程号为K5的学生学号和姓名。
7)select s.s#,sname from s,sc where s.s#=sc.s# and c#=’K5’
8)在SC表中插入一条新记录(’S5’,’C1’,98)。
8)insert into sc values (’S5’,’C1’,98)
9)查询选修了课程但没有成绩的学生学号及课程号。
9)select s#,c# from sc where grade is null
10)把低于总平均成绩的男生的成绩提高10分。
10) update sc set grade=grade+10 where s# in (select s# from sc where grade<(select avg(grade) from sc)) and sex=’男’
对于教学数据库的三个基本表:
S(S#,SNAME,AGE,SEX)
SC(S#,C#,GRADE)
C(C#,CNAME,TEACHER)
试用SQL的查询语句表达下列查询:
1)检索“数据库原理及应用”课程的课程号。
1)select c# from c where cname=’数据库原理及应用’
2)检索年龄大于20岁的女学生的姓名和性别。
2)select sname,sex from student where age>20 and sex=’女’
3)检索学号为S3的学生所学课程的课程号与成绩。
3)select c#,grade from sc where s#=’s3’
4)检索WANG同学不学的课程的课程号。
4)select c# from c where c# not in (select c# from s,sc where s.s#=sc.s# and sname=’WANG’)
5)统计每门课程的学生选修人数(超过15人的课程才统计)。要求显示课程号和人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
5)select c#,count(*) from sc group by c# having count(*)>=15 order by 2 desc,1 asc
6)求LIU老师所授课程的每门课程的成绩的最高分和最低分。
6)select c#,max(grade),min(grade) from sc,c where c.c#=sc.c# and teacher=’LIU’group by c.c#
7)求年龄大于所有女同学年龄的男学生姓名和年龄。
7)select sname,age from s where age>(select avg(age) from s where sex=’女’) and sex=’男’
8)检索姓名以Y打头的所有教师所教授课程的课程号和课程名。
8)select c#,cname from c where teacher like ‘Y%’
9)在表SC中,当某个成绩低于全部课程的平均成绩时,提高5%。
9)update sc set grade=grade+grade*5% where grade<(select avg(grade) from sc)
10)在SC中删除尚无成绩的选课元组。
10)delete from sc where grade is null
现有如下关系:
学生S(S#,SNMAE,AGE,SEX)
学习SC(S#,C#,GRADE)
课程C(C#,CNAME,TEACHER)
用SQL语言完成下列功能:
1)统计有学生选修的课程门数。
1)select count(distinct c#) from sc
2)求选修C4课程的学生的平均年龄。
2)select avg(age) from s where s# in (select s# from sc where c#=’c4’)
3)求李文老师所授课程的每门课程的学生平均成绩和最高成绩。
3)select c#,max(grade),min(grade) from sc,c where c.c#=sc.c# and teacher=’李文’group by c.c#
4)检索姓名以王打头的所有学生的姓名和年龄。
4)select sname,age from s where sname like ‘王%’
5)检索比“张三”年龄大的学生学号、姓名和年龄。
5)select s#,sname,age from s where age>(select age from s where sname=’张三’)
6)检索所有选修“C1”课程的学生学号、姓名及成绩,并将结果按成绩降序排列。
6)select s#,sname,grade from s# in (select s# from sc where c#=’c1’) order by grade desc
7)检索“李强”同学不学课程的课程号。
7)select c# from c where c# not in (select c# from s,sc where s.s#=sc.s# and sname=’李强’)
8)往基本表S中插入一个学生元组(’S9’,’WU’,18,’F’)。
8)insert into s values(’S9’,’WU’,18,’F’)
9) 把低于总平均成绩的女同学的成绩提高10分。
9) update sc set grade=grade+10 where s# in (select s# from sc where grade<(select avg(grade) from sc)) and sex=’女’
10) 把王林同学的选课记录全部删除。
10)delete from sc where s#=(select s# from s where sname=’王林’)
现有图书借阅关系数据库如下:
图书(图书号,书名,作者,单价,库存量)
读者(读者号,姓名,工作单位,地址)
借阅(图书号,读者号,借期,还期,备注)其中,还期为NULL表示该书未还。
用SQL语言实现下列查询:
1)检索读者号为R6的读者姓名、工作单位。
1)select 姓名,工作单位 from 读者where 读者号=’R6’
2)检索借阅图书号为B6的读者姓名。
2)select 姓名 from 读者 a,借阅 b where a.读者号=b.读者号 and 图书号=’B6’
3)检索读者“李红”所借图书的书名。
3)select 书名 from 图书 a,读者 b,借阅 c where a.图书号=c.图书号 and b.读者号=c.读者号 and 姓名=’李红’
4)检索读者号为R1的读者所借图书中未还的书名。
4)select 书名 from 图书 a,借阅 b where a.图书号=b.图书号 and 读者号=’R1’ and 还期 is null
5)检索书名为“操作系统”的图书的最高单价和最低单价。
5)select max(单价),min(单价) from 图书 where 书名=’操作系统’
6)检索单价在20到30元(包含20和30)之间的图书的书名及库存量。
6)select 书名,库存量 from 图书 where 单价between 20 and 30
7)检索所有姓王的读者所借图书的图书号、借期和还期。
7)select 图书号,借期,还期 from 借阅 where 读者号 in (select 读者号from 读者 where 姓名like ’王%)
8)检索与“张三”同一工作单位的读者号和读者姓名。
8)select 读者号,姓名 from 读者where 工作单位=(select 工作单位 from 读者where 姓名=’张三’)
9)将读者“李红”所借图书的信息从借阅表中删除。
9)delete from 借阅 where 读者号 in (select 读者号 from 读者where 姓名=’李红’)
10)将读者号为R2的读者所借图书的还期增加10天。
10)update 借阅 set 还期=还期+10 where 读者号=’R2’