数据库MySQL学习——day5(总结与复习实践)
文章目录
- 1、复习总结
- 1.1. 数据库基础
- 1.2. 表操作
- 1.3. 数据操作
- 1.4. 更新与删除
- 2、实践任务:创建学生管理系统数据库
- 2.1. 数据库设计
- 2.2. 创建表的SQL语句
- 2.3. 插入示例数据
- 2.4. 查询与数据操作示例
- 3、调试与练习
- 4、 今日小结
1、复习总结
1.1. 数据库基础
- 数据库(Database):用于存储和管理数据的容器。
- 表(Table):数据库中的基本存储结构,由行(记录)和列(字段)组成。
- 数据类型:每个字段都有特定类型,如
INT
、VARCHAR
、DATE
、DECIMAL
等。
1.2. 表操作
- 创建表:
CREATE TABLE
语句。 - 字段约束:
NOT NULL
、DEFAULT
、UNIQUE
、PRIMARY KEY
、FOREIGN KEY
等。
1.3. 数据操作
- 插入数据:
INSERT INTO ... VALUES ...
- 查询数据:SELECT … FROM …
- 条件查询:使用
WHERE
子句。 - 排序查询:使用
ORDER BY
。 - 分组查询:使用
GROUP BY
与聚合函数(COUNT(), AVG()
等)。
1.4. 更新与删除
- 更新数据:
UPDATE ... SET ... WHERE ...
- 删除数据:
DELETE FROM ... WHERE ...
2、实践任务:创建学生管理系统数据库
2.1. 数据库设计
① 学生表(student)
字段名 | 数据类型 | 说明 |
---|---|---|
student_id | INT PRIMARY KEY | 学生ID,主键 |
name | VARCHAR(100) NOT NULL | 姓名 |
age | INT | 年龄 |
birth_date | DATE | 出生日期 |
② 课程表(course)
字段名 | 数据类型 | 说明 |
---|---|---|
course_id | INT PRIMARY KEY | 课程ID,主键 |
course_name | VARCHAR(100) NOT NULL | 课程名称 |
credit | INT | 学分 |
③ 成绩表(grade)
字段名 | 数据类型 | 说明 |
---|---|---|
grade_id | INT PRIMARY KEY | 成绩记录ID,主键 |
student_id | INT | 学生ID(外键,关联 student) |
course_id | INT | 课程ID(外键,关联 course) |
score | DECIMAL(5,2) | 成绩分数 |
2.2. 创建表的SQL语句
-- 创建学生表
CREATE TABLE student (student_id INT NOT NULL PRIMARY KEY,name VARCHAR(100) NOT NULL,age INT,birth_date DATE
);-- 创建课程表
CREATE TABLE course (course_id INT NOT NULL PRIMARY KEY,course_name VARCHAR(100) NOT NULL,credit INT
);-- 创建成绩表,关联外键
CREATE TABLE grade (grade_id INT NOT NULL PRIMARY KEY,student_id INT,course_id INT,score DECIMAL(5,2),FOREIGN KEY (student_id) REFERENCES student(student_id) ON DELETE CASCADE,FOREIGN KEY (course_id) REFERENCES course(course_id) ON DELETE CASCADE
);
2.3. 插入示例数据
-- 插入学生数据
INSERT INTO student (student_id, name, age, birth_date) VALUES
(1, '张三', 19, '2005-05-15'),
(2, '李四', 20, '2004-03-22'),
(3, '王五', 18, '2006-09-10');-- 插入课程数据
INSERT INTO course (course_id, course_name, credit) VALUES
(101, '数学', 3),
(102, '英语', 2),
(103, '物理', 4);-- 插入成绩数据
INSERT INTO grade (grade_id, student_id, course_id, score) VALUES
(1, 1, 101, 85.5),
(2, 1, 102, 78.0),
(3, 2, 101, 90.0),
(4, 2, 103, 88.5),
(5, 3, 102, 70.0);
2.4. 查询与数据操作示例
查询所有学生的信息
SELECT * FROM student;
查询每个学生的平均成绩
SELECT student_id, AVG(score) AS avg_score
FROM grade
GROUP BY student_id;
查询选了物理课程(course_id = 103)的学生姓名和成绩
SELECT s.name, g.score
FROM student s
JOIN grade g ON s.student_id = g.student_id
WHERE g.course_id = 103;
更新某个学生的年龄(比如把王五改为19岁)
UPDATE student
SET age = 19
WHERE name = '王五';
删除成绩低于 75 分的记录
DELETE FROM grade
WHERE score < 75;
3、调试与练习
✅ 小练习推荐:
1.查询:所有课程的学分总和。
SELECT SUM(credit) AS total_credit FROM course;
2.查询:每门课程的最高分。
SELECT course_id, MAX(score) AS max_score
FROM grade
GROUP BY course_id;
3.更新:把李四的姓名改为李四四。
UPDATE student
SET name = '李四四'
WHERE name = '李四';
4.删除:删除出生年份早于2005年的学生。
DELETE FROM student
WHERE birth_date < '2005-01-01';
4、 今日小结
内容 | 关键词 | 说明 |
---|---|---|
数据库设计 | student、course、grade 三张表 | 完整设计表结构及关系 |
插入数据 | INSERT INTO | 为每张表插入多条示例数据 |
查询数据 | SELECT、JOIN、GROUP BY | 查询学生成绩、统计数据 |
更新数据 | UPDATE … SET … WHERE … | 更新特定记录 |
删除数据 | DELETE FROM … WHERE … | 删除不符合要求的数据 |