MySQL資料型別

2021-07-22 10:05:41 字數 4440 閱讀 3269

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

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

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

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

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

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

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

其區別在於:

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

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

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

型別位元組數

取值範圍

零值year

11901~2155

0000

date

41000-01-01~9999-12-31

0000:00:00

time

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

00:00:00

datetime

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

0000-00-00 00:00:00

timestamp

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

00000000000000

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這種資料型別了。

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')

男','女'

));  

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)來將值轉換為二進位制顯示。

create

table test6(bb bit(4));

insert

into test6 values(12);

select bin(bb+

0) from test6;

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

3、blob型別

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

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

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

text型別和blob型別:text只能儲存字元資料,而blob可以儲存二進位制資料。如果是純文字,適合text。如果是等適合存二進位制;

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資料型別和用法

歡迎進入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...