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也有一点作用。 哈哈