zoukankan      html  css  js  c++  java
  • sql作业

    初始化

    /*
    Navicat MySQL Data Transfer
    
    Source Server         : 本地测试
    Source Server Version : 50639
    Source Host           : localhost:3306
    Source Database       : luffy
    
    Target Server Type    : MYSQL
    Target Server Version : 50639
    File Encoding         : 65001
    
    Date: 2018-03-24 00:22:13
    */
    
    SET FOREIGN_KEY_CHECKS=0;
    
    -- ----------------------------
    -- Table structure for `class`
    -- ----------------------------
    DROP TABLE IF EXISTS `class`;
    CREATE TABLE `class` (
      `cid` int(11) NOT NULL AUTO_INCREMENT,
      `caption` varchar(16) DEFAULT NULL,
      `grade_id` int(11) DEFAULT NULL,
      UNIQUE KEY `cid` (`cid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of class
    -- ----------------------------
    INSERT INTO `class` VALUES ('1', '一年一班', '1');
    INSERT INTO `class` VALUES ('2', '一年二班', '1');
    INSERT INTO `class` VALUES ('3', '二年二班', '2');
    INSERT INTO `class` VALUES ('4', '二年二班', '2');
    INSERT INTO `class` VALUES ('5', '三年一班', '3');
    INSERT INTO `class` VALUES ('6', '三年二班', '3');
    INSERT INTO `class` VALUES ('7', '三年三班', '3');
    INSERT INTO `class` VALUES ('8', '四年二班', '4');
    INSERT INTO `class` VALUES ('9', '五年二班', '5');
    INSERT INTO `class` VALUES ('10', '六年二班', '6');
    
    -- ----------------------------
    -- Table structure for `class_grade`
    -- ----------------------------
    DROP TABLE IF EXISTS `class_grade`;
    CREATE TABLE `class_grade` (
      `gid` int(11) NOT NULL AUTO_INCREMENT,
      `gname` varchar(16) DEFAULT NULL,
      UNIQUE KEY `gid` (`gid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of class_grade
    -- ----------------------------
    INSERT INTO `class_grade` VALUES ('1', '一年级');
    INSERT INTO `class_grade` VALUES ('2', '二年级');
    INSERT INTO `class_grade` VALUES ('3', '三年级');
    INSERT INTO `class_grade` VALUES ('4', '四年级');
    INSERT INTO `class_grade` VALUES ('5', '五年级');
    INSERT INTO `class_grade` VALUES ('6', '六年级');
    
    -- ----------------------------
    -- Table structure for `course`
    -- ----------------------------
    DROP TABLE IF EXISTS `course`;
    CREATE TABLE `course` (
      `cid` int(11) NOT NULL AUTO_INCREMENT,
      `cname` varchar(16) DEFAULT NULL,
      `teacher_id` int(11) DEFAULT NULL,
      UNIQUE KEY `cid` (`cid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of course
    -- ----------------------------
    INSERT INTO `course` VALUES ('1', '生物', '1');
    INSERT INTO `course` VALUES ('2', '体育', '1');
    INSERT INTO `course` VALUES ('3', '物理', '2');
    INSERT INTO `course` VALUES ('4', '语文', '2');
    INSERT INTO `course` VALUES ('5', '数学', '3');
    INSERT INTO `course` VALUES ('6', '英语', '3');
    INSERT INTO `course` VALUES ('7', '化学', '2');
    
    -- ----------------------------
    -- Table structure for `score`
    -- ----------------------------
    DROP TABLE IF EXISTS `score`;
    CREATE TABLE `score` (
      `sid` int(11) DEFAULT NULL,
      `student_id` int(11) DEFAULT NULL,
      `course_id` int(11) DEFAULT NULL,
      `score` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of score
    -- ----------------------------
    INSERT INTO `score` VALUES ('1', '1', '1', '60');
    INSERT INTO `score` VALUES ('2', '1', '2', '59');
    INSERT INTO `score` VALUES ('3', '2', '2', '99');
    INSERT INTO `score` VALUES ('4', '2', '3', '59');
    INSERT INTO `score` VALUES ('5', '4', '3', '87');
    INSERT INTO `score` VALUES ('6', '5', '5', '88');
    INSERT INTO `score` VALUES ('7', '6', '5', '45');
    INSERT INTO `score` VALUES ('8', '7', '4', '66');
    INSERT INTO `score` VALUES ('9', '8', '7', '55');
    INSERT INTO `score` VALUES ('10', '3', '6', '88');
    INSERT INTO `score` VALUES ('11', '3', '3', '99');
    INSERT INTO `score` VALUES ('12', '10', '4', '99');
    INSERT INTO `score` VALUES ('13', '1', '3', '88');
    
    -- ----------------------------
    -- Table structure for `student`
    -- ----------------------------
    DROP TABLE IF EXISTS `student`;
    CREATE TABLE `student` (
      `sid` int(11) NOT NULL AUTO_INCREMENT,
      `sname` varchar(16) DEFAULT NULL,
      `gender` enum('男','女') DEFAULT NULL,
      `class_id` int(11) DEFAULT NULL,
      UNIQUE KEY `sid` (`sid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of student
    -- ----------------------------
    INSERT INTO `student` VALUES ('1', '乔丹1', '女', '1');
    INSERT INTO `student` VALUES ('2', '张云', '女', '1');
    INSERT INTO `student` VALUES ('3', '科比', '男', '2');
    INSERT INTO `student` VALUES ('4', '张飞', '男', '3');
    INSERT INTO `student` VALUES ('5', '路飞', '男', '3');
    INSERT INTO `student` VALUES ('6', '路飞', '男', '4');
    INSERT INTO `student` VALUES ('7', '海贼王', '男', '6');
    INSERT INTO `student` VALUES ('8', '熊大', '男', '6');
    INSERT INTO `student` VALUES ('9', '熊二', '男', '7');
    INSERT INTO `student` VALUES ('10', '熊三', '女', '8');
    INSERT INTO `student` VALUES ('11', '熊四', '女', '9');
    
    -- ----------------------------
    -- Table structure for `teach2cls`
    -- ----------------------------
    DROP TABLE IF EXISTS `teach2cls`;
    CREATE TABLE `teach2cls` (
      `tcid` int(11) NOT NULL AUTO_INCREMENT,
      `tid` int(11) DEFAULT NULL,
      `cid` int(11) DEFAULT NULL,
      UNIQUE KEY `tcid` (`tcid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of teach2cls
    -- ----------------------------
    INSERT INTO `teach2cls` VALUES ('1', '1', '1');
    INSERT INTO `teach2cls` VALUES ('2', '1', '2');
    INSERT INTO `teach2cls` VALUES ('3', '2', '1');
    INSERT INTO `teach2cls` VALUES ('4', '2', '3');
    INSERT INTO `teach2cls` VALUES ('5', '2', '3');
    INSERT INTO `teach2cls` VALUES ('6', '3', '4');
    INSERT INTO `teach2cls` VALUES ('7', '3', '5');
    INSERT INTO `teach2cls` VALUES ('8', '3', '6');
    INSERT INTO `teach2cls` VALUES ('9', '3', '7');
    INSERT INTO `teach2cls` VALUES ('10', '3', '2');
    
    -- ----------------------------
    -- Table structure for `teacher`
    -- ----------------------------
    DROP TABLE IF EXISTS `teacher`;
    CREATE TABLE `teacher` (
      `tid` int(11) NOT NULL AUTO_INCREMENT,
      `tname` varchar(16) DEFAULT NULL,
      UNIQUE KEY `tid` (`tid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of teacher
    -- ----------------------------
    INSERT INTO `teacher` VALUES ('1', '张三');
    INSERT INTO `teacher` VALUES ('2', '李四');
    INSERT INTO `teacher` VALUES ('3', '王五');
    INSERT INTO `teacher` VALUES ('4', '李杰');
    
    

    参考答案

    2、查询学生总人数;
    
    SELECT count(sid) FROM student;
    
    3、查询“生物”课程和“物理”课程成绩都及格的学生id和姓名;
    SELECT sid,sname FROM student WHERE sid
    IN
    (
    	SELECT t.student_id FROM score 
    	INNER JOIN
    	(                                                                                                                               
    	SELECT student_id FROM score WHERE score >= 60 
    	AND 
    		course_id=(SELECT cid FROM course WHERE cname='物理')
    	) AS t ON t.student_id=score.student_id
    	WHERE score >= 60 
    	AND 
    		course_id=(SELECT cid FROM course WHERE cname='生物')
    )
    
    4、查询每个年级的班级数,取出班级数最多的前三个年级;
    SELECT gname,t.num '班级数' FROM class_grade INNER JOIN
    (
    SELECT 
    	grade_id, count(grade_id) as num
    FROM 
    	class 
    GROUP BY 
    	grade_id 
    ORDER BY 
    	count(grade_id) DESC LIMIT 3
    ) AS t ON t.grade_id=class_grade.gid;
    
    5、查询平均成绩最高和最低的学生的id和姓名以及平均成绩;
    SELECT * FROM
    (SELECT sid,sname,t1.max FROM student 
    INNER JOIN
    	(SELECT student_id, avg(score) max FROM score GROUP BY student_id ORDER BY max DESC LIMIT 1) t1
    ON t1.student_id=student.sid) a,
    
    (SELECT sid,sname,t2.min FROM student 
    INNER JOIN
    	(SELECT student_id, avg(score) min FROM score GROUP BY student_id ORDER BY min LIMIT 1) t2
    ON t2.student_id=student.sid) b
    ; 
    
    6、查询每个年级的学生人数;
    
    SELECT gname, t1.num FROM class_grade 
    INNER JOIN
    	( 
    	SELECT grade_id,count(t.sid) AS num FROM class 
    	INNER JOIN 
    		(SELECT class_id,sid FROM student) AS t 
    	ON class.cid = t.class_id
    	GROUP BY grade_id 
    	) AS t1 
    ON class_grade.gid = t1.grade_id
    ;
    
    7、查询每位学生的学号,姓名,选课数,平均成绩;
    SELECT sid '学号',sname '姓名',t.avg_num '平均成绩',t.c_num '选课数' FROM student 
    INNER JOIN
    	(SELECT student_id, avg(score) avg_num,count(course_id) c_num 
    	FROM
    		score
    	GROUP BY 
    		student_id
    	) t ON student.sid=t.student_id
    ; 
    8、查询学生编号为“2”的学生的姓名、该学生成绩最高的课程名、成绩最低的课程名及分数;
    SELECT * FROM
    (
    SELECT cname '课程',t1.max '最高分' FROM course 
    INNER JOIN
    	(SELECT course_id, score max FROM score WHERE student_id=2 ORDER BY score DESC LIMIT 1) t1
    On t1.course_id=course.cid
    ) a,
    (
    SELECT cname '课程',t2.min '最低分' FROM course 
    INNER JOIN
    	(SELECT course_id, score min FROM score WHERE student_id=2 ORDER BY score LIMIT 1) t2
    On t2.course_id=course.cid
    ) b	
    ;
    
    
    9、查询姓“李”的老师的个数和所带班级数;
    
    SELECT t.t_num '个数',count(cid) '班级数' FROM teach2cls 
    INNER JOIN 
    	(SELECT tid, count(tid) t_num FROM teacher WHERE tname LIKE '李%') AS t
    ON t.tid=teach2cls.tid
    
    10、查询班级数小于5的年级id和年级名;
    
    SELECT gid,gname FROM class_grade WHERE gid IN 
    (SELECT grade_id FROM class GROUP BY grade_id HAVING count(cid) < 5);
    
    11、查询班级信息,包括班级id、班级名称、年级、年级级别(12为低年级,34为中年级,56为高年级),示例结果如下;
    
    

    班级id 班级名称 年级 年级级别
    1 一年一班 一年级 低

    SELECT t.cid '班级id',t.caption '班级名称',class_grade.gname '年级'  FROM class_grade 
    INNER JOIN
    	(SELECT cid,caption,grade_id FROM class ORDER BY grade_id) t
    	ON t.grade_id = class_grade.gid
    ;
    
    12、查询学过“张三”老师2门课以上的同学的学号、姓名;
    
    SELECT sid,sname FROM student INNER JOIN 
    (
    SELECT student_id FROM score WHERE course_id 
    IN
    	(
    	SELECT cid FROM course 
    	WHERE 
    		teacher_id=(SELECT tid FROM teacher WHERE tname LIKE 'zhangsan')
    	)
    
    GROUP BY student_id HAVING count(course_id) >= 2
    ) AS t ON student.sid = t.student_id
    
    13、查询教授课程超过2门的老师的id和姓名;
    SELECT tid,tname FROM teacher WHERE tid IN 
    (SELECT tid FROM teach2cls GROUP BY tid HAVING count(cid)>2);
    
    14、查询学过编号“1”课程和编号“2”课程的同学的学号、姓名;
    SELECT sid,sname FROM student WHERE sid IN
    (
    	SELECT student_id FROM score 
    	WHERE course_id IN (1,2)
    	GROUP BY 
    		student_id 	
    );
    15、查询没有带过高年级的老师id和姓名;
    SELECT tid,tname FROM teacher 
    WHERE 
    	tid NOT IN
    	(
    	SELECT tid FROM teach2cls 
    	WHERE 
    		cid IN (SELECT cid FROM class WHERE grade_id=5 OR grade_id=6)
    	);
    
    16、查询学过“张三”老师所教的所有课的同学的学号、姓名;
    SELECT sid,sname FROM student 
    WHERE 
    sid IN (
    		SELECT student_id FROM score 
    		WHERE 
    			course_id IN
    			(
    			SELECT cid FROM teach2cls 
    			WHERE 
    				tid IN (SELECT tid FROM teacher WHERE	tname = '张三')
    			)
    );
    
    17、查询带过超过2个班级的老师的id和姓名;
    SELECT tid,tname FROM teacher 
    WHERE 
    	tid IN (SELECT tid FROM teach2cls GROUP BY tid HAVING count(cid)>2);
    
    18、查询课程编号“2”的成绩比课程编号“1”课程低的所有同学的学号、姓名;
    SELECT score FROM score WHERE course_id=1
    SELECT score FROM score WHERE course_id=2
    SELECT student_id FROM score GROUP BY student_id
    WHERE 
    	(SELECT score FROM score WHERE course_id=2) <
    	(SELECT score FROM score WHERE course_id=1)
    
    19、查询所带班级数最多的老师id和姓名;
    SELECT tid,tname FROM teacher 
    WHERE 
    tid=(SELECT tid FROM teach2cls GROUP BY tid ORDER BY count(cid) DESC LIMIT 1);
    
    20、查询有课程成绩小于60分的同学的学号、姓名;
    SELECT sid,sname FROM student 
    WHERE sid IN (SELECT student_id FROM score WHERE score<60 GROUP BY student_id);
    
    21、查询没有学全所有课的同学的学号、姓名;
    SELECT sid,sname FROM student WHERE sid  NOT IN 
    (
    SELECT student_id FROM score 
    GROUP BY 
    	student_id 
    HAVING 
    	count(course_id)=(SELECT count(cid) FROM course)
    );
    
    22、查询至少有一门课与学号为“1”的同学所学相同的同学的学号和姓名;
    SELECT sid,sname FROM student WHERE sid IN
    (
    SELECT student_id FROM score 
    WHERE 
    	course_id 
    	IN 
    		(SELECT course_id FROM score WHERE student_id=1) 
    	AND
    		student_id != 1
    );
    
    23、查询至少学过学号为“1”同学所选课程中任意一门课的其他同学学号和姓名;
    SELECT sid,sname FROM student WHERE sid IN
    (
    SELECT student_id 
    FROM 
    	score 
    WHERE course_id IN 
    	(SELECT course_id FROM score WHERE student_id=1)
    );
    
    24、查询和“2”号同学学习的课程完全相同的其他同学的学号和姓名;
    
    SELECT student_id,COUNT(course_id) FROM score 
    WHERE 
    	course_id 
    IN 
    	(SELECT course_id FROM score WHERE student_id=2)
    
    GROUP BY 
    	student_id 
    HAVING 
    	count(course_id)=
    	(SELECT count(course_id) FROM score WHERE student_id=2)
    ;
    
    25、删除学习“张三”老师课的score表记录;
    DELETE FROM score WHERE course_id IN
    (
    	SELECT cid FROM teach2cls 
    	WHERE tid=(SELECT tid FROM teacher WHERE tname='张三')
    );
    
    26、向score表中插入一些记录,这些记录要求符合以下条件:①没有上过编号“2”课程的同学学号;②插入“2”号课程的平均成绩;
    
    INSERT INTO 
    	score 
    SELECT 
    	sid,student_id,
    	course_id,
    	(SELECT avg(score) FROM score WHERE course_id=2) 
    	FROM score
    WHERE 
    	student_id 
    NOT IN 
    	(SELECT student_id FROM score WHERE course_id=2);
    
    27、按平均成绩从低到高显示所有学生的“语文”、“数学”、“英语”三门的课程成绩,
    按如下形式显示: 学生ID,语文,数学,英语,有效课程数,有效平均分;
    
    SELECT
    		sc.student_id '学生ID',
            (SELECT score FROM score LEFT JOIN course
    			ON 
    				score.course_id = course.cid 
    			WHERE 
    			course.cname = '语文' AND score.student_id=sc.student_id) AS '语文',
    		(SELECT score FROM score LEFT JOIN course 
    			ON 
    				score.course_id = course.cid 
    			WHERE course.cname = '数学' AND score.student_id=sc.student_id) AS '数学',
    
            (SELECT score FROM score LEFT JOIN course
    			ON score.course_id = course.cid 
    			WHERE 
    				course.cname = '英语' AND score.student_id=sc.student_id) AS '英语',
    
            count(sc.course_id) '有效课程',
    
            avg(sc.score) '平均成绩'
    
    FROM score AS sc GROUP BY student_id;
     
    28、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分;
    SELECT course_id '课程ID', max(score) '最高分',min(score) '最低分' 
    FROM 
    	score GROUP BY course_id;
    
    29、按各科平均成绩从低到高和及格率的百分数从高到低顺序;
    
    SELECT score.course_id, 
    	   avg(score.score) '平均成绩',
    	   t.num/count(score.student_id) precent
    FROM 
    	score 
    INNER JOIN 
    	(SELECT course_id, count(student_id)*100 num FROM score WHERE score>=60 GROUP BY course_id) t
    ON t.course_id=score.course_id
    GROUP BY course_id ORDER BY precent DESC;
    
    30、课程平均分从高到低显示(显示任课老师);
    SELECT tname,t2.course_id,t2.avg_num FROM teacher INNER JOIN
    (
    SELECT tid,t.course_id,t.avg_num FROM teach2cls INNER JOIN
    (
    SELECT course_id, avg(score) avg_num 
    FROM 
    	score GROUP BY course_id 
    ) t ON teach2cls.cid=t.course_id
    ) t2 ON teacher.tid=t2.tid
    ORDER BY t2.avg_num DESC;
    
    31、查询各科成绩前三名的记录(不考虑成绩并列情况)
    SELECT
    	distinct
    	course_id,
        (SELECT score FROM score s1 WHERE s1.course_id=s2.course_id ORDER BY score DESC LIMIT 1) first_num,
    	(SELECT score FROM score s1 WHERE s1.course_id=s2.course_id ORDER BY score DESC LIMIT 2,1) second_num,
        (SELECT IFNULL(score,0) FROM score s1 WHERE s1.course_id=s2.course_id ORDER BY score DESC LIMIT 3,1) third_num
    FROM  
        score s2
    order by course_id;
    
    32、查询每门课程被选修的学生数;
    
    SELECT course_id, count(student_id) FROM score GROUP BY course_id;
    
    33、查询选修了2门以上课程的全部学生的学号和姓名;
    SELECT sid,sname FROM student WHERE sid IN
    (SELECT student_id 
    FROM 
    	score 
    GROUP BY 
    	student_id HAVING count(course_id)>=2)
    ;
    
    34、查询男生、女生的人数,按倒序排列;
    SELECT * FROM
    (SELECT count(sid) '男' FROM student WHERE gender='男') as a,
    (SELECT count(sid) '女' FROM student WHERE gender='女') as b
    ;
    
    35、查询姓“张”的学生名单;
    SELECT * FROM student WHERE sname LIKE '张%';
    
    36、查询同名同姓学生名单,并统计同名人数;
    
    SELECT sname, count(sid) FROM student GROUP BY sname HAVING count(sid)!=1
    
    37、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列;
    SELECT course_id, avg(score) avg_num FROM score GROUP BY course_id ORDER BY avg_num ASC,course_id DASC;
    
    38、查询课程名称为“数学”,且分数低于60的学生姓名和分数;
    
    SELECT sname '姓名', t.score '分数' FROM student INNER JOIN
    (
    SELECT student_id,score FROM score 
    WHERE 
    	course_id=(SELECT cid FROM course WHERE cname='数学')
    AND score<60
    ) t ON student.sid=t.student_id;
    
    39、查询课程编号为“3”且课程成绩在80分以上的学生的学号和姓名;
    SELECT sid,sname FROM student WHERE sid IN
    (SELECT student_id FROM score WHERE course_id=3 AND score>=80);
    
    40、求选修了课程的学生人数
    SELECT count(DISTINCT student_id) FROM score;
    
    41、查询选修“王五”老师所授课程的学生中,成绩最高和最低的学生姓名及其成绩;
    
    SELECT * FROM 
    
    (SELECT student.sname,a.max FROM student 
    INNER JOIN 
    	(
    	SELECT student_id,max(score) max FROM score 
    	WHERE 
    		course_id IN (SELECT cid FROM teach2cls 
    		WHERE 
    			tid=(SELECT tid FROM teacher WHERE tname='王五'))
    	) a ON student.sid=a.student_id
    ) AS t1,
    (
    SELECT student.sname,b.min FROM student 
    INNER JOIN 
    	(
    	SELECT student_id,min(score) min FROM score 
    	WHERE 
    		course_id IN (SELECT cid FROM teach2cls 
    		WHERE 
    			tid=(SELECT tid FROM teacher WHERE tname='王五'))
    	) b ON student.sid=b.student_id
    ) AS t2;
    
    42、查询各个课程及相应的选修人数;
    SELECT cname '课程',t.num '选修人数' FROM course INNER JOIN
    
    (SELECT course_id, count(student_id) num FROM score GROUP BY course_id) t
    ON t.course_id=course.cid
    ;
    
    43、查询不同课程但成绩相同的学生的学号、课程号、学生成绩;
    SELECT s1.student_id,s1.course_id,s1.score,s2.student_id,s2.course_id,s2.score 
    FROM 
    	score AS s1,score AS s2 
    WHERE
    s1.score=s2.score AND s1.course_id != s2.course_id;
    
    44、查询每门课程成绩最好的前两名学生id和姓名;
    
    SELECT student.sid,student.sname,t4.course_id,t4.first_num,t4.second_num FROM student
    INNER JOIN
    	(
    	SELECT score.student_id,t3.course_id,t3.first_num, t3.second_num FROM score 
    	INNER JOIN
    	(
    	SELECT t1.course_id,t1.first_num,t2.second_num 
    	FROM
    		(SELECT course_id, max(score) AS first_num FROM score GROUP BY course_id) AS t1
    	INNER JOIN 
    		(
    		SELECT 
    			score.course_id, max(score) AS second_num 
    		FROM 
    			score 
    		INNER JOIN 
    			(SELECT course_id, max(score) AS first_num FROM score GROUP BY course_id ) as t
    		ON 
    			score.course_id=t.course_id 
    		WHERE
    			score.score < t.first_num
    		GROUP BY
    			course_id
    		) AS t2 ON t1.course_id = t2.course_id
    	) AS t3 ON t3.course_id=score.course_id 
    	WHERE 
    		score.score >= t3.second_num
    	AND
    		score.score<= t3.first_num
    ) t4 
    ON t4.student_id=student.sid;
    
    45、检索至少选修两门课程的学生学号;
    SELECT student_id FROM score GROUP BY student_id HAVING count(course_id)>=2;
    
    46、查询没有学生选修的课程的课程号和课程名;
    SELECT cid,cname FROM course WHERE cid NOT IN
    (SELECT course_id FROM score);
    
    47、查询没带过任何班级的老师id和姓名;
    SELECT tid,tname FROM teacher WHERE tid NOT IN 
    (SELECT tid FROM teach2cls);
    
    48、查询有两门以上课程超过80分的学生id及其平均成绩
    
    SELECT student_id,avg(score) FROM score WHERE student_id IN 
    (SELECT student_id FROM score WHERE score>80 GROUP BY student_id HAVING count(course_id)>=2);
    
    49、检索“3”课程分数小于60,按分数降序排列的同学学号;
    SELECT student_id FROM score WHERE course_id=3 AND score<60 ORDER BY score DESC;
    
    50、删除编号为“2”的同学的“1”课程的成绩;
    DELETE FROM score WHERE student_id=2 AND course_id=1;
    
    51、查询同时选修了物理课和生物课的学生id和姓名;
    SELECT sid,sname FROM student WHERE sid IN 
    (
    	SELECT student_id FROM score
    	INNER JOIN
    	(
    		SELECT student_id FROM score 
    		WHERE 
    			course_id=(SELECT cid FROM course WHERE cname='物理')
    	) t ON t.student_id=score.student_id
    	WHERE 
    		course_id=( SELECT student_id FROM score WHERE 
    					course_id=(SELECT cid FROM course WHERE cname='生物'))
    );
    
    
  • 相关阅读:
    【GIT-精讲】从零玩转Git-基础理论
    【fmjava】 面试题突击训练-Java基础语法篇01
    【笔记】springSecurity-OAuth2.0-授权模式演示
    【难受】SpirngCloud-Alibaba-nacos跨服务器访问接口的问题
    Python编程题汇总(持续更新中……)
    Python编程题14--随机分配礼物
    Python编程题13--判断两个升序列表,其中一个是另外一个的子集
    Python编程题12--列表中比前面元素都大,比后面元素都小的数
    Python编程题11--找出100以内的质数
    Python编程题10--找出和为N的两个数
  • 原文地址:https://www.cnblogs.com/Jason-lin/p/8673418.html
Copyright © 2011-2022 走看看