目录
1.数值型
1.1 整型
tinyint:1字节
smallint:2字节
mediumint:3字节
int/integer:4字节
bigint:8字节
特点:
1)如果不通过unsigned关键字设置有无符号,默认有符号
2)如果插入的数据超出了整型范围,会报out of range异常,并且插入临界值
3)如果不设置长度,会有默认的长度。长度代表显示的最大宽度,如果想启用0填充,需搭配zerofill使用
1.2 小数
1.2.1 定点数
DEC(M,D):
DECIMAL(M,D):
1.2.2 浮点数
float(M,D):4字节
double(M,D):8字节
1.2.3 特点
1)M:整数部分位数+小数部分位数 D:小数部分位数
2)M和D可以省略,decimal的M默认10,D默认0;float和double会根据插入数值的精度来决定精度
3)定点性精确度较高
2.字符型
2.1 短文本
char(M):M字符数
varchar(M):M字符数
2.2 char和varchar的区别
写法 | M的含义 | 特点 | 空间消耗 | 效率 | |
char | char(M) | 最大字符数,可以省略,默认为1 | 固定长度的字符 | 耗费 | 高 |
varchar | varchar(M) | 最大字符数,不可省略 | 可变长度的字符 | 节省 | 低 |
2.2 长文本
text:是一个能够存储大量数据的大对象
字段类型 | 存储字节数 |
TINYTEXT | 256 |
TEXT | 65535 |
MEDIUMTEXT | 16777215 |
LONGTEXT | 4294967295 |
blob:二进制大型对象,可以存储大量数据的容器
字段类型 | 存储字节数 |
TinyBlob | 256 |
Blob | 65535 |
MediumBlob | 16777215 |
LongBlob | 4294967295 |
3.日期型
3.1 具体日期类型
date:4字节
datetime:8字节
timestamp:4字节
time:3字节
year:1字节
3.2 datetime和timestamp区别
1)timestamp和实际市区有关,更能反映实际的日期,而datetime则只能反映出插入时的当地时区
2)timestamp的属性受MySql版本和SQL Mode影响
4.五大约束
4.1 约束分类
约束:一种限制,用于限制表中数据,为了保证表中数据的准确和可靠性
4.1.1 列级约束
六大约束语法上都支持,但外键约束没有效果
4.1.2 表级约束
除了非空、默认,其他都支持
4.2 非空约束
NOT NULL:用于保证该字段的值不为空
4.3 默认约束
DEFAULT:用于保证该字段有默认值
4.4 主键约束
PRIMARY KEY:用于保证该字段的值具有唯一性且非空
4.5 唯一约束
UNIQUE:用于保证该字段的值具有唯一性,可以为空
4.6 外键约束
POREIGN KEY:用于限制两个表的关系
4.7 主键约束和唯一约束的异同点
唯一性 | 是否允许为空 | 单张表内可以存在几个 | 是否允许组合 | |
主键约束 | 可以 | 不可以 | 至多一个 | 允许,但不推荐 |
唯一约束 | 可以 | 可以 | 可以多个 | 允许,但不推荐 |