MySQL練習題


創建下列表並創建相關約束

 

 

 問題

1:查詢出成績表,而且student_id 后面要有對應的學生名,course_id 后面要有對應的課程名.

 1 SELECT
 2   score.sid,
 3   score.student_id,
 4   student.sname,
 5   score.course_id,
 6   course.cname,
 7   score.number
 8 FROM score
 9   LEFT JOIN student
10     ON student.sid = score.student_id
11   LEFT JOIN course
12     ON course.cid = score.course_id
參考答案

2:查詢平均成績大於60分的同學的學號和平均成績

1 SELECT student_id,SUM(number)/COUNT(student_id) AS avg_number FROM score GROUP BY student_id HAVING avg_number>60;
View Code

3:查詢所有同學的學號、姓名、選課數、總成績

1 SELECT student.sid,student.sname,COUNT(score.student_id),SUM(number) FROM student,score WHERE student.sid=score.student_id GROUP BY score.student_id
View Code

4:查詢姓“李”的老師的個數

1 SELECT COUNT(*) FROM teacher WHERE tname LIKE "李%";
View Code

5:查詢學過“李平”老師課的同學的學號、姓名

1 SELECT student.sid,student.sname FROM student,score WHERE student.sid=score.student_id AND score.course_id = (SELECT tid FROM teacher WHERE tname='李平老師');
View Code

6:查詢學過“1”並且也學過編號“2”課程的同學的學號、姓名

1 SELECT student.sid,student.sname FROM student,score WHERE student.sid=score.student_id AND score.course_id IN (1,2) GROUP BY student.sname HAVING COUNT(*)=2;
View Code

7:查詢沒學過“葉平”老師課的同學的學號、姓名

 1 SELECT
 2   sid,
 3   sname
 4 FROM student
 5 WHERE sid NOT IN(SELECT
 6                    student.sid
 7                  FROM score,
 8                    student
 9                  WHERE student.sid = score.student_id
10                      AND score.course_id IN(SELECT
11                                               tid
12                                             FROM teacher
13                                             WHERE tname = '李平老師'));
View Code

8:查詢有課程成績小於60分的同學的學號、姓名

1 SELECT student.sid,student.sname FROM student,score WHERE student.sid=score.student_id AND number<60 GROUP BY student.sname;
View Code

9:查詢沒有學全所有課的同學的學號、姓名

1 SELECT student.sid,student.sname FROM student,score WHERE student.sid=score.student_id GROUP BY student.sid HAVING COUNT(*)<(SELECT COUNT(*) FROM course);
View Code

 10:查詢至少有一門課與學號為“1”的同學所學相同的同學的學號和姓名

 1 SELECT *
 2 FROM student,
 3   score
 4 WHERE student.sid = score.student_id
 5 GROUP BY student.sid
 6 HAVING score.course_id IN(SELECT
 7                             score.course_id
 8                           FROM score,
 9                             student
10                           WHERE student.sid = 1
11                               AND student.sid = score.student_id)
12     AND student.sid != 1;
View Code

11:查詢和“2”號的同學學習的課程完全相同的其他同學學號和姓名

 1 SELECT
 2   student.sid,
 3   student.sname
 4 FROM student,
 5   score
 6 WHERE student.sid = score.student_id
 7 GROUP BY student.sid
 8 HAVING COUNT(student.sid) = (SELECT
 9                                COUNT(*)
10                              FROM score
11                              WHERE student_id = 2)
12     AND SUM(course_id) = (SELECT
13                             SUM(course_id)
14                           FROM score
15                           WHERE student_id = 2)
16     AND student.sid != 2;
View Code

 12:查詢各科成績最高和最低的分:以如下形式顯示:課程ID,最高分,最低分

1 SELECT course_id,MAX(number),MIN(number) FROM score GROUP BY course_id;
View Code

13:查詢每門課程被選修的學生數

1 SELECT course_id,COUNT(student_id) FROM score GROUP BY course_id;
View Code

14:查詢出只選修了一門課程的全部學生的學號和姓名

1 SELECT student.sid,student.sname FROM score,student WHERE student.sid=score.student_id GROUP BY student_id HAVING COUNT(course_id)=1;
View Code

15:查詢男生、女生的人數

1 SELECT gender,COUNT(gender) FROM student GROUP BY gender;
View Code

16:查詢姓“張”的學生名單

1 SELECT sid,sname FROM student WHERE sname LIKE '張%';
View Code

17:查詢同名同姓學生名單,並統計同名人數

 

1 SELECT sid,sname,COUNT(sname) FROM student GROUP BY sname HAVING COUNT(sname)>1;
View Code

18:查詢每門課程的平均成績,結果按平均成績升序排列,平均成績相同時,按課程號降序排列

1 SELECT course_id,AVG(number) FROM score GROUP BY course_id ORDER BY AVG(number) ASC ,course_id DESC;
View Code

