mysql資料型別解析

2021-08-13 04:40:43 字數 3827 閱讀 4222

mysql支援所有標準sql中的數值型別,其中包括

嚴格資料型別(integer,smallint,decimal,numberic);

近似值資料型別(float,real,double presision);

擴充套件後增加了tinyint,mediumint,bigint這3種長度不同的整形;

並增加了bit型別,用來存放位資料。

在 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 資料型別相同。

字串型別

位元組大小         描述及儲存需求

char         0-255位元組        定長字串 

varchar      0-255位元組        

變長字串

tinyblob     0-255位元組        

不超過 255 個字元的二進位制字串 

tinytext     0-255位元組        

短文本字串

blob         0-65535位元組      

二進位制形式的長文字資料

text         0-65535位元組      

長文字資料

mediumblob   0-16 777 215位元組

二進位制形式的中等長度文字資料

mediumtext   0-16 777 215位元組

中等長度文字資料

logngblob    0-4 294 967 295位元組

二進位制形式的極大文字資料

longtext     0-4 294 967 295位元組

極大文字資料

varbinary(m)       允許長度0-m個位元組的定長位元組符串,值的長度+1個位元組

binary(m)    m                允許長度0-m個位元組的定長位元組符串

char 用於定長字串,並且必須在圓括號內用乙個大小修飾符來定義。這個大小修飾符的範圍從 0-255。比指定長度大的值將被截短,而比指定長度小的值將會用空格作填補。

char 型別可以使用 binary 修飾符。當用於比較運算時,這個修飾符使 char 以二進位制方式參於運算,而不是以傳統的區分大小寫的方式。

char 型別的乙個變體是 varchar 型別。它是一種可變長度的字串型別,並且也必須帶有乙個範圍在 0-255 之間的指示器。

char和varcha

r區別在於 mysql

資料庫處理這個指示器的方式:char 把這個大小視為值的大小,長度不足的情況下就用空格補足。而 varchar 型別把它視為最大值並且只儲存字串實際需要的長度(增加乙個額外位元組來儲存字串本身的長度)。所以短於指示器長度的 varchar 型別不會被空格填補,但長於指示器的值仍然會被截短。

因為 varchar 型別可以根據實際內容動態改變儲存值的長度,所以在不能確定字段需要多少字元時使用 varchar 型別可以大大地節約磁碟空間、提高儲存效率。

對於字段長度要求超過 255 個的情況下,mysql 提供了 text 和 blob 兩種型別。根據儲存資料的大小,它們都有不同的子型別。這些大型的資料用於儲存文字塊或影象、

型別  大小(位元組)   範圍             格式          用途 

date    4     1000-01-01/9999-12-31

yyyy-mm-dd    日期值 

time  

3     '-838:59:59'/'838:59:59'

hh:mm:ss   時間值

或持續時間

year  

1         1901/2155          

yyyy       年份值 

datetime   8        

yyyy-mm-dd hh:mm:ss 混合日期和時間值 

timestamp  4        

yyyymmdd hhmmss 混合日期和時間值,時間戳

mysql 用 date 和

year 型別儲存簡單的日期值,使用 time 儲存時間值。這些型別可以描述為字串或不帶分隔符的整數序列.

如果描述為字串,date 型別的值應使用

(-)作為分隔符分開,而 time 型別的值應該使用冒號作為分隔符分開。需要注意的是,沒有冒號分隔符的 time 型別值,將會被 mysql 理解為持續的時間,而不是時間戳。

mysql 還對日期的年份中的兩個數字的值,或是 sql 語句中為

year 型別輸入的兩個數字進行最大限度的通譯。因為所有

year 型別的值必須用 4個數字儲存。

mysql 試圖將 2 個數字的年份轉換為 4 個數字的值。把在 00-69 範圍內的值轉換到 2000-2069 範圍內。把 70-99 範圍內的值轉換到 1970-1979 之內。

如果 mysql 自動轉換後的值並不符合我們的需要,請輸入 4 個數字表示的年份。

mysql 還支援 date

time 和 timestamp 這兩種混合型別。

這兩種型別通常用於自動儲存包含當前日期和時間的時間戳.

如果我們對 timestamp 型別的字段沒有明確賦值,或是被賦與了 null 值。mysql 會自動使用系統當前的日期和時間來填充它。

mysql 還支援兩種復合資料型別 enum 和 set,它們擴充套件了 sql 規範。雖然這些型別在技術上是字串型別,但是可以被視為不同的資料型別。

乙個 enum 型別只允許從乙個集合中取得乙個值;而 set 型別允許從乙個集合中取得任意多個值。

MySQL資料型別解析

mysql支援大量的列型別,它可以被分為3類 數字型別 日期和時間型別以及字串 字元 型別。本節首先給出可用型別的乙個概述,並且總結每個列型別的儲存需求,然後提供每個類中的型別性質的更詳細的描述。概述有意簡化,更詳細的說明應該考慮到有關特定列型別的附加資訊,例如你能為其指定值的允許格式。由mysql...

MySQL 常用資料型別解析

以下內容從官網裡都能找到,位址 1.整數型別 精確值 包括tinyint,smallint,mediumint,int,bigint型別。每個型別都有乙個數值範圍,超過這個範圍,將儲存這個範圍裡的最大值。詳細內容請看下表。型別儲存 byte 最小值 signed unsigned 最大值 signe...

MySQL資料型別之數字型別詳細解析

我們今天是要與大家一起討論的是mysql資料型別的詳細分析對mysql資料型別的詳細分析,我前兩天在相關 看見mysql資料型別之數字型別的資料,覺得挺好,就拿出來供大家分享。無論是在小得可憐的免費資料庫空間或是大型電子商務 合理的設計表結構 充分利用空間是十分必要的。這就要求我們對資料庫系統的常用...