数值型:
整形 tinyint | smallint | mediumint | int、integer | bigint
小数
定点型 dec(m,d) | decinal(m,d)
浮点型 float(m,d) | double(m,d)
字符型
较短的文本 :char | varchar
较长的文本 : text | blob (较长的二进制数据)
日期型
date | datetime | timestamp | time | year
一、整形
整形 tinyint | smallint | mediumint | int、integer | bigint
特点
1、如果不设置无符号还是有符号,默认是有符号,如果向设置无符号,需要添加unsigned关键字
2、如果插入的数值超数了整形的范围,会包 out od range 异常,并插入临界值
3、如果不设置长度,会有默认长度(显示结果的长度,如果输入的数据不够,会自动用0填充,
一般不显示出来,需要我们加上 zerofill关键字,且加上此关键字后,自动变为无符号)
1、如何设置有符号和无符号(unsigned)
CREATE TABLE tab_int(
t1 INT,
t2 INT UNSIGNED
);
CREATE TABLE tab_int(
t1 INT(7),
t2 INT(7) ZEROFILL
);
小数
分类:
定点型 dec(m,d) | decinal(m,d)
浮点型 float(m,d) | double(m,d)
特点:
1、M 整数部分+ 小数部分的长度
D 小数部分的长度
如果超过范围,则插入临界值
2、M和D都可以省略
如果是decimal,(M,D)默认为(10,0)
如果是float和double,会根据插入的数值的精度来决定精度
3、定点型的精度较高,如果要求插入数值的精确度较高和货币运算等则考虑使用
原则:所选择的类型越简单越好,能保存数值的类型越小越好
cerate tab_float(
f1 FLOAT(5,2),
f2 DOUBLE(5,2),
d3 DECIMAL(5,2)
);
三、字符型
分类:
较短的文本 :char(M) | varchar(M) | binary | varbinary | enum | set
较长的文本 : text | blob (较长的二进制数据)
特点:【面试题】
1、M:最多存放的字符数
char 的 M 可以省略,默认为1
varchar 的 M 不可以省略
2、char是静态的,固定长度的字符,效率高,耗费空间
varchar是动态的,可变长度的字符,效率低,节省空间
四、日期型
特点
1、datetime 不受时区影响
timestamp 受时区影响
CREATE TABLE tab_date(
t1 DATETIME,
t2 TIMESTAMP
);
INSERT INTO tab_date VALUES(NOW(),NOW());
SELECT * FROM tab_date;
SHOW VARIABLES LIKE 'time_zone';
SET time_zone = '+9.00'