`

java面试题

阅读更多

1、视图可以更新么?对数据库中的表有影响吗?

视图可以修改的。视图其实就是一个select语句,不能存数据。所以直接加列是不行的,你可以alter它,如开始view是:create view t1 as select name from user;现在如果要加一个列age,你可以这样alter view ti as select name,age from user. 视图是一张虚拟表,不会影响数据库中的表

 

2、什么是Inserted表? 什么是Deleted表?

Inserted表和Deleted表。此二表仅仅在触发器运行时存在。你可以使用该两个表来精确地确定触发触发器的动作对数据表所做的修改。比如,通过检查Deleted表,你可以确定那些记录由某一动作删除。如下例:CREATE TRIGGER tr_webusers_delete ON webusersFOR DELETEASINSERT weblog (activity) SELECT user_name FROM Deleted

该触发器自动地创建一个webusers表的记录。当在webusers表内删除一个用户的姓名时,触发器会自动地把该姓名插入到weblog表中。假设你一不小心执行了下面的语句:DELETE webusers该语句会删除在webusers表内的所有记录。一般地,这些记录会永久地丢失,然而上面的触发器会在有记录从webusers表中删除时自动的触发。该触发器会检查表Deleted来确定有那些在webusers表内的记录被删除,并且把所有删除了的记录拷贝到weblog表中。 

 

3、什么是存储过程?存储过程为什么比sql语句执行的快?

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。因为存储过程只需要编译一次 之后运行这个存储过程就不需要在编译了,但是SQL语句每次都要编译

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics