MySQL 字段資料型別說明

2021-06-27 22:00:01 字數 4378 閱讀 4471

型別說明

儲存量tinyint[(m)] [unsigned] [zerofill]  

乙個很小的整數。有符號的範圍是-128到127,無符號的範圍是0到255。

1 位元組

smallint[(m)] [unsigned] [zerofill] 

乙個小整數。有符號的範圍是-32768到32767,無符號的範圍是0到65535。

2 個位元組

mediumint[(m)] [unsigned] [zerofill] 

乙個中等大小整數。有符號的範圍是-8388608到8388607,無符號的範圍是0到16777215。

3 個位元組

int[(m)] [unsigned] [zerofill] 

乙個正常大小整數。有符號的範圍是-2147483648到2147483647,無符號的範圍是0到4294967295。

4 個位元組

integer[(m)] [unsigned] [zerofill] 

乙個正常大小整數。有符號的範圍是-2147483648到2147483647,無符號的範圍是0到4294967295。

4 個位元組

bigint[(m)] [unsigned] [zerofill] 

乙個大整數。有符號的範圍是-9223372036854775808到9223372036854775807,無符號的範圍是0到18446744073709551615。

8 個位元組

float[(m,d)] [zerofill] 

乙個小(單精密)浮點數字。不能無符號。允許的值是-3.402823466e+38到-1.175494351e-38,0 和 1.175494351e-38到3.402823466e+38。m是顯示寬度而d是小數的位數。沒有引數的float或有<24 的乙個 引數表示乙個單精密浮點數字。

float(x):

如果 x < = 24 為4;

如果 25 < = x < = 53為8。

float:

4個位元組

double[(m,d)] [zerofill] 

乙個正常大小(雙精密)浮點數字。不能無符號。允許的值是-1.7976931348623157e+308到-2.2250738585072014e-308、 

0和2.2250738585072014e-308到1.7976931348623157e+308。

8 個位元組

double precision[(m,d)] [zerofill] 

乙個正常大小(雙精密)浮點數字。不能無符號。允許的值是-1.7976931348623157e+308到-2.2250738585072014e-308、 

0和2.2250738585072014e-308到1.7976931348623157e+308。

8 個位元組

real[(m,d)] [zerofill] 

乙個正常大小(雙精密)浮點數字。不能無符號。允許的值是-1.7976931348623157e+308到-2.2250738585072014e-308、 

0和2.2250738585072014e-308到1.7976931348623157e+308。

8 個位元組

decimal[(m[,d])] [zerofill] 

乙個未壓縮(unpack)的浮點數字。不能無符號。行為如同乙個char列:「未壓縮」意味著數字作為乙個字串被儲存,值的每一位使用乙個字元。

m位元組

或者(如果m < d,d+2 位元組)

numeric(m,d) [zerofill] 

乙個未壓縮(unpack)的浮點數字。不能無符號。行為如同乙個char列:「未壓縮」意味著數字作為乙個字串被儲存,值的每一位使用乙個字元。

m位元組

或者(如果m < d,d+2 位元組)

date 

乙個日期。支援的範圍是'1000-01-01'到'9999-12-31'。mysql以'yyyy-mm-dd'格式來顯示date值,但是允許你使用字串或數字把值賦給date列。

3 個位元組

datetime 

乙個日期和時間組合。支援的範圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。mysql以'yyyy-mm-dd hh:mm:ss'格式來顯示datetime值,但是允許你使用字串或數字把值賦給datetime的列。

8 個位元組

timestamp[(m)] 

乙個時間戳記。範圍是'1970-01-01 00:00:00'到2023年的某時。mysql以yyyymmddhhmmss、 yymmddhhmmss、yyyymmdd或yymmdd格式來顯示timestamp值,取決於是否m是14(或省略)、12、8或6,但是允許你使用字串或數字把值賦給timestamp列。乙個timestamp列對於記錄乙個insert或update操作的日期和時間是有用的,因為如果你不自己給它賦值,它自動地被設定為最近操作的日期和時間。你以可以通過賦給它乙個null值設定它為當前的日期和時間。

