1. 程式人生 > 其它 >MySQL資料庫的資料型別

MySQL資料庫的資料型別

使用MySQL資料庫儲存資料時,不同的資料型別決定了 MySQL儲存資料方式的不同。為此,MySQL資料庫提供了多種資料型別,其中包括整數型別、浮點數型別、定點 數型別、日期和時間型別、字串型別、二進位制…等等資料型別。MySQL安裝請參考:http://anzhuang.runbulls.com/

1.整數型別
根據數值取值範圍的不同MySQL 中的整數型別可分為5種,分別是TINYINT、SMALUNT、MEDIUMINT、INT和 BIGINT。下圖列舉了 MySQL不同整數型別所對應的位元組大小和取值範圍而最常用的為INT型別的,

資料型別 位元組數 無符號數的取值範圍 有符號數的取值範圍
TINYINT 1 0~255 -128~127
SMALLINT 2 0~65535 -32768~32768
MEDIUMINT 3 0~16777215 -8388608~8388608
INT 4 0~4294967295 -2147483648~ 2147483648
BIGINT 8 0~18446744073709551615 -9223372036854775808~9223372036854775808
2.浮點數型別和定點數型別
在MySQL資料庫中使用浮點數和定點數來儲存小數。浮點數的型別有兩種:單精度浮點數型別(FLOAT)和雙精度浮點數型別(DOUBLE)。而定點數型別只有一種即DECIMAL型別。下圖列舉了 MySQL中浮點數和定點數型別所對應的位元組大小及其取值範圍:

資料型別 位元組數 有符號的取值範圍 無符號的取值範圍
FLOAT 4 -3.402823466E+38~-1.175494351E-38 0和1.175494351E-38~3.402823466E+38
DOUBLE 8 -1.7976931348623157E+308~2.2250738585072014E-308 0和2.2250738585072014E-308~1.7976931348623157E+308
DECIMAL(M,D) M+2 -1.7976931348623157E+308~2.2250738585072014E-308 0和2.2250738585072014E-308~1.7976931348623157E+308
從上圖中可以看出:DECIMAL型別的取值範圍與DOUBLE型別相同。但是,請注意:DECIMAL型別的有效取值範圍是由M和D決定的。其中,M表示的是資料的長 度,D表示的是小數點後的長度。比如,將資料型別為DECIMAL(6,2)的資料6.5243 插人資料庫後顯示的結果為6.52

3.字串型別
在MySQL中常用CHAR 和 VARCHAR 表示字串。兩者不同的是:VARCHAR儲存可變長度的字串。
當資料為CHAR(M)型別時,不管插入值的長度是實際是多少它所佔用的儲存空間都是M個位元組;而VARCHAR(M)所對應的資料所佔用的位元組數為實際長度加1

插入值 CHAR(3) 儲存需求 VARCHAR(3) 儲存需求
‘’ ‘’ 3個位元組 ‘’ 1個位元組
‘a’ ‘a’ 3個位元組 ‘a’ 2個位元組
‘ab’ ‘ab’ 3個位元組 ‘ab’ 3個位元組
‘abc’ ‘ab’ 3個位元組 ‘abc’ 4個位元組
‘abcd’ ‘ab’ 3個位元組 ‘abc’ 4位元組
4.字串型別
文字型別用於表示大文字資料,例如,文章內容、評論、詳情等,它的型別分為如下4種:

資料型別 儲存範圍
TINYTEXT 0~255位元組
TEXT 0~65535位元組
MEDIUMTEXT 0~16777215位元組
LONGTEXT 0~4294967295位元組
5.日期與時間型別
MySQL提供的表示日期和時間的資料型別分別是 :YEAR、DATE、TIME、DATETIME 和 TIMESTAMP。下圖列舉了日期和時間資料型別所對應的位元組數、取值範圍、日期格式以及零值:

