mysql 型別 MySQL資料型別

2021-10-17 07:02:02 字數 4016 閱讀 7198

mysql與sqlserver的資料型別大同小異。因此,可以忽略與sqlserver相同的地方,在sqlserver的基礎上學習。

一、整型的顯示寬度

mysql資料型別與sqlserver有些不同,其定義的基本形式如下:

整型型別(顯示寬度)

注意,正確的理解,其實是顯示寬度,因為整型的顯示寬度,對數值大小無影響,只是當設定了zerofill的時候,在顯示的時候補0而已。

從上面的顯示我們看到,設定了寬度為8,並且zerofill了,這樣在查詢的時候,會在前面自動補0。寬度可以不設定,因為整數資料型別都有預設的顯示寬度,不設就採用預設的。

另外,即使設定了顯示寬度,也能賦超過顯示寬度的值,整型的顯示寬度僅僅用於顯示補0。

二、浮點型與定點型

mysql中可以指定浮點數和定點數的精度

資料型別(m,d)

m:精度,資料的總長度;

d:標度,小數點後的長度;

這種型別mysql裡有3種如:float(6,2)、double(6,2)、decimal(6,2);

其區別在於:

當不指定精度時,float、double缺省會儲存實際精度,而decimal預設是整數;

當標度不夠時,都會四捨五入,但decimal會警告資訊。

三、日期與時間型別

mysql日期時間所有種類如下:

型別位元組數

取值範圍

零值year

1901~2155

date

1000-01-01~9999-12-31

0000:00:00

time

-838:59:59~838:59:59

00:00:00

datetime

1000-01-01 00:00:00~9999-12-31 23:59:59

0000-00-00 00:00:00

timestamp

1970-01-01 08:00:01~2038-01-19 11:14:07

date型別前面可以加個d,d表示天即24小時,如往date型別插入 '2 15:20:20';

另外timestamp型別與datetime在無輸入的情況下要注意下:

timestamp使用current_timestamp()而datetime使用now(來獲取當前時間);

輸入null時,系統會輸入系統當前日期與時間;

無任何輸入時,系統會輸入系統當前日期與時間;

四、字串型別

在mysql中,字串型別包括char、varchar、blob、text、enum、set。

1、char與varchar

其定義方式為:

字串型別(m)

這個m是長度的意思,插入該列的字串長度將不允許超過m所指定的長度。另外,由於mysql在建庫時就指定了字符集,因此就不存在nchar、nvarchar、ntext這種資料型別了。

char最長可取255;

varchar最長可取65535;

2、text

text分為4種,與sqlserver不同:

型別允許的長度

儲存空間

tinytext

0~255位元組

值的長度+2位元組

text

0~65535位元組

值的長度+2位元組

mediumtext

0~167772150位元組

值的長度+3位元組

longtext

0~4294967295位元組

值的長度+4位元組

3、enum型別

enum型別(列舉型別),與c#的概念一樣,在定義時指定取值範圍。

屬性名 enum('值1','值2','值3'...'值n')

enum有not null屬性,其預設值為取值列表的第乙個元素;

enum無not null,則enum型別將允許插入null,並且null為預設值;

create table test4(*** enum('男','女'));insert into test4 values('男');insert into test4 values('爺'); --這行報錯

select * from test4;

4、set型別

在建立表時,就指定set型別的取值範圍。

屬性名 set('值1','值2','值3'...,'值n')

它與enum的區別在什麼地方呢?

基本上就是多選的enum。

5、二進位制型別

二進位制型別是在資料庫中儲存二進位制資料的資料型別。二進位制型別包括binary、varbinary、bit、tinyblob、blob、mediumblob、longblob。

型別取值範圍

binary(m)

位元組數為m,允許長度為0~m的定長二進位制字串

varbinary(m)

允許長度為0~m的變長二進位制字串,位元組數為值的長度加1

bit(m)

m位二進位制資料,m最大值為64

tinyblob

可變長二進位制資料,最多255個位元組

blob

可變長二進位制資料,最多2的16次方-1個位元組

mediumblob

可變長二進位制資料,最多2的24次方-1個位元組

longblob

可變長二進位制資料,最多2的32次方-1個位元組

1、binary和varbinary

兩者唯一的差別在於binary當長度不夠時會補\0。

2、bit型別

bit型別與sqlserver裡的就差別大了。 其定義方式為:

bit(m)

其中"m"指定了該二進位制的最大位元組長度為m,m的最大值為64。如bit(4)就是資料型別為bit型別,長度為4。其能夠儲存的值為0-15。因為變成二進位制後,15的值為1111。

在查詢bit型別的資料時,要用bin(欄位名+0)來將值轉換為二進位制顯示。

上面的結果以二進位制顯示,最大的長度為4。

3、blob型別

五、資料型別的選擇

整型:根據要顯示的最大值決定;

浮點型:要顯示小數。如果要精確到小數點後10位,就選擇double,而不應該選擇float。decimal精度較高,浮點數會出現誤差,如果精度較高,則應選擇定點數decimal;

enum型別和set型別:長度不同,enum型別最多可以由65535個成員,而set型別最多只能包含64個成員。且enum只能單選,而set型別可以多選;

六、問題總結

1、儲存路徑的問題

mysql中,如果路徑中使用"\"符號時,這個符號會被過濾。解決的辦法是路徑中用"/"或"\\"來代替"\"。這樣mysql就不會自動過濾路徑中的分隔符。

2、mysql中的布林型別

mysql中沒有bool或boolean型別,但是為了支援sql標準,也可以定義bool或boolean型別的,但是bool或boolean型別最後轉換成的是tinyint(1),也就是說,在mysql中,布林型別實際上是tinyint(1)。

3、mysql中如何儲存jpg或*****

一般情況下,資料庫中不直接儲存和音訊檔案,而是儲存或音訊檔案的路徑,如果在特殊情況下需要在mysql資料庫中儲存和音訊檔案,可以選擇blob型別;

mysql物件資料型別 MYSQL 的資料型別

mysql 資料型別 mysql中定義資料欄位的型別對你資料庫的優化是非常重要的。mysql支援多種型別,大致可以分為三類 數值 日期 時間和字串 字元 型別。數值型別 mysql支援所有標準sql數值資料型別。這些型別包括嚴格數值資料型別 integer smallint decimal和nume...

mysql中資料型別總結 mysql資料型別總結

由mysql支援的列型別列在下面。下列 字母用於描述中 m 指出最大的顯示尺寸。最大的合法的顯示尺寸是 255 d 適用於浮點型別並且指出跟隨在十進位制小數點後的數碼的數量。最大可能的值是 30,但是應該不大於m 2。方括號 和 指出可選的型別修飾符的部分。注意,如果你指定乙個了為zerofill,...

mysql有字母資料型別 MySQL 資料型別

在 mysql 中,有三種主要的型別 文字 數字和日期 時間型別。4.0版本以下,varchar 50 指的是50位元組,如果存放utf8漢字時,只能存16個 每個漢字3位元組 5.0版本以上,varchar 50 指的是50字元,無論存放的是數字 字母還是utf8漢字 每個漢字3位元組 都可以存放...