MySQL學習筆記五:數據類型

1、整數類型

1.一、tinyint [(M)][unsigned][zerofill]spa

1.二、smallint [(M)][unsigned][zerofill]code

1.三、mediumint [(M)][unsigned][zerofill]blog

1.四、int [(M)][unsigned][zerofill]ci

1.五、bigint [(M)][unsigned][zerofill]table

參數說明:class

M:取值範圍。date

unsigned:無符號,控制是否有正負數。書籍

zerofill:用來進行前導零填充,如tinyint的值爲1,而其最長取值位數是3位,則填充後的結果會變成001。類型後面寫了zerofill,默認就是unsigned無符號。select

示例1:無參數控制二進制

create table study01 (id01 tinyint,id02 int);
desc study01;
insert into study01 (id01,id02) values (100,101);
insert into study01 (id01,id02) values (-1,-2);
select * from study01;

示例2:有參數控制1

create table study02 (id01 tinyint(3) unsigned zerofill,id02 int(3) unsigned zerofill);
desc study02;
insert into study02 (id01,id02) values (1,1);
insert into study02 (id01,id02) values (12,1234);
select * from study02;

示例3:有參數控制2

create table study03 (id01 tinyint(3) unsigned,id02 int(3) unsigned);
desc study03;
insert into study03 (id01,id02) values (1,1);
insert into study03 (id01,id02) values (12,1234);
select * from study03;

2、小數類型

2.一、decimal (M,D)

2.二、float (M,D)

2.三、double (M,D)

參數說明:

zerofill

unsigned

示例1:無參數控制

create table studyf1 (f1 float,f2 double);
desc studyf1;
insert into studyf1 (f1,f2) values (-12.123,-1234.5678);
select * from studyf1;

示例2:有參數控制1

create table studyf2 (f1 float(5,2),f2 double(6,3) zerofill);
desc studyf2;
insert into studyf2 (f1,f2) values (12.34,12.34);
insert into studyf2 (f1,f2) values (1.1,1.2);
insert into studyf2 (f1,f2) values (123.45,123.456);
/*科學計數法(E),小數點移動幾位。*/
insert into studyf2 (f1,f2) values (0.1234E2,0.123456E3);
/*插入多了,就會四捨五入。*/
insert into studyf2 (f1,f2) values (12.126,12.34);
select * from studyf2;

示例3:有參數控制2

create table studyf3 (f1 float(10,4) unsigned zerofill);
desc studyf3;
insert into studyf3 (f1) values (12.345);
insert into studyf3 (f1) values (12.3456);
insert into studyf3 (f1) values (12.34567);
select * from studyf3;

3、日期類型

3.一、datetime(年月日時分秒)

create table studyd1 (mydate datetime);
insert into studyd1 (mydate) values ('20200902230130');
insert into studyd1 (mydate) values (20200902230130);
insert into studyd1 (mydate) values ('2020-09-02 23:01:30');
insert into studyd1 (mydate) values (null);
select * from studyd1;

3.二、timestamp(年月日時分秒/整數)

create table studyd2 (mytime timestamp);
insert into studyd2 (mytime) values ('20200902230130');
insert into studyd2 (mytime) values ('2020-09-02 23:01:30');
select * from studyd2;
/*+0 查看時間戳,顯示整數。*/
select mytime+0 from studyd2;

3.三、date(年月日)

create table studyd3 (mydate date);
insert into studyd3 (mydate) values ('20200902');
insert into studyd3 (mydate) values ('2020-09-02');
select * from studyd3;

3.四、time(時分秒)

create table studyd4 (mytime time);
insert into studyd4 (mytime) values ('10:10:10');
/*D HH:MM:SS,D表明天,最大能夠是34天,表明過去多少時間。*/
insert into studyd4 (mytime) values ('5 10:10:10');
select * from studyd4;

3.五、year

create table studyd5 (myyear year);
insert into studyd5 (myyear) values ('2020');
insert into studyd5 (myyear) values ('2021');
select * from studyd5;

4、字符類型

4.一、char(M),M表示字符固定長度,最大爲255字節。

create table studyz1 (mychar char(255));
insert into studyz1 (mychar) values ('YES');
insert into studyz1 (mychar) values ('NO');
insert into studyz1 (mychar) values ('Y ');
insert into studyz1 (mychar) values (' N');
select * from studyz1;
select mychar,length(mychar) `length` from studyz1;

4.二、varchar(M),M表示字符可變長度,最大65535字節,須要1-2字節來保存信息,超過255的長度就用2個字節來保存。

utf8:一個字符佔用3個字節 65535/3=21845 -1 -2=21844/21843

gbk:一個字符佔用2個字節 65535/2=32767 -1 -2=32766/32765

最大長度是受最大65535字節和所使用的字符集有關。

create table studyz2 (myvarchar varchar(21844));
insert into studyz2 (myvarchar) values ('YES');
insert into studyz2 (myvarchar) values ('NO');
insert into studyz2 (myvarchar) values ('Y ');
insert into studyz2 (myvarchar) values (' N');
select * from studyz2;
select myvarchar,length(myvarchar) `length` from studyz2;

4.三、text

text和blob區別:blob用來保存二進制數據,text保存字符數據。

text和char/varchar區別:text不須要指定長度。

存儲長度:1字節-4GB

/*tinytext:最大256 bytes,1字節開銷,少於255個字符的,就比較好,好比:文章摘要。*/
create table text1 (id int,name tinytext);
/*text:最大64k,至關於65535個字符,2字節開銷,好比:文章正文。*/
create table text2 (id int,name text);
/*mediumtext:最大16MB,至關於16777215個字符,3字節開銷,存儲相對大的文本數據,好比書籍文本,白皮書。*/
create table text3 (id int,name mediumtext);
/*longtext:最大4GB,4字節開銷。*/
create table text4 (id int,name longtext);

4.四、blob

/*tinyblob:最大256 bytes*/
create table blob1 (id int,name tinyblob);
/*blob:最大64k*/
create table blob2 (id int,name blob);
/*mediumblob:最大16MB*/
create table blob3 (id int,name mediumblob);
/*longblob:最大4GB*/
create table blob4 (id int,name longblob);

4.五、enum:最多65535個枚舉項,2字節開銷,相於單項選擇題。

create table studye1 (myenum enum('Y','N'));
insert into studye1 (myenum) values ('Y');
insert into studye1 (myenum) values ('N');
insert into studye1 (myenum) values ('1');
insert into studye1 (myenum) values ('2');
select * from studye1;
select myenum+0 from studye1;

4.六、set:集合,至關於多項選擇題。

create table studys1 (myset set('A','B','C','D'));
insert into studys1 values ('A');
insert into studys1 values ('A,B');
insert into studys1 values ('C');
insert into studys1 values ('C,D');
select * from studys1;
相關文章
相關標籤/搜索