19:查詢平均成績大於85的所有學生的學號、姓名和平均成績

1 SELECT student.sid,student.sname,AVG(number) FROM score,student WHERE student.sid=score.student_id GROUP BY score.student_id HAVING AVG(number)>85;
View Code

20:查詢課程名稱為“生物”,且分數低於60的學生姓名和分數

 1 SELECT
 2   student.sid,
 3   student.sname,
 4   score.number
 5 FROM score,
 6   student
 7 WHERE student.sid = score.student_id
 8     AND score.course_id = (SELECT
 9                              cid
10                            FROM course
11                            WHERE cname = "生物")
12     AND score.number < 60;
View Code

21:查詢課程編號為3且課程成績在80分以上的學生的學號和姓名

1 SELECT student.sid,student.sname,score.number FROM score,student WHERE student.sid=score.student_id AND score.course_id=3 AND number>80;
View Code

22:求選了課程的學生人數

1 SELECT COUNT(*) FROM (SELECT * FROM score GROUP BY student_id) AS e;
View Code

23:查詢選修“劉海燕”老師所授課程的學生中,成績最高的學生姓名及其成績

1 SELECT student.sid,student.sname,MAX(number) FROM score,student WHERE student.sid=score.student_id AND score.course_id=(SELECT tid FROM teacher WHERE tname='劉海燕老師')
View Code

24:查詢不同課程但成績相同的學生的學號、課程號、學生成績*****

1 SELECT * FROM score AS sc WHERE EXISTS(SELECT 1 FROM score WHERE number=sc.number AND course_id<>sc.course_id) ORDER BY number DESC;
View Code

25:查詢至少選修兩門課程的學生學號

1 SELECT student_id FROM score GROUP BY student_id HAVING COUNT(student_id)>=2;
View Code

 26:查詢“生物”課程比“物理”課程成績高的所有學生的學號

 1 SELECT
 2   a.student_id
 3 FROM (SELECT *
 4       FROM score
 5       WHERE course_id = (SELECT
 6                            cid
 7                          FROM course
 8                          WHERE cname = '生物')) AS a,
 9   (SELECT *
10    FROM score
11    WHERE course_id = (SELECT
12                         cid
13                       FROM course
14                       WHERE cname = '物理')) AS b
15 WHERE a.student_id = b.student_id
16     and a.number > b.number;
View Code

 

 

 

 

 

 

