# 常见的数据类型
/*
数值型:
整型
小数:
定点型
浮点型
字符型:
较短的文本:char,varchar
较长的文本:text,blob(较长的二进制数据)
日期型:
*/
#一、整型
/*
tinyint,smallint,mediumint,int integer,bigint
1,2 3 48
特点:
(1)如果不设置,默认是有符号;如果想要无符号,需要加上unsigned关键字
(2)如果插入的数值超出了整型的范围,会报out of range异常,并且插入临界值
(3)如果不设置长度,会有默认长度
长度代表了显示的最大宽度,如果不够,会用0在左边填充,但是必须搭配zerofill使用
*/
#1.如何设置有符号和无符号
drop table if exists tab_int;
create table tab_int(
t1 int,
t2 int unsigned);
desc tab_int;
insert into tab_int(t1,t2) values(-123456,-123456);
select * from tab_int;
drop table if exists tab_int;
create table tab_int(
t1 int(7) zerofill,
t2 int(8) zerofill);
insert into tab_int(t1,t2) values(123,123);
select * from tab_int;
# 二、小数:
/*
1.定点型
dec(M,D)
decimal(M,D)
2.浮点型
float(M,D)
double(M,D)
特点:
(1)M,D啥意思
M:整数部位+小数部位
D:小数部位
如果超过范围,则插入临界值
(2)M,D均可省略
如果是dec,则M默认是10,D默认是0
如果是float 和 double,则会根据插入数值的精度来决定精度
(3)定点型的精确度较高,如果要求插入数值的精度较高如货币运算则考虑使用
*/
create table tab_float(
f1 float(5,2),
f2 double(5,2),
f3 dec(5,2));
insert into tab_float values(123.45,123.45,123.45);
insert into tab_float values(123.456,123.456,123.456);
insert into tab_float values(123.4,123.4,123.4);
insert into tab_float values(1723.4,1723.4,1723.4);
select * from tab_float;
#原则:
/*
奥卡姆剃刀,越简单越好
*/
#三、字符型
较短的文本:char,varchar
char(n):固定长度的字符,可省略,默认为1;空间比较消耗;效率高
varchar(n):可变长度的字符,不可省略;空间比较节省;效率低
n最多的字符数,字符符:一个字母或者一个汉字
较长的文本:text,blob(较长的二进制数据)
枚举:enum
create table tab_char(
c1 enum("a","b","c"));
#这里面固定只能a,b,c
集合:set
create table tab_aet(
c1 aet("a","b","c","d"));
#四、日期型
(1)date类
date:"yyyy-mm-dd"(年-月-日)
datetime:"yyyy-mm-dd hh:mm:ss"(年-月-日 时:分:秒)
timestamp:日期和时间
create table tab_date(
t1 datetime,
t2 timestamp);
insert into tab_date values(now(),now());
select * from tab_date;
(2)time类
只有时间
(3)year类
只有年