数据完整性:

一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中。

在表中为了更精准的存储数据,保证数据的有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型和约束。

数据类型:

使用原则:够用就行,尽量使用取值范围小,这样可以节省存储空间

常用的类型有:

整数:int,bit

小数:decimal

字符串:varchar,char

日期时间:date,time,datetime

枚举类型(在Python中没有枚举类型):把可能出现的结果列举出来

特别说明:

decimal表示浮点数,decimal(5,2)表示共存5位数,小数占2位

char表示固定长度字符串,如char(3),如果填充“ab”会变成“ab ”

varchar表示固定长度字符串,如varchar(3),如果填充“ab”就是“ab”

字符串text表示存储大文本,当字符串大于4000时推荐使用

对于图片,音频,视频等文件不推荐存储在数据库中,建议上传服务器,数据库存储这个文件在服务器中的保存路径

更多详情:https://blog.csdn.net/anxpp/article/details/51284106

约束:

主键primary key:物理上存储的顺序

非空not null:此字段不允许填写空值

唯一unique:此字段不允许重复

外键foreign key:对关系字段进行约束,当为关系字段填写值的时候,会到关联的表中查询此值是否存在,如果存在填写成功,不存在则填写失败并抛出异常即存储别的表的主键

说明:虽然外键约束可以保证数据有效性,但是在进行数据的crud(增删改查)时,都会降低性能,所以不推荐使用,数据有效性在设计的时候保证

常用数据类型:

数值类型

类型字节大小有符号范围无符号范围
TINYINT1-128-1270-255
SMALLINT2-32768-327670-65535
MEDIUMINT3-8388608-83886070-16777215
INT/INTEGER4-2147483648-21474836470-4294967295
BIGINT8-9223372036854775808-92233720368547758070-18446744073709551615

字符串:

类型字节大小
CHAR0-255
VARCHAR255
TEXT0-65535

日期时间类型:

类型字节大小示例
DATE42020-01-01
TIME312:29:59
DATETIME82020-01-01 12:29:59
YEAR12017
TIMESTAMP41970-01-01 00:00:01 UTC – 2038-01-01 00:00:01 UTC