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

nat123映射怎么用?超详细步骤,外网访问内网轻松搞定
nat123域名怎么用?两种方式轻松搞定
nat123怎么用?简单几步实现内网穿透
内网穿透工具对比:nat123、花生壳与轻量新选择
远程访问内网很简单:用对工具,一“箭”穿透
ngrok下载完全指南:从入门到获取客户端
内网远程桌面软件:穿透局域网边界的数字窗口
从外网远程访问内网服务器的完整方案
Windows Server 2008端口转发完全教程:netsh命令添加/查看/删除/重置
为什么三层交换机转发比Linux服务器快?转发表硬件加速的秘密