本文目录导读:
实验目的与要求
本次实验旨在通过实际操作加深对关系数据库标准语言SQL的理解和应用能力,主要任务包括创建数据库、设计表结构、插入数据、查询数据以及执行复杂的SQL语句。
实验环境与工具
实验环境为Windows 10操作系统,使用MySQL Workbench作为数据库管理工具。
实验步骤与过程
创建数据库和表结构
-
连接到MySQL服务器
图片来源于网络,如有侵权联系删除
打开MySQL Workbench,输入服务器地址、端口、用户名和密码进行连接。
-
创建数据库
CREATE DATABASE `mydatabase`;
-
选择数据库
- 在左侧导航栏中选择
mydatabase
数据库。
- 在左侧导航栏中选择
-
创建学生信息表(student_info)
CREATE TABLE student_info ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50), age INT, gender CHAR(1), address VARCHAR(100), PRIMARY KEY (id) );
-
创建课程信息表(course_info)
CREATE TABLE course_info ( id INT NOT NULL AUTO_INCREMENT, course_name VARCHAR(50), credit DECIMAL(3,1), teacher VARCHAR(50), PRIMARY KEY (id) );
-
创建选课记录表(enrollment_record)
CREATE TABLE enrollment_record ( sid INT, cid INT, grade DECIMAL(3,1), FOREIGN KEY (sid) REFERENCES student_info(id), FOREIGN KEY (cid) REFERENCES course_info(id) );
插入数据
-
向学生信息表中插入数据
INSERT INTO student_info (name, age, gender, address) VALUES ('张三', 20, '男', '北京市朝阳区'); INSERT INTO student_info (name, age, gender, address) VALUES ('李四', 21, '女', '上海市浦东新区'); -- 添加更多学生信息...
-
向课程信息表中插入数据
INSERT INTO course_info (course_name, credit, teacher) VALUES ('数据库原理', 4.0, '王老师'); INSERT INTO course_info (course_name, credit, teacher) VALUES ('计算机网络', 3.5, '张老师'); -- 添加更多课程信息...
-
向选课记录表中插入数据
图片来源于网络,如有侵权联系删除
INSERT INTO enrollment_record (sid, cid, grade) VALUES (1, 1, 85); INSERT INTO enrollment_record (sid, cid, grade) VALUES (2, 2, 90); -- 添加更多选课记录...
查询数据
-
查询所有学生的基本信息
SELECT * FROM student_info;
-
查询某位学生的详细信息
SELECT * FROM student_info WHERE name = '张三';
-
查询所有课程的学分情况
SELECT course_name, credit FROM course_info;
-
查询某门课程的详细信息和选修该课程的学生人数
SELECT course_name, COUNT(*) AS student_count FROM enrollment_record JOIN course_info ON enrollment_record.cid = course_info.id GROUP BY course_name;
复杂查询与统计
-
查询平均成绩最高的前两名课程
SELECT course_name, AVG(grade) AS average_grade FROM enrollment_record JOIN course_info ON enrollment_record.cid = course_info.id GROUP BY course_name ORDER BY average_grade DESC LIMIT 2;
-
查询选修了“数据库原理”且成绩大于等于90分的学生姓名
SELECT si.name FROM student_info si JOIN enrollment_record er ON si.id = er.sid JOIN course_info ci ON er.cid = ci.id WHERE ci.course_name = '数据库原理' AND er.grade >= 90;
实验总结与反思
通过本次实验,我深入学习了如何使用SQL语言在关系型数据库中进行数据的增删改查操作,熟练掌握了基本的CRUD操作后,我开始尝试编写更复杂的查询语句,如分组聚合函数的使用以及JOIN子句的应用等,我也意识到在实际应用中需要考虑性能优化和数据完整性等问题,这为进一步的学习和实践提供了方向和动力。
参考文献
- MySQL官方文档:https://dev.mysql.com/doc/
标签: #关系数据库标准语言sql实验报告
评论列表