04. 数据类型和约束
2024年10月28日大约 3 分钟
04. 数据类型和约束
目标
- 能够知道数据类型和数据约束的作用
大家都知道数据库中的数据保存在数据表中,在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,比如:数据类型和约束。
1. 数据类型
拓展参考:mysql数据类型
数据类型是指在创建表的时候为表中字段指定数据类型,只有数据符合类型要求才能存储起来,使用数据类型的原则是: 够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间。
常用数据类型
整数: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 时推荐使用, 比如技术博客
2. 数据约束
拓展参考:mysql数据约束
概念
约束是指数据在数据类型限定的基础上额外增加的限制条件
作用
- 表在设计的时候加入约束的目的就是为了保证表中的记录完整性和有效性,比如用户表有些列的值(手机号)不能为空,有些列的值(身份证号)不能重复
常见的约束(主外键非空唯一默认值)
- 主键约束(primary key) PK
- 物理上存储的顺序. MySQL 建议所有表的主键字段都叫 id, 类型为 int unsigned,值不能重复,auto_increment 代表值自动增长;
- 非空约束(not null)
- 此字段不允许填写空值
- 唯一性约束(unique)
- 此字段的值不允许重复
- 默认约束(default)
- 当不填写字段对应的值会使用默认值,如果填写时以填写为准
- 外键 foreign key
- 对关系字段进行约束, 当为关系字段填写值时, 会到关联的表中查询此值是否存在, 如果存在则填写成功, 如果不存在则填写失败并抛出异常.
- 自增长约束(auto_increment)
- 主键约束(primary key) PK
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 |
2. 字符串
类型 | 说明 | 使用场景 |
---|---|---|
CHAR | 固定长度,小型数据 | 身份证号、手机号、电话、密码 |
VARCHAR | 可变长度,小型数据 | 姓名、地址、品牌、型号 |
TEXT | 可变长度,字符个数大于 4000 | 存储小型文章或者新闻 |
LONGTEXT | 可变长度, 极大型文本数据 | 存储极大型文本数据 |
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 |