一.MySQL中的常用数据类型
1.数值类型
整数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
TINYINT | 1 | 有符号 -128 无符号0 | 有符号127 无符号255 |
SMALLINT | 2 | 有符号-32768, 无符号0 | 有符号32767 无符号65535 |
MEDIUMINT | 3 | 有符号-8288608 无符号0 | 有符号8388607 无符号1677215 |
INT/INTEGER | 4 | 有符号-2147483648 无符号0 | 有符号2147483647 无符号4294967295 |
BIGINT | 8 | 有符号-9223372036854775808 无符号0 | 有符号9223372036854775807 无符号18446744073709551615 |
浮点数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
FLOAT | 4 | ±1.175494351E–38 | ±1.175494351E+38 |
DOUBLE | 8 | ±2.2250738585072014E–308 | ±2.2250738585072014E+308 |
定点数类型 | 字节 | 描述 |
---|---|---|
DEC(M,D),DECIMAL(M,D) | M+2 | 最大取值范围与DOUBLE相同,给定DECIMAL的有效取值范围由M和D决定,M表示数值的最长位数,D表示小数部分的最长位数 |
位类型 | 字节 | 最大值 | |
---|---|---|---|
BIT(M) | 1~8 | BIT(1) | BIT() |
2. 日期类型
日期类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
DATE | 4 | 1000-01-01 | 9999-12-31 |
DATETIME | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
TIMESTAMP | 4 | 19700101080001 | 2038年的某个时刻 |
TIME | 3 | -838:59:59 | 838:59:59 |
YEAR | 1 | 1901 | 2155 |
3. 常用字符串类型
字符串类型 | 字节 | 描述及存储需求 |
---|---|---|
CHAR(M) | M | M为0~255之间的数 |
VARCHAR(M) | M为0~65535之间的整数,值的长度+1个字节 | |
TEXT | 允许长度0~65535字节,值得长度+2个字节 | |
TINYTEXT | 允许长度0~255字节,值得长度+2个字节 | |
MEDIUMTEXT | 允许长度0~167772150字节,值得长度+3个字节 | |
LONGTEXT | 允许长度0~4294967295字节,值得长度+4个字节 |
二. MySQL中的6大约束
关键字 | 解释 |
---|---|
NOT NULL | 约束字段的值不能为空 |
DEFAULT | 设置字段的默认值 |
UNIQUE KEY(UK) | 约束字段的值是唯一 |
PRIMARY KEY(PK) | 约束字段为表的主键, 可以位该表记录的唯一标识 |
AUTO_INCREMENT | 约束字段的值为自动增长 |
FOREIGN KEY(FK) | 约束字段为表的外键 |
-
非空:在我们新增数据的时候这个字段必须新增的同时有值;
-
默认:在你没有给定值得时候数据库默认的值
-
唯一:唯一是指一个字段中所有的值不能重复
-
主键:通过主键一定能找到唯一的一条记录(主键包含非空且唯一这两种约束)
-
自动增长:主键数字自动往上递增1;可以使用自动增长的约束
- 自动增长约束必须是主键而且数据类型是int
- 自动增长的数字不会回退
-
外键:
- 子表的取值范围受父表约束
- 先建父表, 再建子表; 先有父表数据, 再有子表数据
注意:
- MySQL中没有检查约束(CHECK), 但是使用 CHECK 不会报错