1.整型(整數型別)
create table t2(id int(5) unsigned zerofill);
注意:
①int后面的5表示的是顯示寬度(就是你select * from t2;時看到的數字最大長度為5),而不是資料庫存盤時的寬度,一般在創建表格時整形后都不寫數字就寫int就完事了.
②unsigned表示這個欄位為無符號整數對照下面的表,無符號與有符號數字范圍不同,不寫unsigned就是默認有符號整數.
③zerofill就是你顯示時,如果寬度比你規范的5要短,數字前面就用0來填充,保證位數夠5位
④當你輸入的值超過該欄位范圍時(有符號或者無符號的數字范圍),他會以最大值(輸入的值比范圍大)或者最小值(輸入的值比范圍小)來代替你輸入的數字來存盤,并且,此時你規定的顯示寬度失效.
⑤當你寫int時,此時是有符號,默認顯示寬度是11,即int(11),寫成int unsigned時是無符號,此時默認顯示寬度是10,根據下圖對照有無符號時最大數字長度.
⑥除整形以外所有寬度都是資料庫的存盤寬度
⑦整型包括tinyint,smallint,mediumint,int,inteager,bigint

2.浮點型
注意:
①浮點型包括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是沒有的會報錯
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/52444.html
標籤:MySQL
上一篇:MySQL字串函式:substring_index()的使用詳解
下一篇:MySQL 配置統計資料
