1、設定初始流水号,比如設定某一列的各個依次為1、2、3、4、5...... ;在SS中是IDENTITY(1, 1),而在MS寫法是auto_increment
2、修改表中列的資料類型,在SS中是ALTER TABLE students01 ALTER COLUMN Id SMALLINT,而在MS中寫法是ALTER TABLE students01 MODIFY Id SMALLINT
.......
因為之前一直在用SQL Server,是以一時間适應不過來。 還有好多細節在寫法上有各種各樣的差別,先記錄一下自己碰到的,以後再補上去
=====================================================================
轉載一下網上的資料 Link:http://www.jb51.net/article/54346.htm
這篇文章主要介紹了MySQL與SQL Server的一些差別淺析,本文羅列了MySQL與SQL Server的25個不同的地方,并對它們的分頁技術的不同做了講解,需要的朋友可以參考下
1、mysql支援enum,和set類型,sql server不支援
2、mysql不支援nchar,nvarchar,ntext類型
3、mysql的遞增語句是AUTO_INCREMENT,而mssql是identity(1,1)
4、mssql預設到處表建立語句的預設值表示是((0)),而在mysql裡面是不允許帶兩括号的
5、mysql需要為表指定存儲類型
6、mssql識别符是[],[type]表示他差別于關鍵字,但是mysql卻是 `,也就是按鍵1左邊的那個符号
7、mssql支援getdate()方法擷取目前時間日期,但是mysql裡面可以分日期類型和時間類型,擷取目前日期是cur_date(),目前完整時間是 now()函數
8、mssql不支援replace into 語句,但是在最新的sql20008裡面,也支援merge文法
9、mysql支援insert into table1 set t1 = ‘', t2 = ‘' ,但是mssql不支援這樣寫
10、mysql支援insert into tabl1 values (1,1), (1,1), (1,1), (1,1), (1,1), (1,1), (1,1)
11 mssql不支援limit語句,是非常遺憾的,隻能用top 取代limt 0,N,row_number() over()函數取代limit N,M
12、mysql在建立表時要為每個表指定一個存儲引擎類型,而mssql隻支援一種存儲引擎
13、mysql不支援預設值為目前時間的datetime類型(mssql很容易做到),在mysql裡面是用timestamp類型
14、mssql裡面檢查是否有這個表再删除,需要這樣:if exists (select * from dbo.sysobjects where id=id (N'uc_newpm') and OBJECTPROPERTY(id, N'IsUserTable') = 1) 但是在mysql裡面隻需要 DROP TABLE IF EXISTS cdb_forums;
15、mysql支援無符号型的整數,那麼比不支援無符号型的mssql就能多出一倍的最大數存儲
16、mysql不支援在mssql裡面使用非常友善的varchar(max)類型,這個類型在mssql裡面既可做一般資料存儲,也可以做blob資料存儲
17、mysql建立非聚集索引隻需要在建立表的時候指定為key就行,比如:KEY displayorder (fid,displayorder) 在mssql裡面必須要:
複制代碼 代碼如下: create unique nonclustered index index_uc_protectedmembers_username_appid on dbo.uc_protectedmembers (username asc,appid asc)
18、mysql text字段類型不允許有預設值
19、mysql的一個表的總共字段長度不超過65XXX。
20、一個很表面的差別就是mysql的安裝特别簡單,而且檔案大小才23M左右(5.5.23),相比微軟這個龐然大物,安裝進度來說簡直就是.....
21、mysql的管理工具有幾個比較好的,mysql_front,和官方那個套件,不過都沒有SSMS的使用友善,這是mysql很大的一個缺點。
22、mysql的存儲過程隻是出現在最新的版本中,穩定性和性能可能不如mssql。
23、同樣的負載壓力,mysql要消耗更少的CPU和記憶體,mssql的确是很耗資源。
24、php連接配接mysql和mssql的方式都差不多,隻需要将函數的mysql替換成mssql即可,如果是PDO方式隻需要把mysql替換mssql即可。
25、mysql支援date,time,year類型,mssql到2008才支援date和time。
附:MySQL與MSSQL分頁的差別
之前一直用MySQL,雖然比起mssql這個龐大的資料庫系統mysql很苗條,但它并不遜色。以下說說這兩個在資料庫各自的分頁差別
例1,取出前十條
複制代碼 代碼如下:
SELECT * FROM table LIMIT 10;
在mssql中
複制代碼 代碼如下:
SELECT TOP 10 * FROM table
例2,每頁十條,取出第三頁
在MySQL中
複制代碼 代碼如下:
SELECT * FROM table LIMIT 20,10
在mssql中
複制代碼 代碼如下:
SELECT TOP 10 * FROM table WHERE id NOT IN(
SELECT TOP 20 id FROM table ORDER BY id DESC
) ORDER BY id DESC;
由以上例子可以看出,在MySQL中分頁用LIMIT關鍵字,如果是LIMIT 10表示取前十條,如果是LIMIT 10,10表示偏移十條取前十條記錄。在mssql中用top關鍵字,如果隻取前n條記錄直接top n即可,但是要是分頁取就有點麻煩。 ================================================================================== Link:http://www.cnblogs.com/fish-li/archive/2011/04/05/2006107.html
MySql與SqlServer的一些常用用法的差别
由于工作的原因:上家公司的資料庫全采用MySql,是以不得不用它。是以也學到了MySql的一些知識,但考慮到今後可能沒機會使用了,是以想趁現在離職在家休息,打算把這些東西整理一下,也為了萬一今後能用上,留個參考的資源。考慮到一直在使用SqlServer,是以就打算直接與SqlServer對比來寫。
本文将主要列出MySql與SqlServer不同的地方,且以常用的存儲過程的相關内容為主。
1. 辨別符限定符
SqlServer | [] |
MySql | `` |
2. 字元串相加
SqlServer | 直接用 + |
MySql | concat() |
3. isnull()
SqlServer | isnull() |
MySql | ifnull() 注意:MySql也有isnull()函數,但意義不一樣 |
4. getdate()
SqlServer | getdate() |
MySql | now() |
5. newid()
SqlServer | newid() |
MySql | uuid() |
6. @@ROWCOUNT
SqlServer | @@ROWCOUNT |
MySql | row_count() 注意:MySql的這個函數僅對于update, insert, delete有效 |
7. SCOPE_IDENTITY()
SqlServer | SCOPE_IDENTITY() |
MySql | last_insert_id() |
8. if ... else ...
SqlServer | |
MySql | |
注意:對于MySql來說,then, end if是必須的。類似的還有其它的流程控制語句,這裡就不一一列出。
9. declare
其實,SqlServer和MySql都有這個語句,用于定義變量,但差别在于:在MySql中,DECLARE僅被用在BEGIN ... END複合語句裡,并且必須在複合語句的開頭,在任何其它語句之前。這個要求在寫遊标時,會感覺很BT.
10. 遊标的寫法
SqlServer | |
MySql | |
注意:為了提高性能,通常在表變量上打開遊标,不要直接在資料表上打開遊标。
11. 分頁的處理
SqlServer | 當然,SqlServer中并不隻有這一種寫法,隻是這種寫法是比較常見而已。 |
MySql | |