SQL Server和MySQL常用SQL區(qū)別
SQLServer和MySQL都是大家常用的數(shù)據(jù)庫,她們基本兼容SQL-92標準,但語法風格還是有一些不同,下面列舉一部分兩者常用SQL片段的差異,權當拋磚引云,其實兩者之間的細微差異多著呢。

查看表結構的方式
SQLServer方式:
- -- 查看系統(tǒng)內(nèi)所有數(shù)據(jù)庫
- SELECT name, database_id, create_date FROM sys.databases ;
- -- 查詢數(shù)據(jù)庫內(nèi)所有表
- select * from sysobjects where xtype= 'U' ;
- -- 顯示表結構
- sp_help/sp_columns 表名;
MySQL方式:
- -- 查看系統(tǒng)內(nèi)所有數(shù)據(jù)庫
- show databases;
- -- 查詢數(shù)據(jù)庫內(nèi)所有表
- show tables;
- -- 顯示表結構desc 表名;
語句結束符號
SQLServer的結束符號:
使用單行GO
分號;
什么都不寫
MySQL的結束符號:
似乎一直都是用分號;。
返回前幾條記錄
SQL Server的寫法是:
- select top n條 from 表;
- select top n percent from 表;
MySQL的寫法是:
- select * from 表 limit n;
獲取當前的日期時間
SQL Server的寫法是:
- getdate();
MySQL的寫法是:
- now();
循環(huán)支持
以1到100求和為例,我們看看兩者實現(xiàn)的不同方式
SQL Server只有一個while循環(huán),語法如下:
- DECLARE @I INT = 1;
- DECLARE @K INT = 0;
- WHILE @IBEGIN SET @K = @K + @I;
- SET @I = @I + 1;
- ENDSELECT @K;
MySQL支持好幾種,先看看While循環(huán):
- DECLARE I,K INTDEFAULT 0 ;
- WHILE I SET K=I + K;
- SET I=I + 1;
- END WHILE;
- SELECT K;
再看看MySQL的REPEAT UNTIL 循環(huán)循環(huán):
- DECLARE I,K INTDEFAULT 0 ;
- REPEATSET K=I + K;
- SET I=I + 1;
- NTIL I>100END REPEAT;
- SELECT K;
再看看MySQL的LOOP循環(huán)
- DECLARE I,K INTDEFAULT 0 ;
- LABEL: LOOPSET K=I + K;
- SET I=I + 1;
- IF I>100 THENLEAVE LABEL;
- END IF;
- END LOOP;
- SELECT K;
細微區(qū)別太多,這里就不一一列舉了。