本文目录导读:
图片来源于网络,如有侵权联系删除
随着信息技术的飞速发展,数据已成为企业决策和运营的核心资源,为了有效地管理和分析这些海量的数据,关系数据库管理系统(RDBMS)成为了不可或缺的工具,SQL(Structured Query Language),即结构化查询语言,作为与所有主流关系型数据库交互的标准语言,其重要性不言而喻。
本实验旨在通过一系列操作,深入理解SQL语言的语法和应用,掌握如何使用SQL进行数据的增删改查等基本操作,以及更高级的数据分析和处理功能。
实验目的
- 熟悉SQL的基本语法:包括SELECT、INSERT、UPDATE、DELETE等语句的使用。
- 掌握SQL的数据查询技巧:如WHERE子句、GROUP BY、ORDER BY等的使用。
- 了解SQL的数据完整性约束:如主键、外键、唯一性约束等。
- 学习SQL的高级功能:如视图、存储过程、触发器等。
实验环境
- 操作系统:Windows 10
- 数据库管理系统:MySQL 8.0
- 编程工具:MySQL Workbench
实验步骤及结果
创建数据库和数据表
首先创建一个名为student
的数据库,并在其中创建两个表:students
和courses
。
CREATE DATABASE student; USE student; CREATE TABLE students ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), age INT, gender CHAR(1) ); CREATE TABLE courses ( id INT AUTO_INCREMENT PRIMARY KEY, course_name VARCHAR(200), credits INT );
插入数据
向students
表中插入一些学生记录:
INSERT INTO students (name, age, gender) VALUES ('Alice', 20, 'F'); INSERT INTO students (name, age, gender) VALUES ('Bob', 22, 'M'); INSERT INTO students (name, age, gender) VALUES ('Charlie', 21, 'M');
向courses
表中插入一些课程记录:
INSERT INTO courses (course_name, credits) VALUES ('Mathematics', 4); INSERT INTO courses (course_name, credits) VALUES ('Physics', 3); INSERT INTO courses (course_name, credits) VALUES ('Chemistry', 3);
查询数据
基础查询
查询所有学生的姓名和年龄:
SELECT name, age FROM students;
条件查询
查询年龄大于20岁的学生:
SELECT * FROM students WHERE age > 20;
排序查询
按年龄升序排列查询所有学生:
SELECT * FROM students ORDER BY age ASC;
分组查询
计算每个性别的学生人数:
图片来源于网络,如有侵权联系删除
SELECT gender, COUNT(*) AS count FROM students GROUP BY gender;
连接查询
查询每位学生所选的课程名称和学分:
SELECT s.name, c.course_name, c.credits FROM students s JOIN courses c ON s.id = c.id;
更新和删除数据
更新某个学生的年龄:
UPDATE students SET age = 23 WHERE name = 'Bob';
删除某个学生记录:
DELETE FROM students WHERE name = 'Charlie';
高级功能
视图
创建一个只包含学生姓名和年龄的视图:
CREATE VIEW student_view AS SELECT name, age FROM students;
存储过程
编写一个存储过程来添加新的学生记录:
DELIMITER // CREATE PROCEDURE AddStudent(IN p_name VARCHAR(100), IN p_age INT, IN p_gender CHAR(1)) BEGIN INSERT INTO students (name, age, gender) VALUES (p_name, p_age, p_gender); END // DELIMITER ;
调用该存储过程:
CALL AddStudent('David', 19, 'M');
触发器
创建一个触发器在每次插入学生记录时自动设置年龄为18岁:
DELIMITER // CREATE TRIGGER SetAgeBeforeInsert BEFORE INSERT ON students FOR EACH ROW SET NEW.age = IFNULL(NEW.age, 18); // DELIMITER ;
通过本次实验,我深入学习了SQL的基础语法和高级应用,从基础的增删改查到复杂的数据连接和分析,我对SQL有了更加全面的认识,我也掌握了如何在MySQL中创建和使用视图、存储过程和触发器,这为进一步优化数据库性能和管理提供了有力支持,我会继续深入学习SQL,提高自己的数据处理能力,为企业信息化建设贡献力量。
标签: #关系数据库标准语言sql实验报告
评论列表