根据要求把所有的信息添加到表中以后就是逐步看是否正确
1.查询student表的所有记录
2.查询student表的第2条到4条记录
3.从student表查询所有学生的学号(id)、姓名(name) 和院系(department)的信息
4.从student表中查询计算机系和英语系的学生的信息
6.从student表中查询每个院系有多少人
7.从score表中查询每个科目的最高分
8.查询李四的考试科曰(c name) 和考试成绩(grade)
9. 用连接的方式查询所有学生的信息和考试信息
SELECT s.stu_id, s.name, s.age, s.gender, sc.cname, sc.grade
FROM student s
JOIN score sc ON s.stu_id = sc.stu_id;
+--------+-------+-----+--------+-----------+-------+
| stu_id | name | age | gender | cname | grade |
+--------+-------+-----+--------+-----------+-------+
| 901 | 张三 | 20 | 男 | 计算机 | 98 |
| 901 | 张三 | 20 | 男 | 英语 | 80 |
| 902 | 李四 | 21 | 女 | 计算机 | 65 |
| 902 | 李四 | 21 | 女 | 中文 | 88 |
| 903 | 王五 | 19 | 男 | 中文 | 95 |
| 904 | 赵六 | 22 | 女 | 计算机 | 70 |
| 904 | 赵六 | 22 | 女 | 英语 | 92 |
| 905 | 钱七 | 20 | 女 | 英语 | 94 |
| 906 | 孙八 | 21 | 男 | 计算机 | 90 |
| 906 | 孙八 | 21 | 男 | 英语 | 85 |
+--------+-------+-----+--------+-----------+-------+
10.计算每个学生的总成绩
SELECT student.id, student.name, SUM(score.grade) AS total_grade
FROM student
JOIN score ON student.stu_id = score.stu_id
GROUP BY student.stu_id, student.name;
11.计算每个考试科目的半均成绩
SELECT score.cname, AVG(score.grade) AS half_average_grade
FROM score
GROUP BY score.cname;
+--------+-------------------+
| cname | half_average_grade |
+--------+-------------------+
| 计算机 | 80.6 |
| 英语 | 86.8 |
| 中文 | 91 |
+--------+-------------------+
12.查询同时参加计算机和英语考试的学生的信息
SELECT student.stu_id, student.name
FROM student
JOIN score ON student.stu_id = score.stu_id
WHERE score.cname = '计算机' AND student.stu_id IN (
SELECT stu_id
FROM score
WHERE cname = '英语'
);
+--------+-------+
| stu_id | name |
+--------+-------+
| 901 | 张三 |
| 904 | 赵六 |
| 906 | 孙八 |
+--------+-------+
13.查询同时参加计算机和英语考试的学生的信息
SELECT s.stu_id, s.name
FROM student AS s
WHERE EXISTS (
SELECT *
FROM score AS sc1
WHERE sc1.stu_id = s.stu_id AND sc1.cname = '计算机'
)
AND EXISTS (
SELECT *
FROM score AS sc2
WHERE sc2.stu_id = s.stu_id AND sc2.cname = '英语'
);
+--------+-------+
| stu_id | name |
+--------+-------+
| 901 | 张三 |
| 904 | 赵六 |
| 906 | 孙八 |
+--------+-------+
14.将计算机考试成绩按从高到低进行排序
SELECT stu_id, cname, grade
FROM score
WHERE cname = '计算机'
ORDER BY grade DESC;
+--------+--------+-------+
| stu_id | cname | grade |
+--------+--------+-------+
| 901 | 计算机 | 95 |
| 902 | 计算机 | 88 |
| 903 | 计算机 | 86 |
| 904 | 计算机 | 82 |
| 905 | 计算机 | 79 |
| 906 | 计算机 | 75 |
+--------+--------+-------+
15.从student表和score表中查询出学生的学号,然后合并查询结果
SELECT stu_id
FROM student
UNION
SELECT stu_id
FROM score;
+--------+
| stu_id |
+--------+
| 901 |
| 902 |
| 903 |
| 904 |
| 905 |
| 906 |
+--------+
16.查询姓张或者姓王的同学的姓名、院系和考试科目及成绩
SELECT s.name, s.department, sc.cname, sc.grade
FROM student AS s
JOIN score AS sc ON s.stu_id = sc.stu_id
WHERE s.name LIKE '张%' OR s.name LIKE '王%';
+-------+-----------+--------+-------+
| name | department| cname | grade |
+-------+-----------+--------+-------+
| 张三 | 计算机 | 数学 | 90 |
| 张三 | 计算机 | 英语 | 85 |
| 王五 | 文学 | 历史 | 92 |
| 王五 | 文学 | 英语 | 88 |
+-------+-----------+--------+-------+
17.查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩
SELECT s.name, s.age, s.department, sc.cname, sc.grade
FROM student AS s
JOIN score AS sc ON s.stu_id = sc.stu_id
WHERE s.department = '湖南';
+-------+-----+-----------+--------+-------+
| name | age | department| cname | grade |
+-------+-----+-----------+--------+-------+
| 张三 | 20 | 湖南 | 数学 | 90 |
| 张三 | 20 | 湖南 | 英语 | 85 |
| 李四 | 21 | 湖南 | 物理 | 92 |
| 李四 | 21 | 湖南 | 化学 | 88 |
+-------+-----+-----------+--------+-------+