数据库基础(4) . 数据库结构
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
与另一表的唯一性字段(通常是主键)对应