SQL练习

MySQL语句练习(students,courses,scores,teachers )
准备数据
建表语句

CREATE TABLE students
(sno VARCHAR(3) NOT NULL,
sname VARCHAR(4) NOT NULL,
ssex VARCHAR(2) NOT NULL,
sbirthday DATETIME,
class VARCHAR(5))

CREATE TABLE courses
(cno VARCHAR(5) NOT NULL,
cname VARCHAR(10) NOT NULL,
tno VARCHAR(10) NOT NULL)

CREATE TABLE scores
(sno VARCHAR(3) NOT NULL,
cno VARCHAR(5) NOT NULL,
degree NUMERIC(10, 1) NOT NULL)

CREATE TABLE teachers
(tno VARCHAR(3) NOT NULL,
tname VARCHAR(4) NOT NULL, tsex VARCHAR(2) NOT NULL,
tbirthday DATETIME NOT NULL, prof VARCHAR(6),
depart VARCHAR(10) NOT NULL)

插入数据
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (108 ,‘曾华’ ,‘男’ ,‘1977-09-01’,95033);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (105 ,‘匡明’ ,‘男’ ,‘1975-10-02’,95031);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (107 ,‘王丽’ ,‘女’ ,‘1976-01-23’,95033);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (101 ,‘李军’ ,‘男’ ,‘1976-02-20’,95033);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (109 ,‘王芳’ ,‘女’ ,‘1975-02-10’,95031);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (103 ,‘陆君’ ,‘男’ ,‘1974-06-03’,95031);

INSERT INTO COURSES(CNO,CNAME,TNO)VALUES (‘3-105’ ,‘计算机导论’,825);
INSERT INTO COURSES(CNO,CNAME,TNO)VALUES (‘3-245’ ,‘操作系统’ ,804);
INSERT INTO COURSES(CNO,CNAME,TNO)VALUES (‘6-166’ ,‘数据电路’ ,856);
INSERT INTO COURSES(CNO,CNAME,TNO)VALUES (‘9-888’ ,‘高等数学’ ,100);

INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (103,‘3-245’,86);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (105,‘3-245’,75);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (109,‘3-245’,68);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (103,‘3-105’,92);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (105,‘3-105’,88);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (109,‘3-105’,76);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (101,‘3-105’,64);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (107,‘3-105’,91);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (108,‘3-105’,78);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (101,‘6-166’,85);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (107,‘6-106’,79);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (108,‘6-166’,81);

INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (804,‘李诚’,‘男’,‘1958-12-02’,‘副教授’,‘计算机系’);
INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (856,‘张旭’,‘男’,‘1969-03-12’,‘讲师’,‘电子工程系’);
INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (825,‘王萍’,‘女’,‘1972-05-05’,‘助教’,‘计算机系’);
INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (831,‘刘冰’,‘女’,‘1977-08-14’,‘助教’,‘电子工程系’);
题目

