天天看點

mysql 存儲int 類型數組嗎_mysql中的資料類型

MySQL中定義資料字段的類型對資料庫的優化是非常重要的。

MySQL支援多種類型,大緻可以分為三類:數值、字元串(字元)和日期/時間類型。

(1) 數值類型:

a.整數int 範圍4個位元組,使用int(m)

例如:int(4) 存儲的數是10時,在左邊使用兩個0湊足4位

存儲的數是100時,在左邊使用1個0即可

存儲10000時,實際存儲的位數超過指定的位數則不能存儲,會報錯

bigint 範圍8個位元組

b.浮點類型

<1>.單精度float 範圍4個位元組

<2>.雙精度double 範圍8個位元組

使用double(m,d),其中m表示總位數(整數位+小數位),d表示小數位數

例如 double(6,3) 存儲3.1415926 會自動四舍五入,實際存儲的值為3.142

存儲314.15926 會自動四舍五入,實際存儲的值為314.159

存儲3141.5926 不能存儲,會報錯

<3>.定點數類型 decimal

特點:存儲時候非常精确,多數用于金錢

使用decimal(m,d) 如果都指定值,與浮點類型使用方式相同

如果沒有指定參數,則采用預設值,其中m的預設值為10,d的預設值為0

例如:定義decimal沒有指定參數,存儲的數為1.23,則實際隻會存儲存儲1

如果指定一個參數,則該參數的值是m的值,d取預設值

例如:decimal(3)表示儲存3位整數浮點型在資料庫中存放的是近似值,而定點類型在資料庫中存放的是精确值。

(2) 字元串類型

char : 定長的字元串,範圍0-255

例如:char(4) 如果存儲的字元串長度小于4時,則會在字元串的右側補充空格達到長度4

varchar : 可變長度的字元串,範圍0-65535

例如:varchar(m) 如果存儲的字元串長度小于m時,不會再填充空格

如果存儲的字元串長度大于m時,會報錯char 和 varchar:

1.char(n) 若存入字元數小于n,則以空格補于其後,查詢之時再将空格去掉。是以 char 類型存儲的字元串末尾不能有空格,varchar 不限于此。

2.char(n) 固定長度,char(4) 不管是存入幾個字元,都将占用 4 個位元組,varchar 是存入的實際字元數 +1 個位元組(n<=255)或2個位元組(n>255),是以 varchar(4),存入 3 個字元将占用 4 個位元組。

3.char 類型的字元串檢索速度要比 varchar 類型的快。

text 存儲資料量比較大的文本資料,例如文本、小說varchar 和 text:

1.varchar 可指定 n,text 不能指定,内部存儲 varchar 是存入的實際字元數 +1 個位元組(n<=255)或 2 個位元組(n>255),text 是實際字元數 +2 個位元組。

2.text 類型不能有預設值。

3.varchar 可直接建立索引,text 建立索引要指定前多少個字元。varchar 查詢速度快于 text, 在都建立索引的情況下,text 的索引似乎不起作用。

blob 存儲資料量比較大的二進制資料,例如圖檔、音頻1._BLOB和_text存儲方式不同,_TEXT以文本方式存儲,英文存儲區分大小寫,而_Blob是以二進制方式存儲,不分大小寫。

2._BLOB存儲的資料隻能整體讀出。

3._TEXT可以指定字元集,_BLO不用指定字元集。

(3)日期時間類型

date 隻存儲日期(年、月、日)不存儲時分秒

datetime 存儲日期和時間

timestamp 存儲日期和時間

datetime與timestamp的不同點:

datetime存儲的時間範圍大若定義一個字段為timestamp,這個字段裡的時間資料會随其他字段修改的時候自動重新整理,是以這個資料類型的字段可以存放這條記錄最後被修改的時間。

year 隻存儲年

time 隻存儲時間(時、分、秒)

(4)json資料類型

json是一種輕量級的資料交換格式,類似于XML,但比XML更簡單、易讀、易編寫

json的分類:

json數組 可以存儲多種資料類型,格式為[值1,值2,值3],“[”開始 “]”結尾

json對象 鍵/值 以“{”開始“}”結尾,鍵和值之間使用“:” 其格式為{鍵1:值1,鍵2:值2,鍵3:值3,}