mysql 的數值資料型別可以大致劃分為兩個類別,乙個是整數,另乙個是浮點數或小數。許多不同的子型別對這些類別中的每乙個都是可用的,每個子型別支援不同大小的資料,並且 mysql 允許我們指定數值字段中的值是否有正負之分或者用零填補。
表列出了各種數值型別以及它們的允許範圍和占用的記憶體空間。
型別
大小
範圍(有符號)
範圍(無符號)
用途
tinyint
1 位元組
(-128,127)
(0,255)
小整數值
smallint
2 位元組
(-32 768,32 767)
(0,65 535)
大整數值
mediumint
3 位元組
(-8 388 608,8 388 607)
(0,16 777 215)
大整數值
int或integer
4 位元組
(-2 147 483 648,2 147 483 647)
(0,4 294 967 295)
大整數值
bigint
8 位元組
(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)
(0,18 446 744 073 709 551 615)
極大整數值
float
4 位元組
(-3.402 823 466 e+38,1.175 494 351 e-38),0,(1.175 494 351 e-38,3.402 823 466 351 e+38)
0,(1.175 494 351 e-38,3.402 823 466 e+38)
單精度浮點數值
double
8 位元組
(1.797 693 134 862 315 7 e+308,2.225 073 858 507 201 4 e-308),0,(2.225 073 858 507 201 4 e-308,1.797 693 134 862 315 7 e+308)
0,(2.225 073 858 507 201 4 e-308,1.797 693 134 862 315 7 e+308)
雙精度浮點數值
decimal
對decimal(m,d) ,如果m>d,為m+2否則為d+2
依賴於m和d的值
依賴於m和d的值
小數值在 mysql 中支援的 5 個主要整數型別是 tinyint,smallint,mediumint,int 和 bigint。這些型別在很大程度上是相同的,只有它們儲存的值的大小是不相同的。
mysql 以乙個可選的顯示寬度指示器的形式對 sql 標準進行擴充套件,這樣當從資料庫檢索乙個值時,可以把這個值加長到指定的長度。例如,指定乙個欄位的型別為 int(6),就可以保證所包含數字少於 6 個的值從資料庫中檢索出來時能夠自動地用空格填充。需要注意的是,使用乙個寬度指示器不會影響欄位的大小和它可以儲存的值的範圍。
萬一我們需要對乙個字段儲存乙個超出許可範圍的數字,mysql 會根據允許範圍最接近它的一端截短後再進行儲存。還有乙個比較特別的地方是,mysql 會在不合規定的值插入表前自動修改為 0。
unsigned 修飾符規定欄位只儲存正值。因為不需要儲存數字的正、負符號,可以在儲時節約乙個「位」的空間。從而增大這個字段可以儲存的值的範圍。
zerofill 修飾符規定 0(不是空格)可以用來真補輸出的值。使用這個修飾符可以阻止 mysql 資料庫儲存負值。
mysql 支援的三個浮點型別是 float、double 和 decimal 型別。float 數值型別用於表示單精度浮點數值,而 double 數值型別用於表示雙精度浮點數值。
與整數一樣,這些型別也帶有附加引數:乙個顯示寬度指示器和乙個小數點指示器。比如語句 float(7,3) 規定顯示的值不會超過 7 位數字,小數點後面帶有 3 位數字。
對於小數點後面的位數超過允許範圍的值,mysql 會自動將它四捨五入為最接近它的值,再插入它。
decimal 資料型別用於精度要求非常高的計算中,這種型別允許指定數值的精度和計數方法作為選擇引數。精度在這裡指為這個值儲存的有效數字的總個數,而計數方法表示小數點後數字的位數。比如語句 decimal(7,3) 規定了儲存的值不會超過 7 位數字,並且小數點後不超過 3 位。
忽略 decimal 資料型別的精度和計數方法修飾符將會使 mysql 資料庫把所有標識為這個資料型別的字段精度設定為 10,計算方法設定為 0。
unsigned 和 zerofill 修飾符也可以被 float、double 和 decimal 資料型別使用。並且效果與 int 資料型別相同。
mysql 提供了 8 個基本的字串型別,可以儲存的範圍從簡單的乙個字元到巨大的文字塊或二進位制字串資料。
型別
大小
用途
char
0-255位元組
定長字串
varchar
0-255位元組
變長字串
tinyblob
0-255位元組
不超過 255 個字元的二進位制字串
tinytext
0-255位元組
短文本字串
blob
0-65 535位元組
二進位制形式的長文字資料
text
0-65 535位元組
長文字資料
mediumblob
0-16 777 215位元組
二進位制形式的中等長度文字資料
mediumtext
0-16 777 215位元組
中等長度文字資料
logngblob
0-4 294 967 295位元組
二進位制形式的極大文字資料
longtext
0-4 294 967 295位元組
極大文字資料
char 型別用於定長字串,並且必須在圓括號內用乙個大小修飾符來定義。這個大小修飾符的範圍從 0-255。比指定長度大的值將被截短,而比指定長度小的值將會用空格作填補。
char 型別可以使用 binary 修飾符。當用於比較運算時,這個修飾符使 char 以二進位制方式參於運算,而不是以傳統的區分大小寫的方式。
char 型別的乙個變體是 varchar 型別。它是一種可變長度的字串型別,並且也必須帶有乙個範圍在 0-255 之間的指示器。char 和 varchgar 不同之處在於 musql 資料庫處理這個指示器的方式:char 把這個大小視為值的大小,不長度不足的情況下就用空格補足。而 varchar 型別把它視為最大值並且只使用儲存字串實際需要的長度(增加乙個額外位元組來儲存字串本身的長度)來儲存值。所以短於指示器長度的 varchar 型別不會被空格填補,但長於指示器的值仍然會被截短。
因為 varchar 型別可以根據實際內容動態改變儲存值的長度,所以在不能確定字段需要多少字元時使用 varchar 型別可以大大地節約磁碟空間、提高儲存效率。
varchar 型別在使用 binary 修飾符時與 char 型別完全相同。
對於字段長度要求超過 255 個的情況下,mysql 提供了 text 和 blob 兩種型別。根據儲存資料的大小,它們都有不同的子型別。這些大型的資料用於儲存文字塊或影象、聲音檔案等二進位制資料型別。
text 和 blob 型別在分類和比較上存在區別。blob 型別區分大小寫,而 text 不區分大小寫。大小修飾符不用於各種 blob 和 text 子型別。比指定型別支援的最大範圍大的值將被自動截短。
在處理日期和時間型別的值時,mysql 帶有 5 個不同的資料型別可供選擇。它們可以被分成簡單的日期、時間型別,和混合日期、時間型別。根據要求的精度,子型別在每個分型別中都可以使用,並且 mysql 帶有內建功能可以把多樣化的輸入格式變為乙個標準格式。
型別
大小
(位元組)
範圍
格式
用途
date
31000-01-01/9999-12-31
yyyy-mm-dd
日期值time
3'-838:59:59'/'838:59:59'
hh:mm:ss
時間值或持續時間
year
11901/2155
yyyy
年份值datetime
81000-01-01 00:00:00/9999-12-31 23:59:59
yyyy-mm-dd hh:mm:ss
混合日期和時間值
timestamp
81970-01-01 00:00:00/2037 年某時
yyyymmdd hhmmss
混合日期和時間值,時間戳
mysql資料型別用法 mysql資料型別和用法
歡迎進入linux社群論壇,與200萬技術人員互動交流 進入 mysql支援多種列型別 數值型別 日期 時間型別和字串 字元 型別。本章首先對這些列型別進行了概述,然後更加詳細地描述了各種列的型別,以及列型別儲存需求的總結。概述很簡單。關於具體列型別 歡迎進入linux社群論壇,與200萬技術人員互...
mysql 資料型別 真假 MySQL 資料型別
mysql基礎 資料型別 整型型別 根據所儲存的整數數值取值範圍不同,可分為以下五類 1 tinyint佔1個位元組 2 smallint佔2個位元組 3 mediumint 佔3個位元組 4 int佔4個位元組 5 bigint佔8個位元組 根據每種型別所佔的位元組數可確定其無符號整數和有符號整數...
mysql 郵箱 資料型別 mysql 資料型別
1 整型mysql資料型別含義 有符號 tinyint m 1個位元組 範圍 128 127 smallint m 2個位元組 範圍 32768 32767 mediumint m 3個位元組 範圍 8388608 8388607 int m 4個位元組 範圍 2147483648 21474836...