bit是位的意思,也就是说该类型表述某值占多少位,如果要表示0,1两种状态的话,bit(1)足以。
案例
create table test1 (id bit(1));
如果是有符号则表示 -128 到 127 ,如果是无符号 0-255
整形定义可以参照下表,无符号的可以在类型后面加个unsigned。
官方文档定义
FLOAT[(M,D)] [UNSIGNED]
M:表示有效位是几位
D:表示小数位是几位
案例:
create table test5( num float); create table test6(num float(5,1));
其用法和float 类似,只是表示的范围更大,也是定长
案例:
create table t1 ( num1 FLOAT, num2 FLOAT(5,2), num3 DOUBLE, num4 DOUBLE(5,2) ); INSERT INTO t1 VALUES(10.111,10.111,10.111,10.111); INSERT INTO t1 VALUES(100000000.111111,100.111,100000000000000.111111,100.111111); select * FROM t1; -- 由上得出结论,不指定float,double的精度,那么会在不超过该类型精度的情况下,会显示所有数值,如果超过则先满足整数部分,小数部分四舍五入。 -- 指定精度时,则前面数字M是有效位总数,后面数字D是小数位数,如果小数位数超过D,则省略,整数部分位数不能超过M-D,否则会报错
NUMERIC[(M[,D])] [UNSIGNED]
M:表示有效位是几位
D:表示小数位是几位,可以不指定小数位
PS:numeric可以用于表示小数或者整数,在不指定精度的情况下,如果不超过该类型精度,那么会显示所有数值
案例:
create table test7 (num numeric); //这样其实就是可以存放整数. create table test8 (num numeric(5,2));//这样就可以表示 有效为5,小数点有两位的数
官方文档定义
官方文档定义
常用类型
m 范围是 0-255, 定长,不够长度,在右边补空格
char(20) 如果你存放 ‘abc’ 字串,实际在表 ‘abc ’;
案例:
create table test11 (name char(20));
m 表示大小 ,范围 0-65535, 变长,不会在右边补空格
varchar(20) 如果你存放 ‘abc’ 字串,实际在表 ‘abc’;
案例:
create table test12 (name varchar(20));
PS:如果能够固定下来,且大小在255字节以内,用char类型,不过取出进行比较时要注意其右边会被填充空格。
该类型可以表示更大长度的字串,具体参见上表。
表示日期 格式为(年-月-日)
案例:
create table test12(birthday date);
对于date 只保存 年-月-日
表示日期时间类型 格式为(年-月-日 时:分:秒)
案例:
create table test13(hiredate datetime);
对于datetime保存 年-月-日 时:分:秒
表示时间邮戳 格式为(年-月-日 时:分:秒)
PS:它和datetime 最大的区别是,当 update 某条记录的时候,该列值,会自动更新。
故建议,只有在需要表示最近更新时间,那样的情况,才使用timestamp,其他情况尽量使用datetime。
案例:
CREATE TABLE t2 ( id INT, name VARCHAR(20), sex CHAR(2), birthday DATE, entry_date DATE, job VARCHAR(30), salary DOUBLE, resume TEXT ); ALTER TABLE t2 MODIFY salary DOUBLE(10,2); -- salary为9999.82 INSERT INTO t2 VALUES(1,'zs','男',NOW(),NOW(),'程序员',9999.818,'123456456456489449'); select * from t2;