数据类型和约束:保证数据的准确性和完整性
1、数据类型
- 数据类型是指在创建表的时候为表中字段指定数据类型
- 只有数据符合类型要求才能存储起来
- 使用数据类型的原则:尽量使用取值范围小的,够用即可,以节省存储空间
常用数据类型如下:
- 整数:int,bit
- 小数:decimal
- 字符串:varchar,char
- 日期时间: date, time, datetime
- 枚举类型(enum)
数据类型说明:
- decimal表示浮点数,如 decimal(5, 2) 表示共存5位数,小数占 2 位
- char表示固定长度的字符串,如char(3),如果填充'ab'时会补一个空格为'ab ',3表示字符数
- varchar表示可变长度的字符串,如varchar(3),填充'ab'时就会存储'ab',3表示最大字符数
- 对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径
- 字符串 text 表示存储大文本,当字符大于 4000 时推荐使用, 比如技术博客
数据类型附录表:
整数类型
类型 | 字节大小 | 有符号范围(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 |
字符串
类型 | 说明 | 使用场景 |
---|---|---|
char | 固定长度,小型数据 | 身份证号、手机号、电话、密码 |
varchar | 可变长度,小型数据 | 姓名、地址、品牌、型号 |
text | 可变长度,字符个数大于 4000 | 存储小型文章或者新闻 |
longtext | 可变长度, 极大型文本数据 | 存储极大型文本数据 |
时间类型
类型 | 字节大小 | 示例 |
---|---|---|
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 |
2、数据约束
约束是指数据在数据类型限定的基础上额外增加的要求.
约束名称 | 约束 | 含义 |
---|---|---|
主键 | primary key | 物理上存储的顺序 MySQL 建议所有表的主键字段都叫 id, 类型为 int unsigned |
外键 | foreign key | 对关系字段进行约束, 当为关系字段填写值时, 会到关联的表中查询此值是否存在, 如果存在则填写成功, 如果不存在则填写失败并抛出异常 |
非空 | not null | 此字段不允许填写空值 |
惟一 | unique | 此字段的值不允许重复 |
默认 | default | 当不填写字段对应的值会使用默认值,如果填写时以填写为准 |