4 個位元組

time

乙個時間。範圍是'-838:59:59'到'838:59:59'。mysql以'hh:mm:ss'格式來顯示time值,但是允許你使用字串或數字把值賦給time列。

3 個位元組

year[(2|4)] 

乙個2或4位數字格式的年(預設是4位)。允許的值是1901到2155,和0000(4位年格式),如果你使用2位,1970-2069( 70-69)。mysql以yyyy格式來顯示year值,但是允許你把使用字串或數字值賦給year列。(year型別在mysql3.22中是新型別。)

1個位元組

char(m) [binary] 

m位元組,1 <= m <= 255

[national] varchar(m) [binary] 

l+1 位元組, 在此l <= m1 <= m <= 255

tinyblob 

乙個blob列,最大長度為255(2^8-1)個字元

l+1 位元組, 在此l< 2 ^ 8

tinytext 

乙個text列,最大長度為255(2^8-1)個字元

l+1 位元組, 在此l< 2 ^ 8

blob 

乙個blob列,最大長度為65535(2^16-1)個字元

l+2 位元組, 在此l< 2 ^ 16

text 

乙個text列,最大長度為65535(2^16-1)個字元

l+2 位元組, 在此l< 2 ^ 16

mediumblob 

乙個blob列,最大長度為16777215(2^24-1)個字元

l+3 位元組, 在此l< 2 ^ 24

mediumtext 

乙個text列,最大長度為16777215(2^24-1)個字元

l+3 位元組, 在此l< 2 ^ 24

longblob 

乙個blob列,最大長度為4294967295(2^32-1)個字元

l+4 位元組, 在此l< 2 ^ 32

longtext 

乙個text列,最大長度為4294967295(2^32-1)個字元

l+4 位元組, 在此l< 2 ^ 32

enum('value1','value2',...) 

列舉。乙個僅有乙個值的字串物件,這個值式選自與值列表'value1'、'value2', ...,或null。乙個enum最多能有65535不同的值。

1 或 2 個位元組, 取決於列舉值的數目(最大值65535)

set('value1','value2',...) 

乙個集合。能有零個或多個值的乙個字串物件,其中每乙個必須從值列表'value1', 'value2', ...選出。乙個set最多能有64個成員。

1,2,3,4或8個位元組, 取決於集合成員的數量(最多64個成員)

資料型別中,m 表示最大顯示寬度。 在 int(m) 中,m 的值跟 int(m) 所佔多少儲存空間並無任何關係。 int(3)、int(4)、int(8) 在磁碟上都是占用 4 btyes 的儲存空間。說白了,除了顯示給使用者的方式有點不同外,int(m) 跟 int 資料型別是相同的。

MySQL之選擇字段資料型別

mysql支援的資料型別很多,選擇正確的資料型別對於 獲得高效能至關重要。在選擇時有個簡單的原則有助於做出更好的選擇。簡單的原則 a 通常最小的是最好的 因為這樣可以用更少的磁碟 內容 cpu快取,大大減少io開銷。b 簡單就好 簡單的資料型別操作通常需要更少的cpu週期。例如,整型比字元操作代價更...

修改字段資料型別

我們假設相關表中沒有資料,使用sql語句修改字段型別的相關操作,以下就是具體方案的描述。如果表中沒有資料 直接這樣就可以了 alter table 表名 modify 欄位名 型別 eg alter table student id number 4 如果原表中存在data那麼方法就大不相同了,請看...

資料庫 MySQL欄位資料型別

欄位是列表中 的列名,列是表的重要組成部分,mysql資料庫中,列中的每乙個資料都需要指定其所屬型別,以確保資料的準確性和系統 的穩定性。字段資料型別分為三類 數值型別 字串型別 時間日期型別。數值型 整數 tinyint 1byte 128 127 tinyint unsigned 0 255 s...