在信息技术和数据管理领域,数据库扮演着至关重要的角色,对于数据库的管理和操作,SQL(结构化查询语言)是必不可少的工具,MySQL作为当前最流行的开源关系型数据库管理系统之一,广泛应用于各种类型的项目和应用场景中,掌握MySQL语句,不仅能提高数据查询和操作效率,还能为数据处理和分析提供强有力的支持,本文将通过一系列实例和练习,帮助读者熟悉并掌握MySQL的基本用法及常见操作。
1、操作系统:Windows、macOS、Linux等均可。
2、数据库系统:MySQL 8.0
3、IDE工具:MySQL Workbench、phpMyAdmin、DBeaver,或者任何支持MySQL的数据库管理工具。
4、编程语言:SQL
5、数据表:学生信息表(Student)、课程信息表(Course)、成绩表(Score)
创建以下三个数据表,并插入示例数据:
-- 学生表 CREATE TABLEStudent
(s_id
VARCHAR(20) PRIMARY KEY,s_name
VARCHAR(20) NOT NULL DEFAULT '',s_birth
VARCHAR(20) NOT NULL DEFAULT '',s_sex
VARCHAR(10) NOT NULL DEFAULT '' ); -- 课程表 CREATE TABLECourse
(c_id
VARCHAR(20) PRIMARY KEY,c_name
VARCHAR(20) NOT NULL DEFAULT '',t_id
VARCHAR(20) NOT NULL ); -- 成绩表 CREATE TABLEScore
(s_id
VARCHAR(20),c_id
VARCHAR(20),s_score
INT(3), PRIMARY KEY (s_id
,c_id
) ); -- 插入学生表测试数据 INSERT INTOStudent
VALUES ('01', '赵雷', '1990-01-01', '男'); INSERT INTOStudent
VALUES ('02', '钱电', '1990-12-21', '男'); INSERT INTOStudent
VALUES ('03', '孙风', '1990-05-20', '男'); INSERT INTOStudent
VALUES ('04', '李云', '1990-08-06', '男'); INSERT INTOStudent
VALUES ('05', '周梅', '1991-12-01', '女'); INSERT INTOStudent
VALUES ('06', '吴兰', '1992-03-01', '女'); INSERT INTOStudent
VALUES ('07', '郑竹', '1989-07-01', '女'); INSERT INTOStudent
VALUES ('08', '王菊', '1990-01-20', '女'); -- 插入课程表测试数据 INSERT INTOCourse
VALUES ('01', '语文', '02'); INSERT INTOCourse
VALUES ('02', '数学', '01'); INSERT INTOCourse
VALUES ('03', '英语', '03'); -- 插入成绩表测试数据 INSERT INTOScore
VALUES ('01', '01', 80); INSERT INTOScore
VALUES ('01', '02', 90); INSERT INTOScore
VALUES ('01', '03', 99); INSERT INTOScore
VALUES ('02', '01', 70); INSERT INTOScore
VALUES ('02', '02', 60); INSERT INTOScore
VALUES ('02', '03', 80); INSERT INTOScore
VALUES ('03', '01', 80); INSERT INTOScore
VALUES ('03', '02', 80); INSERT INTOScore
VALUES ('03', '03', 80); INSERT INTOScore
VALUES ('04', '01', 50); INSERT INTOScore
VALUES ('04', '02', 30); INSERT INTOScore
VALUES ('04', '03', 20); INSERT INTOScore
VALUES ('05', '01', 76); INSERT INTOScore
VALUES ('05', '02', 87); INSERT INTOScore
VALUES ('06', '01', 31); INSERT INTOScore
VALUES ('06', '03', 34); INSERT INTOScore
VALUES ('07', '02', 89); INSERT INTOScore
VALUES ('07', '03', 98);
题目1:查询”01”课程比”02”课程成绩高的学生的信息及课程分数
思路:首先找到课程编号为“01”和“02”的成绩,然后比较两者的成绩,筛选出课程“01”的成绩高于课程“02”的记录,最后连接学生表获取详细信息。
SELECT a.*, b.s_score AS score01, c.s_score AS score02 FROM Student a JOIN Score b ON a.s_id = b.s_id AND b.c_id = '01' LEFT JOIN Score c ON a.s_id = c.s_id AND c.c_id = '02' AND c.s_score IS NOT NULL WHERE b.s_score > c.s_score;
题目2:查询平均成绩大于60分的学生的学号和平均成绩
思路:在成绩表中按学生ID分组,计算每个学生的平均成绩,然后筛选出平均成绩大于60分的学生。
SELECT s_id, avg_score FROM ( SELECT s_id, (s_score + IFNULL(AVG(s_score), 0)) / COUNT(*) AS avg_score FROM Score GROUP BY s_id ) AS temp WHERE avg_score > 60;
题目3:查询所有同学的‘语文’课程的成绩
思路:连接课程表和成绩表,筛选出课程名为“语文”的记录。
SELECT a.s_id, s_name, c_name, b.s_score FROM Student a JOIN Score b ON a.s_id = b.s_id JOIN Course c ON b.c_id = c.c_id WHERE c.c_name = '语文';
题目4:查询没有任何一门课程成绩小于60分的所有学生的信息
思路:找出所有成绩小于60分的学生,取反集即为没有不及格课程的学生。
SELECT * FROM Student WHERE s_id NOT IN ( SELECT DISTINCT s_id FROM Score WHERE s_score < 60 );
题目5:查询“李云”的个人信息
思路:直接根据姓名查询学生表。
SELECT * FROM Student WHERE s_name = '李云';
题目6:求每门课程的平均成绩,结果按平均成绩升序排列
思路:按课程ID分组计算平均成绩,并按平均成绩排序。
SELECT c_id, c_name, avg(s_score) AS avg_score FROM Score RIGHT JOIN Course ON Score.c_id = Course.c_id GROUP BY c_id, avg(s_score) ORDER BY avg(s_score) ASC;
题目7:统计每门课程的学生人数,课程人数未超过2人的课程信息
思路:按课程ID分组统计人数,筛选出人数小于等于2的课程。
SELECT c_id, c_name, student_count FROM Course LEFT JOIN Score ON Course.c_id = Score.c_id GROUP BY c_id, c_name; HAVING student_count <= 2;
随着互联网的普及和信息技术的飞速发展台湾vps云服务器邮件,电子邮件已经成为企业和个人日常沟通的重要工具。然而,传统的邮件服务在安全性、稳定性和可扩展性方面存在一定的局限性。为台湾vps云服务器邮件了满足用户对高效、安全、稳定的邮件服务的需求,台湾VPS云服务器邮件服务应运而生。本文将对台湾VPS云服务器邮件服务进行详细介绍,分析其优势和应用案例,并为用户提供如何选择合适的台湾VPS云服务器邮件服务的参考建议。
工作时间:8:00-18:00
电子邮件
1968656499@qq.com
扫码二维码
获取最新动态