1. 程式人生 > >MySQL和SQL server語法的差異

MySQL和SQL server語法的差異

參考:https://www.linuxidc.com/Linux/2017-10/148022.htm

1.大小寫敏感
在MySQL中對部分物件的引用是大小寫敏感的,如資料庫名、表名。

2.註釋符
MySQL中有三種註釋符:

  • 使用“#”開頭
  • 使用“–”開頭,和SQL server不一樣的是,MySQL在第二個“-”後需要有空白符
  • 使用標準的“/**/”

3.自增列
MySQL中設定自增列必須要有索引,而且一張表只有一個自增列;
SQL server中可以有多個自增列,而且可以設定自增長步長;

4.查看錶的屬性
MySQL中使用desc或者show;
SQL server使用儲存過程sp_help;

5.修改表名
MySQL使用alter語句中的rename to;
SQL server使用儲存過程sp_rename;

6.刪除表
MySQL可以直接判斷,且一次可以刪除多表;
SQL server只可以一次刪除一張表;

7.修改欄位屬性
MySQL修改欄位屬性可以使用change和modify,而且可以修改列的定義,包括約束,change還可以重新命名列;
SQL server只能修改欄位屬性(資料型別、空性),不能修改約束類屬性;

8.新增、刪除欄位和約束

  • MySQL可以一次性新增多個欄位;
  • SQL server只可以一次加一次;
  • MySQL在外來鍵上和SQL Server以及Oracle都不同,MySQL在建立外來鍵的時候,會自動在外來鍵列上建立一個索引,且這個索引無法人為刪除。
  • 預設值的設定方法
    SQL Server的預設值約束和MySQL的預設值約束設定方法相差很大,MySQL的預設值約束不能使用constraint來設定,只能通過修改列屬性來設定。另外,MySQL的default關鍵字後是不能加括號的,而SQL Server是無所謂的。

9.建立表模板
MySQL中複製表結構時不會複製主鍵、索引、自增列等任何屬性,僅僅只是簡單的建立一張表然後插入資料。但SQL Server複製表結構時會複製自增列屬性。

10.MySQL中的欄位顯示寬度和zerofill

  • 在MySQL中可以給整數資料型別指定結果的顯式寬度,如int(4)表示將顯示4位整數,如果實際值的位數小於顯示值寬度,則使用空格填充。而結果位數超出時將不影響顯示結果。一般該功能都會配合zerofill屬性用0代替空格填充,但是使用了zerofill後,該列就會自動變成無符號欄位。zerofill屬性的宣告必須緊跟在整數資料型別的後面,而不能跟在如not
    null這樣的屬性後面。
  • SQL Server中沒有該功能。