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

查看表結(jié)構(gòu)的方式
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' ;
- -- 顯示表結(jié)構(gòu)
- sp_help/sp_columns 表名;
MySQL方式:
- -- 查看系統(tǒng)內(nèi)所有數(shù)據(jù)庫
- show databases;
- -- 查詢數(shù)據(jù)庫內(nèi)所有表
- show tables;
- -- 顯示表結(jié)構(gòu)desc 表名;
語句結(jié)束符號(hào)
SQLServer的結(jié)束符號(hào):
使用單行GO
分號(hào);
什么都不寫
MySQL的結(jié)束符號(hào):
似乎一直都是用分號(hào);。
返回前幾條記錄
SQL Server的寫法是:
- select top n條 from 表;
- select top n percent from 表;
MySQL的寫法是:
- select * from 表 limit n;
獲取當(dāng)前的日期時(shí)間
SQL Server的寫法是:
- getdate();
MySQL的寫法是:
- now();
循環(huán)支持
以1到100求和為例,我們看看兩者實(shí)現(xiàn)的不同方式
SQL Server只有一個(gè)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;
細(xì)微區(qū)別太多,這里就不一一列舉了。