天天看點

mysql資料類型詳解

1、整型

mysql資料類型

含義(有符号)

tinyint(m)

1個位元組  範圍(-128~127)

smallint(m)

2個位元組  範圍(-32768~32767)

mediumint(m)

3個位元組  範圍(-8388608~8388607)

int(m)

4個位元組  範圍(-2147483648~2147483647)

bigint(m)

8個位元組  範圍(+-9.22*10的18次方)

取值範圍如果加了unsigned,則最大值翻倍,如tinyint unsigned的取值範圍為(0~256)。 

int(m)裡的m是表示select查詢結果集中的顯示寬度,并不影響實際的取值範圍,沒有影響到顯示的寬度,不知道這個m有什麼用。

2、浮點型(float和double)

含義

float(m,d)

單精度浮點型    8位精度(4位元組)     m總個數,d小數位

double(m,d)

雙精度浮點型    16位精度(8位元組)    m總個數,d小數位

設一個字段定義為float(5,3),如果插入一個數123.45678,實際資料庫裡存的是123.457,但總個數還以實際為準,即6位。

3、定點數

浮點型在資料庫中存放的是近似值,而定點類型在資料庫中存放的是精确值。 

decimal(m,d) 參數m<65 是總個數,d<30且 d<m 是小數位。

4、字元串(char,varchar,_text)

char(n)

固定長度,最多255個字元

varchar(n)

固定長度,最多65535個字元

tinytext

可變長度,最多255個字元

text

可變長度,最多65535個字元

mediumtext

可變長度,最多2的24次方-1個字元

longtext

可變長度,最多2的32次方-1個字元

char和varchar:

1.char(n) 若存入字元數小于n,則以空格補于其後,查詢之時再将空格去掉。是以char類型存儲的字元串末尾不能有空格,varchar不限于此。 

2.char(n) 固定長度,char(4)不管是存入幾個字元,都将占用4個位元組,varchar是存入的實際字元數+1個位元組(n<=255)或2個位元組(n>255),是以varchar(4),存入3個字元将占用4個位元組。 

3.char類型的字元串檢索速度要比varchar類型的快。

varchar和text: 

1.varchar可指定n,text不能指定,内部存儲varchar是存入的實際字元數+1個位元組(n<=255)或2個位元組(n>255),text是實際字元數+2個位元組。 

2.text類型不能有預設值。 

3.varchar可直接建立索引,text建立索引要指定前多少個字元。varchar查詢速度快于text,在都建立索引的情況下,text的索引似乎不起作用。

5.二進制資料(_blob)

1._blob和_text存儲方式不同,_text以文本方式存儲,英文存儲區分大小寫,而_blob是以二進制方式存儲,不分大小寫。 

2._blob存儲的資料隻能整體讀出。 

3._text可以指定字元集,_blo不用指定字元集。

6.日期時間類型

date

日期 '2008-12-2'

time

時間 '12:25:36'

datetime

日期時間 '2008-12-2 22:06:44'

timestamp

自動存儲記錄修改時間

若定義一個字段為timestamp,這個字段裡的時間資料會随其他字段修改的時候自動重新整理,是以這個資料類型的字段可以存放這條記錄最後被修改的時間。

資料類型的屬性

mysql關鍵字

null

資料列可包含null值

not null

資料列不允許包含null值

default

預設值

primary key

主鍵

auto_increment

自動遞增,适用于整數類型

unsigned

無符号

character set name

指定一個字元集