数字类型
类型 | 大小(字节) | 带符号范围 | 无符号范围 | 规定无符号约束 |
---|---|---|---|---|
TINYINT | 1 | -128至127 | 0至255 | unsigned |
SMALLINT | 2 | -32768至32767 | 0至65535 | unsigned |
MEDIUMINT | 3 | -8388608至83388607 | unsigned | |
INT | 4 | -2147483648至2147483647 | 0至4294967295 | unsigned |
BIGINT | 8 | -9233372036854775808至9233372036854775807 | 0至18446744073709551615 | unsigned |
FLOAT | 4 | 使用方式:float(15,3) | 15代表总位数,3代表小数位数 | 单精度浮点数值 |
DOUBLE | 8 | 使用方式:double(15,3) | 15代表总位数,3代表小数位数 | 双精度浮点数值 |
数字类型不用规定长度,如果插入数据小于最小值默认使用最小值。反之使用最大值
浮点数float和double默认都是小数部分四舍五入
float如果不指定总位数和小数位数,默认是小数位数为5
时间类型
类型 | 大小(字节) | 格式 |
---|---|---|
DATE | 3 | YYYY-MM-DD |
TIME | 3 | HH:MM:SS |
YEAR | 1 | YYYY |
DATETIME | 8 | YYYY-MM-DD HH:MM:SS |
TIMESTAMP | 4 | YYYYMMDD HHMMSS |
timestamp会在插入数据时使用当前时间写入,更新时也会使用当前时间写入【就算输入了值,也会使用当前时间写入】
datetime可以通过设置达到与timestamp一样的效果
字符串类型
类型 | 大小(字节) | 描述 |
---|---|---|
CHAR | 0-255 | 定长字符串 |
VARCHAR | 0-65535 | 变长字符串 |
TINYBLOB | 0-255 | 二进制字符串 |
BLOB | 0-65535 | 二进制长文本 |
TINYTEXT | 0-255 | 短文本字符串 |
TEXT | 0-65536 | 长文本 |
MEDIUMBLOB | 0-16777215 | 二进制中等长度文本 |
MEDIUMTEXT | 0-16777215 | 中等长度文本 |
LONGBLOB | 0-4294967295 | 二进制极大文本 |
LONGTEXT | 0-4294967295 | 极大文本 |
char类型如果定义了长度【char(5)】如果插入的数据长度不足5会在后面补空格,但是当使用数据的时候不会有空格【数据库自动去掉】 ;也就意味着如果插入最后带空格的数据,使用时将不会有空格
varchar则同于char如果定义了长度【varchar(5)】在varchar中的存储是这样的【例:'zhangsan8'】会计算插入的字符长度,所以相对于char的存储速度较慢
单选和多选
enum 单选
set 多选
单选enum如果插入数据是没有定义的则在表中会是空【null】
多选set如果插入数据时有重复的选项会自动去重,如果出现没有定义的选项会忽略