1、約束的操作
Cascade, No Action理解
當在建立約束時選上Cascade,或代碼建立時添加ON Delete CASCADE,當在主表刪除一行記錄時, 外表相關聯的記錄都會同時刪除
當在建立約束時選上No Action,或代碼建立時添加ON Delete No Action,當在主表刪除一行記錄時, 如果外表關聯有資料, 則會提示出錯
上面的只是Delete, 其實Update也是一樣的
2、Unique約束
如主鍵一樣,讓一列資料只能有唯一的值
3、子查詢
.NET面試者一般在筆試時都會有一條, 選出表A裡面第10-15行資料(ID是不連續的)
這樣就需要子查詢來實現了, 記得五年前我第一次看到這個問題時, 我也不知道怎回事, 為什麼不通過ID來查詢呢?
其實有時ID的不連續的, 所以需要用子查詢了
select top 5 * from [A] where orderid not in (select top 9 orderid from [A] order by Orderid asc) order by Orderid asc
4、select into 和 insert into select 查詢插入語句的區別
select into from要求目標表不存在,因為在插入時會自動建立, 多用來建立暫存資料表時用到
insert into select 要求目標表存在,只是把資料複製過來
5、視圖的update, Insert資料
update useraccountview set code='CA001' where userid=2
Insert資料其實是在視圖裡面建立觸發器(Instead of)來插入資料, 在觸發器中通過inserted來取得需要的資料, 然後插入相應的表
所以在視圖中也是可以update與insert資料, 不過建議不要在視圖中操作, 因為考慮不周會引起好多麻煩的問題, 如果多表的插入或update, 建議用預存程序來實現
6、視圖加密
Create view User_View
with cncryption
AS
多上with cncryption就可以加密了, 這樣就查看不到視圖的內容, 另外 還有一個with schemabinding也有一點作用。 哈哈