关系型数据库(MySQL)
MySQL 是最适合零基础建立“数据表”概念的数据库之一。
如果你以后要做用户系统、订单系统、题库、文章、商城,MySQL 几乎都会出现。
为什么需要数据库
如果你只把数据写在 Python 变量里,程序一结束,数据通常就没了。
而数据库的作用,就是把数据稳定地保存下来,并且让你后面可以继续:
- 新增数据
- 修改数据
- 删除数据
- 查询数据
先建立四个最重要的概念
- 数据库:可以理解成一个总仓库
- 表:仓库中的一张分类表
- 行:表里的一条记录
- 列:表里的一个字段
例如,一张学生表可能长这样:
| id | name | age | city |
|---|---|---|---|
| 1 | 小明 | 18 | 北京 |
| 2 | 小红 | 19 | 上海 |
这里:
id、name、age、city是列- 每个学生是一行
第一步:创建数据库
sql
CREATE DATABASE study_db;这条语句的意思是:创建一个叫 study_db 的数据库。
第二步:进入数据库
sql
USE study_db;这一步很像你在文件系统里先 cd 进入某个目录,后面的表操作都会在这个数据库里进行。
第三步:创建表
sql
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT,
city VARCHAR(50)
);这张表里:
id是主键AUTO_INCREMENT表示自动递增name不能为空
第四步:插入数据
sql
INSERT INTO students (name, age, city)
VALUES ('小明', 18, '北京');再插入一条:
sql
INSERT INTO students (name, age, city)
VALUES ('小红', 19, '上海');第五步:查询数据
查询全部数据:
sql
SELECT * FROM students;你会得到类似这样的结果:
text
+----+------+-----+------+
| id | name | age | city |
+----+------+-----+------+
| 1 | 小明 | 18 | 北京 |
| 2 | 小红 | 19 | 上海 |
+----+------+-----+------+有条件地查:
sql
SELECT name, age FROM students WHERE age >= 18;第六步:更新数据
sql
UPDATE students
SET city = '深圳'
WHERE id = 1;这条语句的意思是:把 id = 1 这一行的城市改成深圳。
第七步:删除数据
sql
DELETE FROM students WHERE id = 2;删除前一定要加条件。
如果你写成:
sql
DELETE FROM students;那整张表的数据都会被删掉。
字段类型怎么理解
你会经常看到这些字段类型:
INT:整数VARCHAR(50):最多 50 个字符的文本TEXT:更长的文本DATETIME:日期时间
字段约束是什么
约束是为了保证数据质量。常见约束有:
PRIMARY KEY:主键,唯一标识一条记录NOT NULL:不能为空UNIQUE:不能重复DEFAULT:默认值
表索引是什么
索引可以理解成书的目录。
没有目录时,你要一页一页翻;有目录时,你能更快定位内容。
数据库也是一样:
- 没有索引:查询慢
- 有索引:查询快
但索引也不是越多越好,因为新增和修改数据时也要维护索引。
表关系是什么
真实项目里通常不止一张表。
常见关系:
- 一对一
- 一对多
- 多对多
例如:
- 一个班级对应多个学生,是一对多
- 一个学生可选多门课程,一门课程也能被多个学生选,是多对多
高级查询会学什么
当你把基础增删改查练熟后,下一步会继续接触:
- 排序
ORDER BY - 分组
GROUP BY - 聚合函数
COUNT、SUM、AVG - 多表联查
JOIN
事务为什么重要
事务适合这种场景:
- A 扣钱
- B 加钱
这两个动作要么一起成功,要么一起失败。
如果只成功一半,数据就错了。
所以事务的核心价值是:保证一组操作的一致性。
零基础学习建议
学 MySQL 时,不要一开始就背所有 SQL 语法。
最有效的顺序是:
- 创建数据库
- 创建表
- 插入数据
- 查询数据
- 更新数据
- 删除数据
- 再学约束、关系、索引、事务