iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 4
1
AI & Data

一名合格的DBA要從底層一步步爬起系列 第 4

《Day4》資料庫 【資料型態】

各位有沒有發現,在我們建立資料表的指令中,欄位後面有多打了int與varchar(20)呢,先不用急著回到昨天貼文,在下很貼心的幫大家複製過來了,請看看下面。

mysql > create table test(id int ,name varchar(20));

其實這個就是資料的型態哦,大家想看看,我們在不同欄位裡輸入的資料都不一樣,有的是文字有的是數字,為了防止使用者輸入錯誤的格式,所以我們在設計表格時,就要計劃好這個欄位要用的是甚麼樣的型態。


常見的資料型態分為數值類型、日期時間類型、字串類型。

以下來介紹MySQL各個資料類型
數值類型又分成整數類型、浮點數類型、定點數類型、位元類型。

整數類型 Byte 描述
Tinyint 1 範圍為-128到128之間數字 or 0到255之間數字 (unsigned)
Smallint 2 範圍為-32,768到32,767之間數字 or 0到65,535之間數字(unsigned)
Mediumint 3 範圍為-8,388,608到8,388,607之間數字 or 0到16,777,215(Unsigned)
Int 、Integer 4 範圍為-2,147,483,648到2,147,483,647之間數字 or 0到4,294,967,295之間數字(Unsigned)
Bigint 8 範圍為-9,223,372,036,854,775,808到 9,223,372,036,854,775,807之間數字 or 0到18,446,744,073,709,551,615之間數字(Unsigned)

Unsigned表示無法使用負號



浮點數類型 Byte 描述
Float 4 範圍為-3.402823466E+38到3.402823466E+38
double 8 範圍為-1.7976931348623157E+308到1.7976931348623157E+308
定點數類型 Byte 描述
Dec(M,D)、Decimal(M,D) M+2 儲存完全精準的數值,D為小數點後幾位,整數位最多只能到(M-D)

EX:Decimal(5,3) -- 12.345(O) 123.34(X)


日期時間類型 Byte 描述
data 3 範圍為 1000-01-01到9999-12-31
datatime 8 範圍為1000-01-01 00:00:00到 9999-12-31 23:59:59
Timestamp 4 範圍為1970010108001到2038年某時刻,查詢時也會顯示’YYYY-MM-DD HH:MM:SS’格式
time 3 範圍為-838:59:59到838:59:59。
Year 1 範圍為1901到2155。

Datatime VS Timestamp

看起來Datatime與Timestamp非常類似,但還是有不同的地方,Datatime的範圍最多可以到西元9999年,可是Timestamp只能到2038年,範圍比較小,而Timestamp的格式在插入值時會先轉換本地時區,同時在查詢時也會把日期轉換到本地時區,能夠反映出在其他地區查詢的正確時間,Datatime則是維持當時插入的日期。

補充一點:如果在Timestamp格式輸入Null值會自動設置為當日系統時間。

M代表字元長度
N代表Byte長度

字串類型 Byte 描述
Char(M)/binary(M) M M長度範圍為0到255之間,為固定長度
varchar(M)/varbinary(M) M+1Byte(M<255)
M+2Byte(M>255) M長度範圍為0到65535之間,為可變長度,值的長度會再加上1Byte紀錄長度
Tinyblob/tinytext 範圍為0到255 Byte,值的長度會再加上1Byte紀錄長度
Blob/text 範圍為0到65535 Byte(65KB),值的長度會再加上2 Byte紀錄長度
MediumBlob/MediumText 範圍為0到16777215 Byte(16MB),值的長度會再加上3 Byte紀錄長度
Longblob/longtext 範圍為0到4294967295 Byte(4GB),值的長度會再加上4 Byte紀錄長度
Binary(N) N 範圍為0到255 Byte之間
Varbinary(N) N+1Byte(M<255) N+2Byte(M>255) 範圍為0到65535 Byte之間

Char VS varchar

Char採用固定長度儲存方式,在建立表格時就可以設計好,若輸入的值沒有到最大長度時,系統也會分配到最大的儲存空間,不過在值尾部的空格都會被刪除,而varchar為可變字串,會根據使用情況分配儲存空間,可以節省儲存空間,但尾部的空格不會被刪除。

Blob VS text

Blob與text都是可變長度,在存取值時,也都不會刪除尾部的空格,不一樣在於Blob可儲存二進制物件(圖片),text則只能儲存文字。

Binary VS varbinary

Binary和varbinary與char、varchar型態類似,差異在binary與varbinary儲存二進制字串,是非字符型字符串,排序和比較都依照二進制值進行對比。



資料庫的資料型態大致上是這樣,再來我們就來建置屬於自己的資料庫吧!

參考: https://www.itread01.com/content/1541860471.html


上一篇
《Day3》運用SQL來與資料庫溝通
下一篇
《Day5》有個屬於自己的MySQL資料庫
系列文
一名合格的DBA要從底層一步步爬起30

尚未有邦友留言

立即登入留言