2.基础结构
2.1.结构及名称
数据库 database
表空间 tablespaces(Oracle)
表格 table
字段 column
记录 record
值 value
2.2.数据库 database
在配置文件中指定存放位置
# 设置mysql数据库的数据的存放目录
datadir=D:\MySQL\mysql-8.0.16-winx64\data
每个数据库对应一个文件夹

2.3.表格 table
每个表对应 文件夹中的 .ibd 文件

2.3.1.表格结构
表纵向 叫 字段 column
表横向 叫 记录 record
每行记录对应字段的内容叫 值 value

2.4.字段类型
2.4.1.字符串类型
字符串类型又分为文本字符串和二进制字符串
| 类型 | 存储 | 大小 |
|---|---|---|
| * CHAR(M) | M字节,1 <= M <=255 | |
| * VARCHAR | L+1字节, L<= M , | |
| TINYTEXT | 0-255 字节 | |
| * TEXT | 0-65535 字节 | |
| MEDIUMTEXT | 0-16,777,215 字节 | |
| LONGTEXT | 0-4,294,967,295 or 4GB 字节 | |
| ENUM | 1或2字节 | |
| TINYBLOB | 0-255 字节 | |
| BLOB | 0-65535 字节 | |
| MEDIUMBLOB | 0-16,777,215 字节 | |
| LONGBLOB | 0-4,294,967,295 or 4GB 字节 |
varchar(M)说明 括号内的M和INT(4)类型的限制不一样,这里M对插入数据的长度有限制,超长就会报错
2.4.2.数值类型
包括整数类型TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、浮点小数数据类型FLOAT和DOUBLE,定点小数类型DECIMAL。
| 类型 | 存储 | 范围(有符号) | 无符号 |
|---|---|---|---|
| TINYINT | 1字节 | -128~127 | 0~255() |
| SMALLINT | 2字节 | 32768~32767 | 0~65535 |
| MEDIUMINT | 3字节 | -8388608~8388607 | 0~16777215 |
| *INT | 4字节 | -2147483648~2147483647 | 0~4294967295 |
| *BIGINT | 8字节 | ||
| FLOAT | 4字节 | ||
| *DOUBLE | 8字节 | ||
| *DECIMAL(M,N) | M+2字节 |
2.4.3.时间类型
包括YEAR、TIME、DATE、DATETIME和TIMESTAMP
| 类型 | 日期格式 | 范围 | |
|---|---|---|---|
| YEAR | YYYY | 1901-2155 | 1字节 |
| TIME | HH:MM:SS | 3字节 | |
| *DATE | YYYY-MM-DD | 3字节 | |
| *DATETIME | YYYY-MM-DD HH:MM:SS | 8字节 | |
| TIMESTAMP | YYYY-MM-DD HH:MM:SS | 4字节 |
注意: TIMESTAMP的范围是1970年到2038年, 可以根据当前时间戳更新
TIMESTAMP与DATETIME除了存储字节和支持的范围不同外,还有一个最大的区别就是:DATETIME在存储日期数据时,按实际输入的格式存储,即输入什么就存储什么,与时区无关;而TIMESTAMP值的存储是以UTC(世界标准时间)格式保存的,存储时对当前时区进行转换,检索时再转换回当前时区。查询时,不同时区显示的时间值是不同的。
2.5.字段角色
2.5.1.主键 primary key
在当前表中这个字段的值要保证唯一, 并且不能为null
2.5.2.外键 foreign key
与另一表的唯一性字段(通常是主键)对应