数据类型
- 常见的数据类型
- 数值型
- 整型
- 小数
- 定点数
- 浮点数
- 字符型
- 较短
- 较长:text,blob(较长的二进制)
- 日期型
常见的数据类型
数值型
整型
分类:
- tinyint (1)
- smallint (2)
- mediumint(3)
- int/integer(4)
- bigint(6)
( )里为保存字节数
特点:
- 如果不设置无富豪还是有符号,默认有符号,如果想设置无符号,需要添加unsigned关键字
无符号>=0
有符号正负均可
例如:
CREATE TABLE tab(
t1 INT UNSIGHED
);
- 如果插入数值超出整数范围,会报out of range异常,并插入临界值
- 如果不设置长度会有默认长度,长度代表整数显示的宽度,创建时 INT(10) zerofill,表示插入长度为10,小于该宽度时用0填充
unsigned为无符号
小数
定点数
- DEC(M,D)
浮点数
- float(M,D),字节为4
- double(M,D),字节为8
- M:整数位数+小数个数,超出则插入临界值
D:小数点后保留位数,超出则四舍五入 - M和D可以省略
如果是decimal,则M默认为10,D默认为0
如果是float和double,无默认精度 - 定点型的精确度较高,如果要求插入数值的精度较高如货币运算等则考虑使用
字符型
较短
- char(M)
- varchar(M)
- M为把保存的最大字符数,char中可以省略,默认为1,varchar不可以省略
- char为固定长度,varchar为可变长度
- char空间耗费较多,varchar较少
- char效率高,varchar效率低
- binary
- varbinary
与char和varchar类似,但是他们包含二进制字符串而不包含非二进制字符串 - enum()枚举类型
要求插入的值必须属于列表中指定的值之一
例:enum(‘a’,‘b’)则只能为a或b,大写也包括 - set()
与枚举类似,但是可以包含多个指定值,用,连接
较长:text,blob(较长的二进制)
日期型
- date:只保存日期
- time:只保存时间
- year:只保存年份
- datetime:日期+年份
- timestamp:日期+年份
- datetime范围大【1000-9999】,timestamp范围小【1970-2038】
- timestamp与实际时区有关,更能反映实际的日期,而datetime只能反映出插入时的当地时区
- timestamp的属性受mysql和sqlmode的影响
显示时区
SHOW VARIABLES LIKE ‘time_zone’;更改时区
SET time_zone=’+9:00’;
“这世界上的久处不厌都是因为用心”
小徐加油!
最近一直有在考虑未来。
——2021.2.10