MySQL数据教程课后实操练习指南
mysql数据教程课后练习

首页 2025-07-22 19:39:22



MySQL数据教程课后练习:深化理解与实践掌握 在完成MySQL数据教程的学习之后,通过一系列精心设计的课后练习,不仅能够巩固理论知识,还能大幅提升实际操作能力

    本文旨在为你提供一系列有深度、具实践性的练习题目及解析,帮助你全面掌握MySQL数据库的管理与应用技能

    无论你是初学者还是希望进一步提升的数据库管理员,这些练习都将是你提升MySQL技能不可或缺的宝贵资源

     一、基础操作练习 1. 创建数据库与表 题目:创建一个名为“School”的数据库,并在其中创建两张表:“Students”(学生信息表)和“Courses”(课程信息表)

    “Students”表包含以下字段:学号(ID,主键,自增)、姓名(Name,VARCHAR类型)、年龄(Age,INT类型);“Courses”表包含以下字段:课程号(CourseID,主键,自增)、课程名(CourseName,VARCHAR类型)、学分(Credits,FLOAT类型)

     解析: sql -- 创建数据库 CREATE DATABASE School; -- 使用数据库 USE School; -- 创建Students表 CREATE TABLE Students( ID INT AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(50) NOT NULL, Age INT NOT NULL ); -- 创建Courses表 CREATE TABLE Courses( CourseID INT AUTO_INCREMENT PRIMARY KEY, CourseName VARCHAR(100) NOT NULL, Credits FLOAT NOT NULL ); 2. 数据插入与查询 题目:向“Students”表中插入5条学生记录,向“Courses”表中插入3条课程记录,并查询所有学生信息

     解析: sql --插入学生信息 INSERT INTO Students(Name, Age) VALUES(Alice,20),(Bob,22),(Charlie,21),(David,23),(Eva,20); --插入课程信息 INSERT INTO Courses(CourseName, Credits) VALUES(Mathematics,3.0),(Physics,4.0),(History,2.0); -- 查询所有学生信息 SELECTFROM Students; 二、进阶操作练习 3. 数据更新与删除 题目:将“Students”表中年龄为20的学生年龄修改为21,并删除“Courses”表中课程名为“History”的记录

     解析: sql -- 更新学生年龄 UPDATE Students SET Age =21 WHERE Age =20; -- 删除课程记录 DELETE FROM Courses WHERE CourseName = History; 4. 表连接查询 题目:创建第三张表“Enrollments”(选课记录表),包含字段:学号(StudentID,外键,引用“Students”表的ID)、课程号(CourseID,外键,引用“Courses”表的CourseID)、成绩(Grade,FLOAT类型)

    向“Enrollments”表中插入数据,并查询所有学生及其所选课程信息(包括课程名和成绩)

     解析: sql -- 创建Enrollments表 CREATE TABLE Enrollments( StudentID INT, CourseID INT, Grade FLOAT, PRIMARY KEY(StudentID, CourseID), FOREIGN KEY(StudentID) REFERENCES Students(ID), FOREIGN KEY(CourseID) REFERENCES Courses(CourseID) ); --插入选课记录(假设每个学生选择了一门课程) INSERT INTO Enrollments(StudentID, CourseID, Grade) VALUES (1,1,85.0),(2,2,90.0),(3,3,78.0), (4,1,88.0),(5,2,92.0); -- 查询所有学生及其所选课程信息 SELECT Students.Name, Courses.CourseName, Enrollments.Grade FROM Enrollments JOIN Students ON Enrollments.StudentID = Students.ID JOIN Courses ON Enrollments.CourseID = Courses.CourseID; 三、高级功能练习 5.索引与性能优化 题目:为“Students”表的“Name”字段创建索引,并比较创建索引前后的查询性能(查询名为“Alice”的学生信息)

     解析: sql -- 创建索引 CREATE INDEX idx_name ON Students(Name); -- 查询性能对比(使用EXPLAIN查看查询计划) -- 创建索引前 EXPLAIN SELECT - FROM Students WHERE Name = Alice; -- 创建索引后 EXPLAIN SELECT - FROM Students WHERE Name = Alice; 通过`EXPLAIN`命令,你可以观察到创建索引后查询效率的提升,索引可以显著加快特定查询的速度

     6.视图与存储过程 题目:创建一个视图“StudentGrades”,显示学生姓名、课程名及成绩,并编写一个存储过程“GetStudentAverageGrade”,输入学生学号,返回该学生的平均成绩

     解析: sql -- 创建视图 CREATE VIEW StudentGrades AS SELECT Students.Name, Courses.CourseName, Enrollments.Grade FROM Enrollments JOIN Students ON Enrollments.StudentID = Students.ID JOIN Courses ON Enrollments.CourseID = Courses.CourseID; -- 创建存储过程 DELIMITER // CREATE PROCEDURE GetStudentAverageGrade(IN studentID INT, OUT avgGrade FLOAT) BEGIN SELECT AVG(Grade) INTO avgGrade FROM Enrollments WHERE StudentID = studentID; END // DELIMITER ; --调用存储过程并获取结果 CALL GetStudentAverageGrade(1, @avgGrade); SELECT @avgGrade; 7.触发器与事务 题目:创建一个触发器,当向“Enrollments”表中插入新记录时,检查学生成绩是否大于100或小于0,若是,则阻止插入并给出提示

    另外,编写一个事务,插入一条学生记录,同时尝试插入两条选课记录,如果其中任何一条插入失败,则回滚整个事务

     解析: sql -- 创建触发器 DELIMITER // CREATE TRIGGER check_grade BEFORE I

MySQL连接就这么简单!本地远程、编程语言连接方法一网打尽
还在为MySQL日期计算头疼?这份加一天操作指南能解决90%问题
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道