MYSQL 與MSSQL 資料型別 對比

2021-06-22 16:02:10 字數 3157 閱讀 7596

mysql版本5.1

mssql 2008

--mysql5.1 與mssql 2008 資料型別 對比

--分類:a 數值型別,b 日期時間型別 ,c 字串型別

--a.數值型別

bit(m),bool/boolen

---與mssql相比bit代表的意思不一樣,bool與mssql bit類似 但是也不一樣,bool 與mysql tinyint(1)一樣,所以與mssql bit 非0為1不一樣(除null)

tinyint,smallint,mediumint,bigint 

--都可以指定 [(m)] [unsigned] [zerofill]

--mysql 比mssql 多出來了乙個mediumint型別 佔3個位元組

--當兩個運算元均為整數值時,-、+和* 操作符使用bigint演算法。這說明如果乘兩個大整數(或來自返回整數的函式),當結果大於9223372036854775807時,會得到意想不到的結果。

--這太不好了。。要不然就是報錯不支援好點,來個意想不到的結果。。。

float,double

--相比mssql 來說 他們也能宣告(m,d) 精度,小數字。

decimal,numeric,fixed

--比mysql 多了另乙個同義詞fixed

--decimal整數最大位數(m)為65。支援的十進位制數的最大位數(d)是30。如果d被省略, 預設是0。如果m被省略, 預設是10。

--這與mssql 相比來說 精度最大38 相差比較大。

--以上後面三者還有差異是與mssql相比 可以宣告是否正負也就是unsigned標誌 ,還能設計顯示格式 用zerofill 來填充指定的m長度,

--unsigned標誌來確定有無符號,如果是無符號的,你值是有符號也將是無符號的。如果指定用 zerofill 的話,表示是unsigned的

--相比mssql來說少了兩個貨幣型別

smallmoney 

money  

--b.日期時間型別

date 

--範圍為'1000-01-01'到'9999-12-31'  3位元組 ,mssql 0001-01-01 到 9999-12-31 差的比較遠啊。3位元組

time

--範圍是'-838:59:59'到'838:59:59'。3位元組。

--mssql date(1-7) 00:00:00.0000000 到 23:59:59.9999999  固定5位元組。

datetime

--支援的範圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'  8位元組。

--mssql 1753 年 1 月 1 日到 9999 年 12 月 31 日 8位元組

timestamp

--時間戳。範圍是'1970-01-01 00:00:00'到2023年。

year[(2|4)]

--兩位或四位格式的年。預設是四位格式。在四位格式中,允許的值是1901到2155和0000。在兩位格式中,允許的值是70到69,表示從2023年到2069

相對mssql 來比 少了

smalldatetime,

tetime2 

--精度小於 3 時為 6 個位元組;精度為 4 和 5 時為 7 個位元組。所有其他精度則需要 8 個位元組。

datetimeoffset 

三個時間型別

但是多了個year型別

對於日期型別,mysql 有嚴格模式 和no_zero_date 模式 ,限制有點寬鬆,如果no_zero_date 模式 如果轉不過去時間就是0表示,並警告

mssql 如果是不能轉成日期 則報錯。mysql 對於日期的輸入格式 不太嚴格

--c.字串型別

char

--char列的長度固定為建立表時宣告的長度。長度可以為從0到255的任何值。

--當儲存char值時,在它們的右邊填充空格以達到指定的長度。當檢索到char值時,尾部的空格被刪除掉。在儲存或檢索過程中不進行大小寫轉換。

--而mssql 是1-8000個位元組。 查時也會去掉空格。

varchar

--varchar列中的值為可變長字串。長度可以指定為0到65,535之間的值。(varchar的最大有效長度由最大行大小和使用的字符集確定。整體最大長度是65,532位元組)。

--同char對比,varchar值儲存時只儲存需要的字元數,另加乙個位元組來記錄長度(如果列宣告的長度超過255,則使用兩個位元組)。

--varchar值儲存時不進行填充。當值儲存和檢索時尾部的空格仍保留

--而mssql n 的取值範圍為 1 至 8,000。max 指示最大儲存大小是 2^31-1 個位元組。儲存大小是輸入資料的實際長度加 2 個位元組

--進行查詢時,也會去掉尾部空格

binary

varbinary

--以上與mssql都類似

blob

text

--他們還分了tiny,medium。。。分類。而mssql沒分。

--相對mssql來說少了乙個image二進位制資料

enum

set--多出來兩個集合型別,相當於程式裡面的類(物件)這種形式了 比如enum('男','女')

--對於mssql來說少分類了uicode 單獨的字串型別 nchar nvarchar(mysql 是通過字符集來限定)。以及varchar/nvarchar(max)

與mssql 相比還差的其他資料型別

1.sql_variant --用於儲存 sql server 支援的各種資料型別(不包括 text、ntext、image、timestamp 和 sql_variant)的值。

2.xml 資料型別

3.uniqueidentifier 

4.表變數 table

mysql 的資料型別 貌似沒有專門的系統表儲存,而且不能建立自己定義的型別。

mssql 有專門的系統表來儲存 所有資料型別。還可以依靠 系統型別建立自己定義的型別,2k5以後還能利用clr建立型別

mysql也沒有資料型別的優先順序 描述。

都 有 cast 和convert 函式 cast(expr as type), convert(expr,type) , convert(expr using transcoding_name) 。與mssql有差異。

mysql 也沒有加減乘除的精度運算規則

MS SQL 資料型別

1.資料型別 資料類弄是資料的一種屬性,表示資料所表示資訊的型別。任何一種計算機語言都定義了自己的資料型別。當然,不同的程式語言都具有不同的特點,所定義的資料型別的各類和名稱都或多或少有些不同。sql server 提供了 25 種資料型別 binary n varbinary n char n v...

MS SQL資料型別詳解

資料型別 型別 描 述 bit 整型 bit 資料型別是整型,其值只能是0 1或空值。這種資料型別用於儲存只有兩種可能值的資料,如yes 或no true 或fa lse on 或off int 整型 int 資料型別可以儲存從 231 2147483648 到231 2147483 647 之間的...

MS SQL資料型別詳解

資料型別 型別 描 述 bit 整型 bit 資料型別是整型,其值只能是0 1或空值。這種資料型別用於儲存只有兩種可能值的資料,如yes 或no true 或fa lse on 或off int 整型 int 資料型別可以儲存從 231 2147483648 到231 2147483 647 之間的...