1. 创建数据库
使用之前,我们先来创建数据库。打开客户端软件,并连接上去。选择,新增数据库
第一个项是数据库的名字,我们设置为clwy_api_development,这里的名字和我们项目名称对应,后面的development表示它是在开发环境中使用的数据库。
接着是Database Encoding,也就是编码的选择,这里默认使用了utf8mb4。非常的好,utf8是一种能非常好的支持世界各国语言的编码。后面的mb4可以让数据库正确的存储emoji表情符号,所以我们就用这个。
最后是Database Collation,这是排序规则的选择。它的意思是,对文本数据进行比较和排序时,该如何处理顺序和规则。这里选择utf8mb4_general_ci,它的意思是:不区分大小写,不区分重音符号。
2. 创建数据表
现在数据库已经有了,一定要确认一下,我们现在所在的数据库是clwy_api_development。
接着就要来创建数据表了。大家可以这样理解,数据库就是一个Excel文件。在一个Excel文件里,我们可以创建很多的表。有的表要记录用户信息,有的表要记录订单信息,还有的表要记录文章信息,等等等等。
现在就来创建一个文章表吧。点击加号,表的名字,我们叫做Articles。
注意一下,
- 首字母大写:这里的首字母需要大写,如果你命名成小写了,将来部署到
Linux服务器会报错的。 - 复数形式:最后的
s,这个复数形式,也是必须的。如果你的命名掉了s,在后面我们使用Node.js查询数据的时候,它也会无法找到这张表的。
3. 常见的数据类型
创建好表后,我们还需要创建一些字段。字段,大家就理解成表格里面的栏目,例如我们这里是一个文章表,那么最起码的,需要:文章的标题、文章的内容两个字段。
默认已经出现了一个叫做id的字段,这是用来记录每一篇文章的编号的。
里面有一些默认已经选中的东西,我们需要做一个认识,
这里有个,INT,它表示当前字段的类型。数据库的类型有很多,我们将它们分为三大类,一起来简单了解一下
3.1. 整数类型
| 类型 | 字节大小 | 有符号范围 (Signed) | 无符号范围 (Unsigned) |
|---|---|---|---|
| TINYINT | 1 | -128 ~ 127 | 0 ~ 255 |
| SMALLINT | 2 | -32768 ~ 32767 | 0 ~ 65535 |
| MEDIUMINT | 3 | -8388608 ~ 8388607 | 0 ~ 16777215 |
| INT/INTEGER | 4 | -2147483648 ~2147483647 | 0 ~ 4294967295 |
| BIGINT | 8 | -9223372036854775808 ~ 9223372036854775807 | 0 ~ 18446744073709551615 |
这里有各种各样的整数,当然最常用的就是INT了。另外这里又分为有符号和无符号,其实很简单,符号就是负号。这里的无符号也就是说,没有负数。
3.2. 字符串
| 类型 | 说明 | 使用场景 |
|---|---|---|
| CHAR | 固定长度,小型固定长度的数据 | 身份证号、手机号、电话、密码 |
| VARCHAR | 可变长度,小型数据 | 姓名、地址、品牌、型号、用户的评论、文章的标题 |
| TEXT | 可变长度,字符个数大于 4000 | 存储文章正文 |
| LONGTEXT | 可变长度,超大型文本数据 | 存储超大型文本数据 |
字符串也有很多种,常用的是char、varchar和text。这里还有个char需要注意,它和varchar有一定区别。
- char:
char是固定长度的,例如你选择char,并设定成 10 位长度。哪怕当你只存入 2 位长度的字符,那么依然会占据 10 位的空间。 - varchar:而
varchar,指定的是最大长度,而不是固定长度。它的实际存储大小,取决于存储的内容的长度,所以一些不固定长度的内容,例如用户的姓名,文章的标题这些长度不固定的东西,就非常适合了。 - 性能:另外在性能上,
char的速度更快一些,缺点是char的占用空间也更大一些。
3.3. 时间类型
| 类型 | 字节大小 | 示例 |
|---|---|---|
| DATE | 4 | '2020-01-01' |
| TIME | 3 | '12:29:59' |
| DATETIME | 8 | '2020-01-01 12:29:59' |
| YEAR | 1 | '2017' |
| TIMESTAMP | 4 | '1970-01-01 00:00:01' UTC ~ '2038-01-01 00:00:01' UTC |
一般最常见的就是datetime了,因为日期和具体时间都记录的清清楚楚了。
4. 主键
接着大家看这里,有个key,里面写的PRI。它是主键的意思。一般,我们给每个表,都设置一个id,并把它设置成primary key。它是用来唯一标识当前这行数据的,大家就简单的理解为,用来给每条数据加了个编号。通过编号,你就能找到这条独一无二的数据了。
主键,还会搭配自增(auto_increment)来使用。
自增的意思就是说,当你在数据库增加第一条数据,它的 id,就自动会设定成:1。再加入第二条数据,id 会自动设定成:2。以此类推,一直自己增加下去。
这里的还有个Allow Null,是用来设定是否是空值的。不勾选它,就是不允许空,必须有东西存在。
5. 增加标题和内容
介绍就到这里了。我们这里的文章表,需要增加标题和内容。依照我们所学的知识,分别增加,title和content。还要将title设置为not null,表示标题不允许是空的,内容字段就不管了。
| 字段 | 类型 | 长度 | Allow Null |
|---|---|---|---|
| title | varchar | 255 | false |
| content | text | 无 | true |
好了,历经千辛万苦,咱们的第一张表终于顺利的建完了。
6. Navicat 的操作
使用 Navicat 的同学,还是跟着课程讲义里面的图片来操作,有问题来辅导群里叫我。
Navicat 要在本机上,点右键,选择新建数据库
然后点击,新建表。
然后依次添加id、title和content字段,
最后点击保存,输入表名:Articles
7. 总结一下
- 开发后端,实际上就是使用代码操作数据库
- 数据库的编码选择
utf8mb4,字符集选择utf8mb4_general_ci 数据库里面有数据表,数据表里又有字段- 所有的表,最好都要有
主键,也就是id字段 - 最常用的数据类型
| 类型 | 含义 | 说明 |
|---|---|---|
| int | 整数 | 需要设定长度 |
| decimal | 小数 | 金额常用,需要设定长度。如 decimal(10, 2) 表示共存 10 位数,其中小数占 2 位 |
| char、varchar | 字符串 | 文字类的常用,需要设定长度。例如身份证号、文章的标题使用。 |
| text | 文本 | 存储大文本,无需设定长度。一般会用文字很多的时候,例如文章的正文部分。 |
| date、time、datetime | 日期 | 记录时间 |