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

数据库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 …删除不符合要求的数据
http://www.xdnf.cn/news/2240.html

相关文章:

  • 【新技术】Testfy.js v3.0 深度解析与使用指南
  • linux系统之----命令行参数和环境变量
  • xVerify:推理模型评估的革新利器,重塑LLM答案验证格局?
  • OpenFeign 快速开始
  • C++:string 1
  • YTJ笔记——FFT、NCC
  • Maven的聚合工程与继承
  • Pygame动画实战:让游戏角色动起来!
  • Java24 抗量子加密:后量子时代的安全基石
  • 华为盘古OS深度评测:构建AI自进化系统的实践密码
  • 第一性原理 | 从哲学本源到多领域实践的探索与应用
  • 腾讯二面:TCC分布式事务 | 图解TCC|用Go语言实现一个TCC
  • MyBatis 常用扩展组件详解(含代码示例)
  • 有源晶振与无源晶振详解:区别、应用与选型指南
  • 计算机视觉中的二值马尔科夫随机场
  • 代码随想录算法训练营第五十九天 | 1.ford算法精讲 卡码网94.城市间货物运输
  • 长短板理论——AI与思维模型【83】
  • 如何在 Windows 10 中使用 WSL 和 Debian 安装 Postgresql 和 Postgis
  • Vue3的内置组件 -实现过渡动画 TransitionGroup
  • 计算机二级MS Office第九套演示文稿
  • 隐私守护者的觉醒——大数据时代,我们如何对抗“透明人”危机?
  • 单链表专题(1)
  • 豆包,Kim,deepseek对比
  • Java——令牌技术
  • Oracle EBS 零金额的AP付款无法过账数据修复
  • 蓝桥杯赛场反思:技术与心态的双重修炼
  • 基于libdxfrw库读取样条曲线并离散为点
  • 在Linux虚拟机下使用vscode,#include无法跳转问题
  • 前端开发中shell的使用场景
  • 部署yolo到k230教程