mysql的數據類型


Java中:
1、基本數據類型
byte,short,int,long,float,double,char,boolean

2、引用數據類型
類、接口、枚舉、數組、注解

if(xx == null)

BigInteger
BigDecimal

MySQL中:
1、整數類型
tinyint:微小整數
smallint:小整數
mediumint:中整數
int,integer:整數
bigint:大整數

int unsigned:無符號整數,沒有負數
int(M) :如果單獨使用,沒意義
int(M) zerofill:這樣指定寬度才有意義
例如:int(4) zerofill 當我存儲的整數值是20,那么它會實際存儲 0020
如果你寫了zerofill,就意味着無符號

2、浮點型
float,double
float(M,D):M是說總的寬度,D是指定小數點后幾位
double(M,D)

float(5,2):表示的數據范圍是在[-999.99,999.99]范圍。

也可以加unsigned,
float(5,2) unsigned:無符號小數,沒有負數,它表示的范圍[0,999.99]

3、定點型
DECIMAL
DECIMAL(M,D)
NUMERIC也可以這么寫。

4、日期時間類型
date:存日期
time:存時間
datetime:存日期和時間
year:存年
timestamp:時間戳,也是可以存日期時間

timestamp和datetime的區別:
(1)timestamp會按照時區顯示,因為它是存儲毫秒值
(2)日期范圍:timestamp 1970-2038
datetime 1000-9999

5、字符串類型(mysql沒有字符類型,全部是字符串類型)
char:定長字符串
char:默認長度為1
char(M):長度為M
例如:char(5),實際按照5個字符的寬度來存儲,如果不夠5個,默認用\u0000填充
"張三" ,實際 \u0000\u0000\u0000張三
varchar:變長字符串
varchar(M):必須指定M
例如:varchar(20),實際按照幾個字符存儲,看你數據有幾個字符
"張三",實際存2個字符 + 1個字節(記錄字符的實際長度)
text:長文本


定長好還是變長好:
char的好處:不用計算字符數,固定幾個幾個一讀,雖然會浪費一些空間,但是速度快
varchar的好處:節省空間,每次讀寫要計算字符數

什么情況下選擇char?
(1)你的數據是定長,例如:手機號,學號,身份證號,訂單號
(2)頻繁修改和查詢

當然,現在mysql5.5以后對varchar做了很多優化,現在的效率也還好,除了上面的兩種,其他的都選varchar

6、二進制類型
bit:位類型,小二進制
xxblob:大二進制,一般二維碼,小頭像
xxxBINARY:字符串的二進制值

7、枚舉、集合(了解)
枚舉類型:幾個中選一個
集合類型:幾個中選多個,任意組合

8、特殊值
(1)在mysql中所有的類型,包括int都可以賦值為null
(2)mysql中關於null的判斷
is null
is not null
<=> null
(3)所有運算符:+,-等遇到null值結果就為null

因此null值既影響運算,又影響我們的查詢,所以盡量避免null值,可以用''或0等來代替。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM