mysql數據類型

1.整型(整數類型)

create table t2(id int(5) unsigned zerofill);mysql

注意:sql

  ①int後面的5表示的是顯示寬度(就是你select * from t2;時看到的數字最大長度爲5),而不是數據庫存儲時的寬度,通常在建立表格時整形後都不寫數字就寫int就完事了.數據庫

  ②unsigned表示這個字段爲無符號整數對照下面的表,無符號與有符號數字範圍不一樣,不寫unsigned就是默認有符號整數.spa

  ③zerofill就是你顯示時,若是寬度比你規範的5要短,數字前面就用0來填充,保證位數夠5位3d

  ④當你輸入的值超過該字段範圍時(有符號或者無符號的數字範圍),他會以最大值(輸入的值比範圍大)或者最小值(輸入的值比範圍小)來代替你輸入的數字來存儲,而且,此時你規定的顯示寬度失效.blog

  ⑤當你寫int時,此時是有符號,默認顯示寬度是11,即int(11),寫成int unsigned時是無符號,此時默認顯示寬度是10,根據下圖對照有無符號時最大數字長度.ip

     ⑥除整形之外全部寬度都是數據庫的存儲寬度ci

  ⑦整型包括tinyint,smallint,mediumint,int,inteager,bigint字符串

 

 

2.浮點型

 

注意:table

  ①浮點型包括float,double,decimal

 

float:

create table t2(id float(M,D) unsigned zerofill);

 

M是浮點數總寬度(除小數點之外,數字總個數),M最大值爲255

D是小數點後數字個數,D最大值爲30

若是D最長了,那麼整數部分最長爲225個數字

 

double同float

 

decimal:

M最大爲65,

D最大爲30,

 

小數精度:decimal>double(15位小數左右)>float(7位小數左右)

t8:float

t9:double

t10:decimal

decimal底層是用字符串來存儲,因此精度高

 

 

 

 

3.日期類型

year,date,time,datetime,timestamp

 

datetime與timestamp區別:

  ①範圍不一樣:datetime是1001-9999,timestamp是1970-2038

  ②大小不一樣:datetime佔8個字節,timestamp佔4個字節

 

 

4.字符類型:

char:定長(固定長度存儲)存取速度快,可是佔地方,用的較多,如今硬盤大小已經不是問題了.

varchar:變長(你來多長,我存多長,可是要1byte字節標記後面多長)存取速度慢,可是省地方

注意:

  ①char(5),寬度5指的是字符的個數

  ②select char_length(name) from t4 ; 查詢某個字段中內容的長度,可是若是在該字段後面有空格時,他也不會算到長度裏面去,若是你寫的時候是'任務   '後面的空格在計算時不會算上,若是你想把它長度算上,就輸入:

SET sql_mode='PAD_CHAR_TO_FULL_LENGTH';便可

  ③當你使用where作篩選時,例如where name='任務',mysql會自動去掉後面的全部空格,再比較,而'   任務'前面有空格或者'任    務'中間有空格都不會被去掉,從而形成篩選查不到.

   ④若是你輸入select name from t13 where name like '李傑';時,字符串後面的空格數量必定要和你輸入數據庫時的數量一致,不然查不到

  ⑤在一張表中,不要把char和varchar混用

 

5.枚舉類型:

enum:多個選一個

set:多個選一個或者多個

 

create table consumer(
id int,
name char(16),
sex enum('male','female','other'),
level enum('vip1','vip2','vip3'),
hobbies set('play','music','read','run')
);


insert into consumer values
(1,'egon','male','vip2','music,read'); 由於hobbies是多選,這裏能夠選music和read兩個

insert into consumer values(1,'egon','xxxxx','vip2','music,read'); 這裏xxx是沒有的會報錯

相關文章
相關標籤/搜索