各位有沒有發現,在我們建立資料表的指令中,欄位後面有多打了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與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採用固定長度儲存方式,在建立表格時就可以設計好,若輸入的值沒有到最大長度時,系統也會分配到最大的儲存空間,不過在值尾部的空格都會被刪除,而varchar為可變字串,會根據使用情況分配儲存空間,可以節省儲存空間,但尾部的空格不會被刪除。
Blob與text都是可變長度,在存取值時,也都不會刪除尾部的空格,不一樣在於Blob可儲存二進制物件(圖片),text則只能儲存文字。
Binary和varbinary與char、varchar型態類似,差異在binary與varbinary儲存二進制字串,是非字符型字符串,排序和比較都依照二進制值進行對比。
資料庫的資料型態大致上是這樣,再來我們就來建置屬於自己的資料庫吧!
參考: https://www.itread01.com/content/1541860471.html