1、 查询Student表中的所有记录的Sname、Ssex和Class列。
2、 查询教师所有的单位即不重复的Depart列。
3、 查询Student表的所有记录。
4、 查询Score表中成绩在60到80之间的所有记录。
5、 查询Score表中成绩为85,86或88的记录。
6、 查询Student表中“95031”班或性别为“女”的同学记录。
7、 以Class降序查询Student表的所有记录。
8、 以Cno升序、Degree降序查询Score表的所有记录。
9、 查询“95031”班的学生人数。
10、查询Score表中的最高分的学生学号和课程号。
11、查询‘3-105’号课程的平均分。
12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
13、查询最低分大于70,最高分小于90的Sno列。
14、查询所有学生的Sname、Cno和Degree列。
15、查询所有学生的Sno、Cname和Degree列。
16、查询所有学生的Sname、Cname和Degree列。
17、查询“95033”班所选课程的平均分。
18、假设使用如下命令建立了一个grade表:
create table grade(low number(3,0),upp number(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’);
commit;
现查询所有同学的Sno、Cno和rank列。
19、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
20、查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。
21、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
23、查询“张旭“教师任课的学生成绩。
24、查询选修某课程的同学人数多于5人的教师姓名。
25、查询95033班和95031班全体学生的记录。
26、查询存在有85分以上成绩的课程Cno.
27、查询出“计算机系“教师所教课程的成绩表。
28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。
29、查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.
31、查询所有教师和同学的name、sex和birthday.
32、查询所有“女”教师和“女”同学的name、sex和birthday.
33、查询成绩比该课程平均成绩低的同学的成绩表。
34、查询所有任课教师的Tname和Depart.
35 查询所有未讲课的教师的Tname和Depart.
36、查询至少有2名男生的班号。
37、查询Student表中不姓“王”的同学记录。
38、查询Student表中每个学生的姓名和年龄。
39、查询Student表中最大和最小的Sbirthday日期值。
40、以班号和年龄从大到小的顺序查询Student表中的全部记录。
41、查询“男”教师及其所上的课程。
42、查询最高分同学的Sno、Cno和Degree列。
43、查询和“李军”同性别的所有同学的Sname.
44、查询和“李军”同性别并同班的同学Sname.
45、查询所有选修“计算机导论”课程的“男”同学的成绩表

查询
1.查询Student表中的所有记录的Sname、Ssex和Class列。

SELECT Sname,Ssex,Class
FROM Student;

2.查询教师所有的单位即不重复的Depart列。

SELECT DISTINCT Depart
FROM Teachers;

3.查询Student表的所有记录。

SELECT *
FROM Students;

4.查询Score表中成绩在60到80之间的所有记录。

SELECT *
FROM Scores
WHERE Degree BETWEEN 60 AND 80;

5.查询Score表中成绩为85,86或88的记录。

SELECT *
FROM Scores
WHERE Degree IN (85,86,88);

6.查询Student表中“95031”班或性别为“女”的同学记录。

SELECT *
FROM Students
WHERE Class=‘95031’ OR Ssex=‘女’;

7.以Class降序查询Student表的所有记录。

SELECT *
FROM Students
ORDER BY Class DESC;

8.以Cno升序、Degree降序查询Score表的所有记录。

SELECT *
FROM Scores
ORDER BY Cno,Degree DESC;

9.查询“95031”班的学生人数。

SELECT COUNT(1) AS StuNum
FROM Students
WHERE Class=‘95031’;

10.查询Score表中的最高分的学生学号和课程号。

SELECT Sno,Cno
FROM Scores
ORDER BY Degree DESC
LIMIT 1;

11.查询‘3-105’号课程的平均分。

SELECT AVG(Degree)
FROM Scores
WHERE Cno=‘3-105’;

12.查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。

SELECT Cno,AVG(Degree)
FROM Scores
WHERE Cno LIKE ‘3%’
GROUP BY Cno
HAVING COUNT(Sno) >= 5;

13.查询最低分大于70,最高分小于90的Sno列。

SELECT Sno
FROM Scores
GROUP BY Sno
HAVING MAX(Degree)<90 AND MIN(Degree)>70;

14.查询所有学生的Sname、Cno和Degree列。

SELECT Sname,Cno,Degree
FROM Students INNER JOIN Scores
ON(Students.Sno=Scores.Sno)
ORDER BY Sname;

15.查询所有学生的Sno、Cname和Degree列。

SELECT Sno,Cname,Degree
FROM Scores INNER JOIN Courses
ON(Scores.Cno=Courses.Cno)
ORDER BY Sno;

16.查询所有学生的Sname、Cname和Degree列。

SELECT Sname,Cname,Degree
FROM Students INNER JOIN Scores
ON(Students.Sno=Scores.Sno) INNER JOIN Courses
ON(Scores.Cno=Courses.Cno)
ORDER BY Sname;

17.查询“95033”班所选课程的平均分。

SELECT Cname,AVG(Degree)
FROM Students INNER JOIN Scores
ON(Students.Sno=Scores.Sno) INNER JOIN Courses
ON(Scores.Cno=Courses.Cno)
WHERE Class=‘95033’
GROUP BY Courses.Cno
ORDER BY Cname;

18.假设使用如下命令建立了一个grade表:

CREATE TABLE grade(low TINYINT,upp TINYINT,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,rank
FROM Scores INNER JOIN grade
ON(Scores.Degree>=grade.low AND Scores.Degree<=grade.upp)
ORDER BY Sno;

19.查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。

SELECT s1.Sno,s1.Degree
FROM Scores AS s1 INNER JOIN Scores AS s2
ON(s1.Cno=s2.Cno AND s1.Degree>s2.Degree)
WHERE s1.Cno=‘3-105’ AND s2.Sno=‘109’
ORDER BY s1.Sno;

20.查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。

SELECT *
FROM Scores
GROUP BY Sno
HAVING COUNT(cno)>1 AND Degree!=MAX(Degree);

21.查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。

SELECT s1.Sno,s1.Degree
FROM Scores AS s1 INNER JOIN Scores AS s2
ON(s1.Cno=s2.Cno AND s1.Degree>s2.Degree)
WHERE s1.Cno=‘3-105’ AND s2.Sno=‘109’
ORDER BY s1.Sno;

22.查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。

SELECT s1.Sno,s1.Sname,s1.Sbirthday
FROM Students AS s1 INNER JOIN Students AS s2
ON(YEAR(s1.Sbirthday)=YEAR(s2.Sbirthday))
WHERE s2.Sno=‘108’;

23.查询“张旭“教师任课的学生成绩。

SELECT Sno,Degree
FROM Scores INNER JOIN Courses
ON(Scores.Cno=Courses.Cno) INNER JOIN Teachers
ON(Courses.Tno=Teachers.Tno)
WHERE Teachers.Tname=‘张旭’;

24.查询选修某课程的同学人数多于5人的教师姓名。

SELECT DISTINCT Tname
FROM Scores INNER JOIN Courses
ON(Scores.Cno=Courses.Cno) INNER JOIN Teachers
ON(Courses.Tno=Teachers.Tno)
WHERE Courses.Cno IN(SELECT Cno FROM Scores GROUP BY(Cno) HAVING COUNT(Sno)>5);

25.查询95033班和95031班全体学生的记录。

SELECT *
FROM Students
WHERE Class IN (‘95033’,‘95031’)
ORDER BY Class;

26.查询存在有85分以上成绩的课程Cno.

SELECT DISTINCT Cno
FROM Scores
WHERE Degree>85;

27.查询出“计算机系“教师所教课程的成绩表。

SELECT Tname,Cname,SName,Degree
FROM Teachers INNER JOIN Courses
ON(Teachers.Tno=Courses.Tno) INNER JOIN Scores
ON(Courses.Cno=Scores.Cno) INNER JOIN Students
ON(Scores.Sno=Students.Sno)
WHERE Teachers.Depart=‘计算机系’
ORDER BY Tname,Cname,Degree DESC;

28.查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。

SELECT Tname,Prof
FROM Teachers
WHERE Depart=‘计算机系’ AND Prof NOT IN(
SELECT DISTINCT Prof
FROM Teachers
WHERE Depart=‘电子工程系’);

29.查询选修编号为“3-105“课程且成绩至少高于任意选修编号为“3-245”的同学的成绩的Cno、Sno和Degree,并按Degree从高到低次序排序。

SELECT Cno,Sno,Degree
FROM Scores
WHERE Cno=‘3-105’ AND Degree > ANY(
SELECT Degree
FROM Scores
WHERE Cno=‘3-245’)
ORDER BY Degree DESC;

30.查询选修编号为“3-105”且成绩高于所有选修编号为“3-245”课程的同学的Cno、Sno和Degree.

SELECT Cno,Sno,Degree
FROM Scores
WHERE Cno=‘3-105’ AND Degree > ALL(
SELECT Degree
FROM Scores
WHERE Cno=‘3-245’)
ORDER BY Degree DESC;

31.查询所有教师和同学的name、sex和birthday.

SELECT Sname,Ssex,Sbirthday
FROM Students
UNION
SELECT Tname,Tsex,Tbirthday
FROM Teachers;

32.查询所有“女”教师和“女”同学的name、sex和birthday.

SELECT Sname,Ssex,Sbirthday
FROM Students
WHERE Ssex=‘女’
UNION
SELECT Tname,Tsex,Tbirthday
FROM Teachers
WHERE Tsex=‘女’;

33.查询成绩比该课程平均成绩低的同学的成绩表。

SELECT s1.*
FROM Scores AS s1 INNER JOIN (
SELECT Cno,AVG(Degree) AS aDegree
FROM Scores
GROUP BY Cno) s2
ON(s1.Cno=s2.Cno AND s1.Degree<s2.aDegree);

34.查询所有任课教师的Tname和Depart.

SELECT Tname,Depart
FROM Teachers
WHERE Tno IN(
SELECT Tno
FROM Courses
);

35.查询所有未讲课的教师的Tname和Depart.

SELECT Tname,Depart
FROM Teachers
WHERE Tno NOT IN(
SELECT Tno
FROM Courses
);

36.查询至少有2名男生的班号。

SELECT Class,COUNT(1) AS boyCount
FROM Students
WHERE Ssex=‘男’
GROUP BY Class
HAVING boyCount>=2;

37.查询Student表中不姓“王”的同学记录。

SELECT *
FROM Students
WHERE Sname NOT LIKE ‘王%’;

38.查询Student表中每个学生的姓名和年龄。

SELECT Sname,YEAR(NOW())-YEAR(Sbirthday) AS Sage
FROM Students;

39.查询Student表中最大和最小的Sbirthday日期值。

SELECT MIN(Sbirthday),MAX(Sbirthday)
FROM Students;

40.以班号和年龄从大到小的顺序查询Student表中的全部记录。

SELECT *
FROM Students
ORDER BY Class DESC,Sbirthday ASC;

41.查询“男”教师及其所上的课程。

SELECT Teachers.Tname,Courses.Cname
FROM Teachers INNER JOIN Courses
ON(Teachers.Tno=Courses.Tno)
WHERE Teachers.Tsex=‘男’;

42.查询最高分同学的Sno、Cno和Degree列。

SELECT *
FROM Scores
GROUP BY Cno
HAVING Degree=Max(Degree);

43.查询和“李军”同性别的所有同学的Sname.

SELECT s1.Sname
FROM Students AS s1 INNER JOIN Students AS s2
ON(s1.Ssex=s2.Ssex)
WHERE s2.Sname=‘李军’;

44.查询和“李军”同性别并同班的同学Sname.

SELECT s1.Sname
FROM Students AS s1 INNER JOIN Students AS s2
ON(s1.Ssex=s2.Ssex AND s1.Class=s2.Class)
WHERE s2.Sname=‘李军’;

45.查询所有选修“计算机导论”课程的“男”同学的成绩表

SELECT *
FROM Scores
WHERE Sno IN (
SELECT Sno
FROM Students
WHERE Ssex=‘男’) AND
Cno IN (
SELECT Cno
FROM Courses
WHERE Cname=‘计算机导论’);

查询所有选修“计算机导论”课程的“男”同学的成绩表相关推荐

  1. 计算机导论广东高等教育出版社,计算机导论课程标准.DOC

    计算机导论课程标准.DOC <计算机导论>课程标准 一.课程信息 课程名称:计算机导论 课程类型:专业基础必修课 课程代码:1013001 授课对象:软件工程.网络工程.信息管理与信息系统 ...

  2. 计算机导论分流考试,以学习成果与兴趣培养为导向的计算机导论课程教学改革研究与实践...

    39 2017年12月总第279期 ISSN1672-1438 CN11-4994/T 以学习成果与兴趣培养为导向的计算机导论 课程教学改革研究与实践 谢荣生 朱顺痣 田翠华 厦门理工学院计算机与信息 ...

  3. 《计算机导论》课程论文,计算机导论课程论文

    计算机导论课程是学生学习计算机的基础课程,也蕴含多种内容,所以教育者要注重对学生学习兴趣的培养,及时地更新计算机知识,促进学生对计算机课程的学习.下面是学习啦小编给大家推荐的计算机导论课程论文,希望大 ...

  4. 删除选修c语言课程的女生成绩记录,pta10-1 查询没有选修‘C语言‘课程的学生 (10分)...

    10-1 查询没有选修'C语言'课程的学生 (10分) select sno as 学号,sname as 姓名 from stu where not exists (select * from sc ...

  5. 计算机导论第五讲MOOC模拟答案,MOOC理念指导下的计算机导论课程_微课堂_设计与思考_朱淑鑫...

    MOOC理念指导下的计算机导论课程 "微课堂"设计与思考 朱淑鑫,徐焕良,任守纲,李晓晖 (南京农业大学 信息科学与技术学院,江苏 南京210095) 摘要:在MOOC理念的指导下 ...

  6. 杨月江计算机导论答案,计算机导论课程实验教学大纲-计算机学院-华北科技学院.doc...

    计算机导论课程实验教学大纲-计算机学院-华北科技学院.doc 华 北 科 技 学 院 2010级 实验教学大纲 网络工程系 目 录 TOC \o "1-1" \h \z \u HY ...

  7. 计算机导论教学改革,大学计算机导论课程教学改革探索.docx

    大学计算机导论课程教学改革探索 [摘要]大学计算机导论课程是我校面向所有专业学生开设的第一门计算机类公共基础课程.如何更好地提升大学计算机导论课程的教学质量和落实新形势下人才培养的需求?我们应该从课程 ...

  8. 计算机导论课程论文标题大全,计算机导论课程论文大纲格式模板 计算机导论课程论文大纲怎么写...

    [100个]计算机导论课程论文大纲格式模板供您参考,希望能解决毕业生们的计算机导论课程论文大纲怎么写相关问题,写好提纲那就开始写计算机导论课程论文吧! 五.教育技术学导论课程混合式学习平台及其资源的设 ...

  9. 计算机导论新发展方向,基于新工科的计算机导论课程教学改革研究

    王金环 焦纯 [摘  要]本文针对计算机导论课程教学存在的问题从教学目标设计.教学进程设计.教具的灵活应用和教学验收方法等方面进行了探讨,以期为应用型人才的培养提供重要依据和参考. [关键字]新工科 ...

最新文章

  1. Java学习笔记15
  2. javascript 鼠标事件总结
  3. 0xde c语言合法常量_【期初优课堂】2020“云课堂”开讲啦!第3期(C语言)
  4. P1005 矩阵取数游戏(__int128模板/简单dp)
  5. 光端机与光纤收发器的应用
  6. 【BZOJ4653】[Noi2016]区间 双指针法+线段树
  7. C++(STL):34--- multiset容器详解
  8. android德州扑克计算器,学界 | 一台笔记本打败超算:CMU冷扑大师团队提出全新德扑AI Modicum...
  9. CentOS下ELK收集Nginx日志
  10. 重读《JavaScript DOM编程艺术》(第一版)
  11. jQuery实现文字左右收缩效果示例
  12. 关于计算机应用的论文题目是什么,计算机应用技术专业毕业论文题目
  13. SSD性能怎么测?看这一篇就够了!
  14. 【scratch案例教学】scratch端午节划龙舟比赛 scratch创意编程 少儿编程 边玩边学过个快乐端午节
  15. 什么是Web应用程序防火墙?
  16. C++中 二维数组的定义
  17. VB6.0代码窗口不支持鼠标中键操作滚动条解决方法
  18. 虚拟机下Ubuntu打开摄像头是黑屏问题
  19. SpringBoot2源码笔记
  20. 第四篇:UE4视角切换节点,Possess和Set View Target With Blend的区别

热门文章

  1. 57个你不知道的google工具
  2. php什么是api,php – 什么是API令牌?
  3. 【Python】爬虫面试总结分享
  4. 伪类选择器设置奇偶数标签(1+X Web前端开发初级 例题)
  5. 力扣1046 最后一块石头 推排序
  6. 电动执行器该如何维护?
  7. php tiny rss,CentOS7 安装 Tiny Tiny RSS
  8. 网站多语言设计的一些思路。框架实现多国语言。
  9. SpringBoot对接微信支付之JSAPI
  10. vue 自定义日历组件