第 4 章 数据库的创建和管理
前三章讲道理,这一章第一次真的把库建出来。

知道更多本章三块
先看数据怎么存(存储引擎),再看文字怎么存(字符集),最后动手建库改库删库。
想一想
装好的 MySQL 里,一条数据到底躺在什么地方?
前三章讲道理,这一章第一次真的把库建出来。

先看数据怎么存(存储引擎),再看文字怎么存(字符集),最后动手建库改库删库。
装好的 MySQL 里,一条数据到底躺在什么地方?
三块内容,各回答一个问题。

| 这一块 | 回答什么 |
|---|---|
| 存储引擎 | 一行数据怎么存怎么找 |
| 字符集 | 汉字怎么存才不乱码 |
| 数据库管理 | 建库、改库、删库 |
三块里最容易出事的是字符集,乱码问题全出在这一块。
存储引擎决定数据怎么存、索引怎么建、怎么查怎么改。

一条 SHOW ENGINES,就能看见这台机器认得哪几种引擎。

默认引擎是 InnoDB,一条 SET 就能换掉。

换了默认引擎只影响之后新建的表,已经建好的表一动不动。
建表时把 ENGINE 写清楚,和靠默认,哪个更稳妥?
七种引擎,先记住类比:银行、图书馆、内存仓库、黑洞。

整张表最该看的是「典型用途」那一列,选引擎就是选场景。
学生选课系统的选课表,你会交给哪个引擎?
InnoDB 像银行,账做一半可以整笔撤销。

| 账户 | 余额 | 合计 |
|---|---|---|
| 张三 | 500 | 800 |
| 李四 | 300 |
MySQL 5.5 以后 InnoDB 就是默认引擎,不特别说明都用它。
MyISAM 像图书馆,查得快,但不支持事务。

| InnoDB | MyISAM |
|---|---|
| 支持事务 | 不支持事务 |
| 行级锁 | 表级锁 |
| 有专门缓冲池 | 靠操作系统 |
| 并发写得住 | 以查询为主 |
5.5 之前 MyISAM 是默认引擎,接手老系统时还会碰到。
一个只发文章、几乎不改的新闻站,用哪个更划算?
MEMORY 把表放在内存里,快,但一断电就没了。

像写在白板上,随手记随手擦,下班擦掉也不心疼。
只拿它放临时表、缓存和统计中间结果,正式数据不能放。
断电就没的表,为什么还有人愿意用?
剩下四种各管一件小事,知道名字和用途就够。

| 引擎 | 拿来干什么 |
|---|---|
| MERGE | 多张 MyISAM 当一张查 |
| BLACKHOLE | 写进去就丢,用来压测 |
| CSV | 存成 Excel 能打开的文件 |
| ARCHIVE | 压得很小,只进不改 |
BLACKHOLE 像只测发球速度、不管球落哪,专门用来量数据库能扛多少。
写进去就丢的引擎,能拿来做什么?
选引擎只问一句:这张表最怕什么。

订单要付款、扣库存、能回滚,必须支持事务,只有 InnoDB 做得到。
拿不准就用 InnoDB,它是默认值,也是绝大多数业务的正确答案。