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 之間的...