SQL Server基礎知識

來源:互聯網
上載者:User

標籤:

1、SQL Server表名為什麼要加方括弧?

這個不是必須要加,但表名或欄位名如果引用了sqlserver中的關鍵字,資料庫會不識別這到底是關鍵字還是表名(或欄位名)時就必須要加。

比如,一個表名叫user,user在sqlserver中屬於關鍵字,那麼查詢的時候必須要這樣:

select * from [user]

否則就會報錯。

同理,如果user屬於欄位名,也同樣要加,如

select * from 表名 where [user]=1

2、SQL中的go,begin,end

  

go 向 SQL Server 公用程式發出一批 Transact-SQL 陳述式結束的訊號。go是把t-sql語句分批次執行。(一步成功了才會執行下一步,即一步一個go)

BEGIN 和 END 語句用於將多個 Transact-SQL 陳述式組合為一個邏輯塊。在控制流程語句必須執行包含兩條或多條 Transact-SQL 陳述式的語句塊的任何地方,都可以使用 BEGIN 和 END 語句。

例如,當 IF 語句僅控制一條 Transact-SQL 陳述式的執行時,不需要使用 BEGIN 或 END 語句:

IF (@@ERROR <> 0)
SET @ErrorSaveVariable = @@ERROR

如果 @@ERROR 為 0,則僅跳過 SET 語句。

用 BEGIN 和 END 語句可以使 IF 語句在計算結果為 FALSE 時跳過語句塊:

IF (@@ERROR <> 0)
BEGIN
SET @ErrorSaveVariable = @@ERROR
PRINT ‘Error encountered, ‘ +
CAST(@ErrorSaveVariable AS VARCHAR(10))
END

BEGIN 和 END 語句必須成對使用:任何一個均不能單獨使用。BEGIN 語句單獨出現在一行中,後跟 Transact-SQL 陳述式塊。最後,END 語句單獨出現在一行中,指示語句塊的結束。

3、mysql語句轉換為sqlserver

  alter table order_detail add constraint FK_Relationship_1 foreign key (book_id)
references book (id) on delete restrict on update restrict;
SQL Server 的文法如下:

ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }
指定如果已建立表中的行具有參考關聯性,並且被引用行已從父表中刪除,則對這些行採取的操作。預設值為 NO ACTION。

NO ACTION
資料庫引擎將引發錯誤,並復原對父表中行的刪除操作。

CASCADE
如果從父表中刪除一行,則將從參考資料表中刪除相應行。

SET NULL
如果父表中對應的行被刪除,則組成外鍵的所有值都將設定為 NULL。若要執行此約束,外鍵列必須可為空白值。

SET DEFAULT
如果父表中對應的行被刪除,則組成外鍵的所有值都將設定為預設值。若要執行此約束,所有外鍵列都必須有預設定義。如果某個列可為空白值,並且未設定顯式的預設值,則將使用 NULL 作為該列的隱式預設值。

MySQL 裡面的 on delete restrict
切換到 SQL Server , 可以切換為 ON DELETE NO ACTION
也可以不寫,因為 預設值為 NO ACTION。

3、 mysql的on delete restrict與on ordelete cascade區別

  外鍵約束對子表的含義: 
  如果在父表中找不到候選索引鍵,則不允許在子表上進行insert/update 

外鍵約束對父表的含義: 
  在父表上進行update/delete以更新或刪除在子表中有一條或多條對應匹配行的候選索引鍵時,父表的行為取決於:在定義子表的外鍵時指定的on update/on delete子句, InnoDB支援5種方式, 分列如下 
  
  . cascade方式 
   在父表上update/delete記錄時,同步update/delete掉子表的匹配記錄 
   On delete cascade從mysql3.23.50開始可用; on update cascade從mysql4.0.8開始可用 

  . set null方式 
   在父表上update/delete記錄時,將子表上匹配記錄的列設為null 
   要注意子表的外鍵列不能為not null 
   On delete set null從mysql3.23.50開始可用; on update set null從mysql4.0.8開始可用 

  . No action方式 
   如果子表中有匹配的記錄,則不允許對父表對應候選索引鍵進行update/delete操作 
   這個是ANSI SQL-92標準,從mysql4.0.8開始支援 

  . Restrict方式 
   同no action, 都是立即檢查外鍵約束 

  







SQL Server基礎知識

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.