標籤:
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基礎知識