CREATETABLE student (
id INT(10)NOTNULLUNIQUEPRIMARYKEY,
name VARCHAR(20)NOTNULL,
sex VARCHAR(4),
birth YEAR,
department VARCHAR(20),
address VARCHAR(50));CREATETABLE score (
id INT(10)NOTNULLUNIQUEPRIMARYKEYAUTO_INCREMENT,
stu_id INT(10)NOTNULL,
c_name VARCHAR(20),
grade INT(10));
SELECT*FROM student WHERE department IN('计算机系','英语系');
7. 查询年龄 18~35岁的学生信息
SELECT*,YEAR(CURDATE())- birth AS age FROM student WHEREYEAR(CURDATE())- birth BETWEEN18AND35;
8. 查询每个院系有多少人
SELECT department,COUNT(*)AS 人数 FROM student GROUPBY department;
9. 查询每个科目的最高分
SELECT c_name,MAX(grade)AS 最高分 FROM score GROUPBY c_name;
10. 查询李四的考试科目和考试成绩
SELECT s.c_name, s.grade FROM score s JOIN student st ON s.stu_id = st.id WHERE st.name ='李四';
11. 用连接的方式查询所有学生的信息和考试信息
SELECT st.*, s.c_name, s.grade FROM student st LEFTJOIN score s ON st.id = s.stu_id;
12. 计算每个学生的总成绩
SELECT st.id, st.name,SUM(s.grade)AS 总成绩 FROM student st LEFTJOIN score s ON st.id = s.stu_id GROUPBY st.id, st.name;
13. 计算每个考试科目的平均成绩
SELECT c_name,AVG(grade)AS 平均成绩 FROM score GROUPBY c_name;
14. 查询计算机成绩低于 95 的学生信息
SELECT st.*FROM student st JOIN score s ON st.id = s.stu_id WHERE s.c_name ='计算机'AND s.grade <95;
15. 查询同时参加计算机和英语考试的学生的信息
SELECT st.*FROM student st WHERE st.id IN(SELECT stu_id FROM score WHERE c_name ='计算机')AND st.id IN(SELECT stu_id FROM score WHERE c_name ='英语');
16. 将计算机考试成绩按从高到低进行排序
SELECT st.name, s.grade FROM student st JOIN score s ON st.id = s.stu_id WHERE s.c_name ='计算机'ORDERBY s.grade DESC;
17. 从 student 表和 score 表中查询出学生的学号,然后合并查询结果
SELECT id FROM student UNIONSELECT stu_id FROM score;
18. 查询姓张或者姓王的同学的姓名、院系和考试科目及成绩
SELECT st.name, st.department, s.c_name, s.grade FROM student st JOIN score s ON st.id = s.stu_id WHERE st.name LIKE'张%'OR st.name LIKE'王%';
19. 查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩
SELECT st.name,(YEAR(CURDATE())- st.birth)AS age, st.department, s.c_name, s.grade FROM student st JOIN score s ON st.id = s.stu_id WHERE st.address LIKE'湖南省%';