方括號中的屬性可以在ddl語句中控制column的詳細屬性
一、整數型
1.int[(width)][unsigned][zerofill]
mysql用4 bytes儲存int型資料,其值在-2,147,483,648到2,147,483,647之間,如果選擇了unsigned型別,那麼值在0到4,294,967,295。int和integer可以互換。(width)指定了數字的位數,如果實際的值超出了這個位數,那麼(width)會被忽略。如果是unsigend,通過指定zerofill會由0在左側佔位補足
2.boolean
也可以寫為bool或bit,需要1個byte空間,用來儲存boolean value,false(zero)或者true(nonzero),等價於tinyint(1)
3.tinyint[(width)][unsigned][zerofill]
需要乙個byte空間,值的範圍在-127到128或0到255
4.smallint[(width)][unsigned][zerofill]
需要2bytes空間,值的範圍在-32768到32767或者0到65535
5.mediumint[(width)][unsigned][zerofill]
需要3個byte,範圍在-8,388608到8,388,607或者0到16,777,215
6.bigint[(width)][unsigned][zerofill]
需要8個byte,範圍在-9,223,372,036,854,775,808到9,223,372,036,854,775,807或0到18,446,744,073,709,551,615
二、浮點數型
1.decimal[(width[,decimals])][unsigned][zerofill]
也可以使用關鍵字dec,numeric,fixed。在5.0.3版本以前,是作為string來儲存的。從5.0.3版本以後,採用二進位制儲存,對每9位數字用4bytes儲存。和int不同,decimal能儲存的值是由(width,decimal)來確定的,超過的值會儲存為指定範圍內最接近的值。在5.0.3版本以前,正數的儲存範圍還可以比指定的範圍在整數部分多1位
2.float[(width,decimals)][unsigned][zerofill] or float[(precision)][unsigned][zerofill]
預設的,float是乙個4byte的單精度浮點值。當precision在0到24之間時,float就採用預設形式,當precision在25到53之間時,相當於double。width不影響資料儲存,只影響顯示
3.double[(width,decimals)][unsigned][zerofill]
預設為8byte雙精度浮點值,width同樣只影響顯示。也可以寫為real或double precision
三、時間和日期
1.date
儲存和顯示的範圍在1000-01-01到9999-12-31之間,mysql始終以yyyy-mm-dd的格式顯示資料
輸入可以採用以下格式
(1)yyyy-mm-dd or yy-mm-dd
如果以yy輸入,70-99被解釋為1970-1999,00-69被解釋為2000-2069
(2)yyyy/mm/dd, yyyy:mm:dd, yy/mm/dd
可以使用任何標點(punctuation characters)作為分割符
(3)yyyy-m-d, yyyy-mm-d, or yyyy-m-dd
(4)yyyymmdd or yymmdd
如果輸入的日期超出了範圍,mysql會儲存為0000-00-00(zero date)。另外,從5.0.2版本開始,對無效日期,也會儲存為zero date
2.time
儲存的範圍在-838:59:59到838:59:59,即34天,22小時,59分,59秒。如果輸入值超出了範圍,會被儲存為最接近的值。如果在某個部分無效,會被儲存為00:00:00
輸入可以用以下格式
(1)dd hh:mm:ss, hh:mm:ss; dd hh:mm, hh:mm; dd hh; ss
(2)h:m:s, 可以為1-3位數字
(3)hhmmss, mmss, ss
3.timestamp
以yyyy-mm-dd hh:mm:ss的格式儲存和顯示乙個日期-時間對。儲存的範圍從1970-01-01 00:00:00到2023年的某個時間。但這個型別具體的含義在mysql的各個版本中都略有不同。timestamp可以在insert或update表時,被一同自動更新為當前時間。但對每張表,只有乙個timestamp是可以自動更新的。如果有多個timestamp型的column,需要將其他的column置乙個constant default(such as default 0)。如果要在insert時自動設定,需要在建表時指定為default current_timestamp,如果需要在update時也自動更新,需要在建表時指定為on update current_timestamp。如果兩者都要,則都要指定。
default null對錶中的第乙個timestamp,會被解釋為default current_timestamp,對後面的timestamp, 會被解釋為default 0。
輸入可以採用以下格式
(1)yyyy-mm-dd hh:mm:ss or yy-mm-dd hh:mm:ss,可以採用其他標點作分隔符
(2)yyyymmddhhmmss or yymmddhhmmss
4.year[(digits)]
需要1個byte,digits可以為2或4,預設為4。2digits儲存的範圍為70到69,即1970-2069;4digits儲存的範圍1901-2155,也包括0000,無效值都會被轉化為0000
5.datetime
也是時間-日期對,同timestamp相比只是沒有了自動更新的特性。範圍從1000-01-01 00:00:00到9999-12-31 23:59:59。如果用乙個date賦值,time部分會被設為00:00:00;如果用乙個time賦值,date部分會被設為0000-00-00。輸入可以採用的形式與timestamp相同
四、字元
1.char[(width)]
width預設為1,最大值為255,超過255會被轉化為最小的text。可以定義char(0),只能包含null或者""(empty string)兩種值,它只需要乙個bit來儲存。另外,字串中的trailing spaces都會被忽略掉。
2.varchar[(width)]
變長字串,width最大為65,535,在5.0.3版本前為255。另外需要1到2個byte來儲存字串長度。超過長度限制會被轉為最小的text。在儲存是trailing spaces同樣會被去掉
3.binary(width) and varbinary(width)
與char或varchar等效,只不過是以二進位制儲存。從4.1.2版本引入,在4.1.2以前版本,可以通過在char或varchar後面指定binary關鍵字獲得這一特性
4.blob
以二進位制形式儲存大型資料,最大長度為65535bytes。對字串不會去除trailing spaces,不允許default clause
5.text
儲存大型string,最大長度也是65535bytes。同blob相比,text有字符集屬性,排序是大小寫無關的
6.tinyblob and tinytext
最大長度255bytes的blob和text
7.mediumblob and mediumtext
16,777,215bytes的blog和text
8.longblob and longtext
最大長度4gigabytes的blog和text,有效長度取決於server的記憶體配置等
9.enum('value1'[,'value2'[, ... 'valuen]])
string的列舉,最多包含65535個不同的列舉值。在輸入和顯示時都是string,但資料庫內部儲存實際是integer。另外,enum還可以包含null(stored as null)和empty string ''(stored as 0),其他有效的列舉值則為1,2,...n。通過宣告not null,是enum拒絕接受null。另外,無效的列舉值會被儲存為''
10.set('value1'[,'value2'[, ... 'valuen]])
輸入和顯示是string,資料庫內部同樣以integer儲存。最多儲存64個元素,無效的元素也會被儲存為''。set和enum的區別是enum只能儲存列舉值中的乙個,而set可以同時儲存多個元素
MySQL學習筆記 資料型別
一 資料型別 內容參考 sql學習指南 不完整 1 文字型別 文字型別 最大位元組數 tinytext 255text 65535 varchar 65536 mediumtext 16777215 longtext 4294967295 2 整數型別 型別帶符號的範圍 無符號的範圍 tinyint...
mysql 筆記 資料型別
serial serialis an alias forbigint unsigned not null auto increment unique.zerofill 如果指定numeric 列指定為 zerofill 自動為非符號列 if you specifyzerofillfor a nume...
MySQL 5 6學習筆記(資料型別)
mysql支援多種資料型別,主要有數值型別 日期 時間型別和字串型別。數值資料型別 包括整數型別tinyint smallint mediumint int bigint 浮點小數型別float的double 定點小數型別decimal。日期 時間型別 包括year time date dateti...