資料型別 位元組數 取值範圍 日期格式 零值
YEAR 1 1901~2155 YYYY 0000
DATE 4 1000-01-01~9999-12-31 YYYY-MM-DD 0000-00-00
TIME 3 -838:59:59~ 838:59:59 HH:MM:SS 00:00:00
DATETIME 8 1000-01-01 00:00:00~9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00
TIMESTAMP 4 1970-01-01 00:00:01~2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00
5.1 YEAR型別
YEAR型別用於表示年份,在MySQL中,可以使用以下三種格式指定YEAR型別 的值。
1、使用4位字串或數字表示,範圍為’1901’—'2155’或1901—2155。例如,輸人 ‘2019’或2019插人到資料庫中的值均為2019。
2、使用兩位字串表示,範圍為’00’—‘99’。其中,‘00’—'69’範圍的值會被轉換為 2000—2069範圍的YEAR值,‘70’—'99’範圍的值會被轉換為1970—1999範圍的YEAR 值。例如,輸人’19’插人到資料庫中的值為2019。
3、使用兩位數字表示,範圍為1—99。其中,1—69範圍的值會被轉換為2001— 2069範圍的YEAR值,70—99範圍的值會被轉換為1970—1999範圍的YEAR值。例 如,輸人19插入到資料庫中的值為2019。
請注意:當使用YEAR型別時,一定要區分’0’和0。因為字串格式的’0’表示的YEAR值是2000而數字格式的0表示的YEAR值是0000。

5.2 TIME型別
TIME型別用於表示時間值,它的顯示形式一般為HH:MM:SS,其中,HH表示小時, MM表示分,SS表示秒。在MySQL中,可以使用以下3種格式指定TIME型別的值。
1、以’D HH:MM:SS’字串格式表示。其中,D表示日可取0—34之間的值, 插人資料時,小時的值等於(DX24+HH)。例如,輸入’2 11:30:50’插人資料庫中的日期為59:30:50。
2、以’HHMMSS’字串格式或者HHMMSS數字格式表示。 例如,輸人’115454’或115454,插入資料庫中的日期為11:54:54
3、使用CURRENT_TIME或NOW()輸人當前系統時間。

5.3 DATETIME型別
DATETIME型別用於表示日期和時間,它的顯示形式為’YYYY-MM-DD HH: MM:SS’,其中,YYYY表示年,MM表示月,DD表示日,HH表示小時,MM表示分,SS 表示秒。在MySQL中,可以使用以下4種格式指定DATETIME型別的值。
以’YYYY-MM-DD HH:MM:SS’或者’YYYYMMDDHHMMSS’字串格式表示的日期和時間,取值範圍為’1000-01-01 00:00:00’—‘9999-12-3 23:59:59’。例如,輸人’2019-01-22 09:01:23’或 ‘20140122_0_90123’插人資料庫中的 DATETIME 值都為 2019-01-22 09:01:23。
1、以’YY-MM-DD HH:MM:SS’或者’YYMMDDHHMMSS’字串格式表示的日期和時間,其中YY表示年,取值範圍為’00’—‘99’。與DATE型別中的YY相同,‘00’— '69’範圍的值會被轉換為2000—2069範圍的值,‘70’—'99’範圍的值會被轉換為1970—1999範圍的值。
2、以YYYYMMDDHHMMSS或者YYMMDDHHMMSS數字格式表示的日期 和時間。例如,插入20190122090123或者190122090123,插人資料庫中的DATETIME值都 為 2019-01-22 09:01:23。
3、使用NOW來輸人當前系統的日期和時間。

5.4 TIMESTAMP型別
TIMESTAMP型別用於表示日期和時間,它的顯示形式與DATETIME相同但取值範圍比DATETIME小。在此,介紹幾種TIMESTAMP型別與DATATIME型別不同的形式:
1、使用CURRENT_TIMESTAMP輸人系統當前日期和時間。
2、輸人NULL時系統會輸人系統當前日期和時間。
3、無任何輸人時系統會輸入系統當前日期和時間。

6.二進位制型別
在MySQL中常用BLOB儲存二進位制型別的資料,例如:圖片、PDF文件等。BLOB型別分為如下四種:

資料型別 儲存範圍
TINYBLOB 0~255位元組
BLOB 0~65535位元組
MEDIUMBLOB 0~16777215位元組
LONGBLOB 0~4294967295位元組