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位元組 都可以存放...