mysql语言练习题

教学管理数据库的三个基本表
S(SNO,SNAME, SEX, AGE,SDEPT)
SC(SNO,CNO,GRADE)
C(CNO,CNAME,CDEPT,TNAME)
试用SQL查询语句表达下列查询:
(1) 查询“王志强”所授课程的课程号和课程名。
(2) 查询年龄大于20岁的男学生的学号和姓名。
(3) 查询学号为S6的学生所学课程的课程名和任课教师名。
(4) 查询至少选修“王志强”老师所授课程中一门课程的女学生姓名。
(5) 查询“李小刚”同学不学的课程的课程号。
(6) 查询至少选修两门课程的学生学号。
(7) 统计有学生选修的课程门数。
(8) 求选修C4号课程的学生的平均年龄。
(9) 求“王志强”老师所授课程的每门课程的学生平均成绩。
(10) 统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
(11) 查询姓“王”的所有学生的姓名和年龄。
(12) 在SC中查询成绩为空值的学生学号和课程号。
(13) 查询年龄大于女同学平均年龄的男学生姓名和年龄。

设3个基本表都在JXGL这个数据库中
(1)USE JXGL;
SELECT CNO,CNAME
FROM C
WHERE TANME=‘王志强’;
(2)USE JXGL;
SELECT SNO,SANME
FROM S
WHERE AGE>20 AND SEX=‘男’;
(3)方法一:
USE JXGL;
SELECT CNAME,TNAME
FROM SC JOIN C ON SC.CNO=C.CNO AND
SNO=‘S6’ ;
方法二:
USE JXGL;
SELECT CNAME,TNAME
FEOM C
WHERE CNO IN(SELECT CNO
FROM SC
WHERE SNO=‘S6’));
(4)USE JXGL;
SELECT SNAME
FROM S
WHERE SEX=‘女’ SNO IN(SELECT SNO
FROM SC
WHERE CNO IN(SELECT CNO
FROM C
WHERE TNAME =‘王志强’));
(5)方法一:
USE JXGL;
SELECT CNO
FROM C
WHERE CNO NOT IN (SELECT CNO
FROM S,SC
WHERE S.SNO=SC.CNO AND S.SNAME=‘李小刚’);
方法二:USE JXGL;
SELECT CNO
FROM C
EXCEPT SELECT CNO
FROM S
JOIN SC ON S.SNO= SC.SNO AND S.SNME=‘李小刚’;
(6)USE JXGL;
SELECT SNO,COUNT(CNO) AS NUM
FROM SC
GROUP BY SNO HAVING COUNT(CNO)>1;
(7)USEJXGL;J
SELECT COUNT(DISTINCT CNO)
FROM SC;
(8)方法一:
USE JXGL;
SELECT AVG(AGE)
FROM S
WHERE SNO IN(SELECT SNO
FROM SC WHERE CNO=‘C4’);
方法二:
USE JXGL;
SELECT AVG(AGE)
FROM S JOIN SC ON S.SNO=SC.SNO AND
CNO=‘C4’;
(9)方法一:
USE JXGL;
SELECT SC.CNO AVG(GRADE)
FROM SC
WHERE CNO IN(SELECT CNO
FROM C
WHERE TNAME=‘王志强’) GROUP
BY SC.CNO;
方法二:
USE JXGL;
SELECT SC.CNO AVG(GRADE)
FROM SC
JOIN C ON SC.CNO=C.CNO AND
TNAME=‘王志强’ GROUP BY
SC.CNO;
(10)USE JXGL;
SELECT CNO ,COUNT(SNO)
FROM SC
GROUP BY CNO HAVING
COUNT(*)>10 ORDER BY 2 DESC,1;
(11)USE JXGL;
SELECT SNAME, AGE
FROM S
WHERE SNAME LIKE ‘王%’;
(12)USE JXGL;
SELECT SNO,CNO
FROM SC
WHERE GADER IS NULL;
(注:这里的is不能用=)
(13)USE JXGL;
SELECT SNAME,AGE
FROM S
WHERE SEX=‘男’ AND AGE>(SELECT
AVG(AGE)
FROM S
WHERE SEX=‘女’);

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值