1.整型(整數(shù)類型)create table t2(id int(5) unsigned zerofill); 注意: ?、賗nt后面的5表示的是顯示寬度(就是你select * from t2;時看到的數(shù)字最大長度為5),而不是數(shù)據(jù)庫存儲時的寬度,一般在創(chuàng)建表格時整形后都不寫數(shù)字就寫int就完事了. ?、趗nsigned表示這個字段為無符號整數(shù)對照下面的表,無符號與有符號數(shù)字范圍不同,不寫unsigned就是默認有符號整數(shù). ③zerofill就是你顯示時,如果寬度比你規(guī)范的5要短,數(shù)字前面就用0來填充,保證位數(shù)夠5位 ?、墚斈爿斎氲闹党^該字段范圍時(有符號或者無符號的數(shù)字范圍),他會以最大值(輸入的值比范圍大)或者最小值(輸入的值比范圍小)來代替你輸入的數(shù)字來存儲,并且,此時你規(guī)定的顯示寬度失效. ?、莓斈銓慽nt時,此時是有符號,默認顯示寬度是11,即int(11),寫成int unsigned時是無符號,此時默認顯示寬度是10,根據(jù)下圖對照有無符號時最大數(shù)字長度. ⑥除整形以外所有寬度都是數(shù)據(jù)庫的存儲寬度 ⑦整型包括tinyint,smallint,mediumint,int,inteager,bigint
2.浮點型
注意: ?、俑↑c型包括float,double,decimal
float: create table t2(id float(M,D) unsigned zerofill);
M是浮點數(shù)總寬度(除小數(shù)點以外,數(shù)字總個數(shù)),M最大值為255 D是小數(shù)點后數(shù)字個數(shù),D最大值為30 如果D最長了,那么整數(shù)部分最長為225個數(shù)字
double同float
decimal: M最大為65, D最大為30,
小數(shù)精度:decimal>double(15位小數(shù)左右)>float(7位小數(shù)左右) t8:float t9:double t10:decimal decimal底層是用字符串來存儲,所以精度高
3.日期類型year,date,time,datetime,timestamp
datetime與timestamp區(qū)別: ?、俜秶煌?datetime是1001-9999,timestamp是1970-2038 ?、诖笮〔煌?datetime占8個字節(jié),timestamp占4個字節(jié)
4.字符類型: char:定長(固定長度存儲)存取速度快,但是占地方,用的較多,現(xiàn)在硬盤大小已經(jīng)不是問題了. varchar:變長(你來多長,我存多長,但是要1byte字節(jié)標記后面多長)存取速度慢,但是省地方 注意: ?、?/span>char(5),寬度5指的是字符的個數(shù) ?、趕elect char_length(name) from t4 ; 查詢某個字段中內(nèi)容的長度,但是如果在該字段后面有空格時,他也不會算到長度里面去,如果你寫的時候是'任務 '后面的空格在計算時不會算上,如果你想把它長度算上,就輸入: SET sql_mode='PAD_CHAR_TO_FULL_LENGTH';即可 ?、郛斈闶褂脀here做篩選時,例如where name='任務',mysql會自動去掉后面的所有空格,再比較,而' 任務'前面有空格或者'任 務'中間有空格都不會被去掉,從而造成篩選查不到. ④如果你輸入select name from t13 where name like '李杰';時,字符串后面的空格數(shù)量一定要和你輸入數(shù)據(jù)庫時的數(shù)量一致,否則查不到 ⑤在一張表中,不要把char和varchar混用
5.枚舉類型:enum:多個選一個 set:多個選一個或者多個
create table consumer(
insert into consumer values |
|