常见数据类型
总览
1 数值型:
整型
小数:定点数,浮点数
2 字符型:
较短的文本:char、varchar
较长的文本:text、blob(较长的二进制数据)
3 日期型
整型
分类:
tinyint 、smallint、mediumint、int/integer、bigint
1 2 3 4 8 字节数
如何设置无符号和有符号
CREATE TABLE tab_int(
t1 INT,
t2 INT UNSIGNED #无符号
)
小数
分类:
1 浮点型 float(M,D) double(M,D)
2 定点型 dec(M,D) decimal(M,D)
特点:
① M:整数部位+小数部位 总的位数
D:小数部位 的位数
如果超过范围,则插入临界值
② M和D都可以省略
如果是decimal,则M默认是10,D默认是0
如果是float和double,则会根据插入的数值的精度来决定精度
③ 定点型的精度较高,如果要求插入数值的精度较高如货币运算等则考虑使用
原则:
所选择的类型越简单越好,能保存数值的类型越小越好
INSERT INTO tab_float VALUES
(323.45,343.23,333.45),
(223.45,233.23,233.45);
字符型
较短的文本:
char:存储字符数 0-255,定义时可省略长度,默认是1
varchar:存储字符数 0-65535 ,定义时不可省略长度
其他:
binary 和 varbinary 用于保存较短的二进制
enum用于保存枚举
set用于保存集合
较长的文本:
text
blob(较大的二进制)
案例:
#创建表,只有一个枚举型字段,插入值的时候只能是枚举值
CREATE TABLE tab_char(
c1 ENUM('a','b','c')
);
INSERT INTO tab_char VALUES('a');#插入成功
INSERT INTO tab_char VALUES('d');#插入失败,插入的值必须是枚举的值
#创建集合
CREATE TABLE tab_set(
s1 SET('a','b','c','d')
);
INSERT INTO tab_set VALUES('a');#√
INSERT INTO tab_set VALUES('a,c');#√
INSERT INTO tab_set VALUES('b,c,d');#√
INSERT INTO tab_set VALUES('a','b','e');#×,e不在集合之中
日期型
分类:
date 只保存日期
time 只保存时间
year 只保存年
datetime 保存日期+时间
timestamp 保存日期+时间
datetime vs timestamp
字节 范围 是否受时区等影响I
datetime 8 1000-9999 不受
timestamp 4 1970-2038 受