当前位置: 首页 > news >正文

数据库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):数据库中的基本存储结构,由行(记录)和列(字段)组成。
  • 数据类型:每个字段都有特定类型,如 INTVARCHARDATEDECIMAL 等。

1.2. 表操作

  • 创建表:CREATE TABLE 语句。
  • 字段约束:NOT NULLDEFAULTUNIQUEPRIMARY KEYFOREIGN 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_idINT PRIMARY KEY学生ID,主键
nameVARCHAR(100) NOT NULL姓名
ageINT年龄
birth_dateDATE出生日期

② 课程表(course)

字段名数据类型说明
course_idINT PRIMARY KEY课程ID,主键
course_nameVARCHAR(100) NOT NULL课程名称
creditINT学分

③ 成绩表(grade)

字段名数据类型说明
grade_idINT PRIMARY KEY成绩记录ID,主键
student_idINT学生ID(外键,关联 student)
course_idINT课程ID(外键,关联 course)
scoreDECIMAL(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 …删除不符合要求的数据

相关文章:

  • AAAI2016论文 UCO: A Unified Cybersecurity Ontology
  • i18n-ai-translate开源程序,可以使用DeepSeek等模型将您的 i18nJSON翻译成任何语言
  • PyTorch作为深度学习框架在建筑行业的应用
  • pymongo功能整理与基础操作类
  • 力扣面试150题--合并两个有序链表和随机链表的复制
  • SpringBoot物资管理系统 | JavaWeb项目设计与实现
  • 04-谷粒商城笔记
  • 测试用例的设计
  • 迷宫问题演示
  • ShaderToy学习笔记 03.多个形状和旋转
  • ‌C/C++对时间的处理
  • Scratch——第19课 正话反说问题
  • 线程池(四):并发编程常见问题解析
  • QT6 源(52)篇二:存储 c 语言字符串的类 QByteArray 的使用举例,
  • 中美艺术教育深度融合,Glowstar与ACSDA在尔湾签署战略合作协议推动艺术发展
  • ShaderToy学习笔记 02.圆
  • JAVA多线程(8.0)
  • Pygame核心概念解析:Surface、Clock与事件循环
  • C++学习-入门到精通-【2】类、对象和字符串的介绍
  • 2025.04.26-饿了么春招笔试题-第二题
  • 新干式二尖瓣瓣膜国内上市,专家:重视瓣膜病全生命周期管理
  • 中国海警局新闻发言人就菲律宾非法登临铁线礁发表谈话
  • 张译、惠英红分获第二十届中国电影华表奖优秀男、女演员奖
  • 伊朗最大港口爆炸:26公里外都能听到,超七百人受伤,原因指向化学品储存
  • 美联合健康集团高管枪杀案嫌疑人对谋杀指控不认罪
  • 美施压拉美国家选边站队,外交部:搞阵营对抗注定失败