創建表和數據

  1 /*
  2  Navicat Premium Data Transfer
  3 
  4  Source Server         : localhost
  5  Source Server Type    : MySQL
  6  Source Server Version : 50624
  7  Source Host           : localhost
  8  Source Database       : sqlexam
  9 
 10  Target Server Type    : MySQL
 11  Target Server Version : 50624
 12  File Encoding         : utf-8
 13 
 14  Date: 10/21/2016 06:46:46 AM
 15 */
 16 
 17 SET NAMES utf8;
 18 SET FOREIGN_KEY_CHECKS = 0;
 19 
 20 -- ----------------------------
 21 --  Table structure for `class`
 22 -- ----------------------------
 23 DROP TABLE IF EXISTS `class`;
 24 CREATE TABLE `class` (
 25   `cid` int(11) NOT NULL AUTO_INCREMENT,
 26   `caption` varchar(32) NOT NULL,
 27   PRIMARY KEY (`cid`)
 28 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
 29 
 30 -- ----------------------------
 31 --  Records of `class`
 32 -- ----------------------------
 33 BEGIN;
 34 INSERT INTO `class` VALUES ('1', '三年二班'), ('2', '三年三班'), ('3', '一年二班'), ('4', '二年九班');
 35 COMMIT;
 36 
 37 -- ----------------------------
 38 --  Table structure for `course`
 39 -- ----------------------------
 40 DROP TABLE IF EXISTS `course`;
 41 CREATE TABLE `course` (
 42   `cid` int(11) NOT NULL AUTO_INCREMENT,
 43   `cname` varchar(32) NOT NULL,
 44   `teacher_id` int(11) NOT NULL,
 45   PRIMARY KEY (`cid`),
 46   KEY `fk_course_teacher` (`teacher_id`),
 47   CONSTRAINT `fk_course_teacher` FOREIGN KEY (`teacher_id`) REFERENCES `teacher` (`tid`)
 48 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
 49 
 50 -- ----------------------------
 51 --  Records of `course`
 52 -- ----------------------------
 53 BEGIN;
 54 INSERT INTO `course` VALUES ('1', '生物', '1'), ('2', '物理', '2'), ('3', '體育', '3'), ('4', '美術', '2');
 55 COMMIT;
 56 
 57 -- ----------------------------
 58 --  Table structure for `score`
 59 -- ----------------------------
 60 DROP TABLE IF EXISTS `score`;
 61 CREATE TABLE `score` (
 62   `sid` int(11) NOT NULL AUTO_INCREMENT,
 63   `student_id` int(11) NOT NULL,
 64   `course_id` int(11) NOT NULL,
 65   `num` int(11) NOT NULL,
 66   PRIMARY KEY (`sid`),
 67   KEY `fk_score_student` (`student_id`),
 68   KEY `fk_score_course` (`course_id`),
 69   CONSTRAINT `fk_score_course` FOREIGN KEY (`course_id`) REFERENCES `course` (`cid`),
 70   CONSTRAINT `fk_score_student` FOREIGN KEY (`student_id`) REFERENCES `student` (`sid`)
 71 ) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8;
 72 
 73 -- ----------------------------
 74 --  Records of `score`
 75 -- ----------------------------
 76 BEGIN;
 77 INSERT INTO `score` VALUES ('1', '1', '1', '10'), ('2', '1', '2', '9'), ('5', '1', '4', '66'), ('6', '2', '1', '8'), ('8', '2', '3', '68'), ('9', '2', '4', '99'), ('10', '3', '1', '77'), ('11', '3', '2', '66'), ('12', '3', '3', '87'), ('13', '3', '4', '99'), ('14', '4', '1', '79'), ('15', '4', '2', '11'), ('16', '4', '3', '67'), ('17', '4', '4', '100'), ('18', '5', '1', '79'), ('19', '5', '2', '11'), ('20', '5', '3', '67'), ('21', '5', '4', '100'), ('22', '6', '1', '9'), ('23', '6', '2', '100'), ('24', '6', '3', '67'), ('25', '6', '4', '100'), ('26', '7', '1', '9'), ('27', '7', '2', '100'), ('28', '7', '3', '67'), ('29', '7', '4', '88'), ('30', '8', '1', '9'), ('31', '8', '2', '100'), ('32', '8', '3', '67'), ('33', '8', '4', '88'), ('34', '9', '1', '91'), ('35', '9', '2', '88'), ('36', '9', '3', '67'), ('37', '9', '4', '22'), ('38', '10', '1', '90'), ('39', '10', '2', '77'), ('40', '10', '3', '43'), ('41', '10', '4', '87'), ('42', '11', '1', '90'), ('43', '11', '2', '77'), ('44', '11', '3', '43'), ('45', '11', '4', '87'), ('46', '12', '1', '90'), ('47', '12', '2', '77'), ('48', '12', '3', '43'), ('49', '12', '4', '87'), ('52', '13', '3', '87');
 78 COMMIT;
 79 
 80 -- ----------------------------
 81 --  Table structure for `student`
 82 -- ----------------------------
 83 DROP TABLE IF EXISTS `student`;
 84 CREATE TABLE `student` (
 85   `sid` int(11) NOT NULL AUTO_INCREMENT,
 86   `gender` char(1) NOT NULL,
 87   `class_id` int(11) NOT NULL,
 88   `sname` varchar(32) NOT NULL,
 89   PRIMARY KEY (`sid`),
 90   KEY `fk_class` (`class_id`),
 91   CONSTRAINT `fk_class` FOREIGN KEY (`class_id`) REFERENCES `class` (`cid`)
 92 ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;
 93 
 94 -- ----------------------------
 95 --  Records of `student`
 96 -- ----------------------------
 97 BEGIN;
 98 INSERT INTO `student` VALUES ('1', '', '1', '理解'), ('2', '', '1', '鋼蛋'), ('3', '', '1', '張三'), ('4', '', '1', '張一'), ('5', '', '1', '張二'), ('6', '', '1', '張四'), ('7', '', '2', '鐵錘'), ('8', '', '2', '李三'), ('9', '', '2', '李一'), ('10', '', '2', '李二'), ('11', '', '2', '李四'), ('12', '', '3', '如花'), ('13', '', '3', '劉三'), ('14', '', '3', '劉一'), ('15', '', '3', '劉二'), ('16', '', '3', '劉四');
 99 COMMIT;
100 
101 -- ----------------------------
102 --  Table structure for `teacher`
103 -- ----------------------------
104 DROP TABLE IF EXISTS `teacher`;
105 CREATE TABLE `teacher` (
106   `tid` int(11) NOT NULL AUTO_INCREMENT,
107   `tname` varchar(32) NOT NULL,
108   PRIMARY KEY (`tid`)
109 ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
110 
111 -- ----------------------------
112 --  Records of `teacher`
113 -- ----------------------------
114 BEGIN;
115 INSERT INTO `teacher` VALUES ('1', '張磊老師'), ('2', '李平老師'), ('3', '劉海燕老師'), ('4', '朱雲海老師'), ('5', '李傑老師');
116 COMMIT;
117 
118 SET FOREIGN_KEY_CHECKS = 1;
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM