省建设信息中心笔试(二)

一、什么是存储过程?有什么优缺点?存储过程和函数的区别?

存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。 
通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句。

定义:它是一组为了完成特定功能的SQL语句集,经过编译和优化后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果这个存储过程带有参数的话)来执行,实现对表的增删改查存储过程---就像数据库中运行方法(函数)

优点:增强了SQL语言的功能和灵活性。可以用流控制语句编写,可以完成复杂的判断和较复杂的运算。

(1)保证数据的安全性。通过存储过程可以使没有权限的用户在控制之下间接地存取数据库而不必拥有直接操作基础表的权限,从而保证数据的安全。

(2)数据库完整性。通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。同时也可以避免对数据库操作出现错误,因为它是预编译的。

(3)阻止 SQL 注入攻击。验证所有用户输入的参数化存储过程。如果使用动态 SQL,请确保将命令参数化,并绝对不能将参数值直接包括在查询字符串中。

(4)封装数据逻辑和业务规则,用户可以仅通过开发人员和数据库管理员打算使用的方式访问数据和对象。

(5)可禁止级联查询和数据修改。 这样将阻止用户恶意或无意中损坏数据或执行查询,以避免降低服务器或网络的性能。

缺点:调试麻烦、移植问题(数据库端代码当然是与数据库相关的)、维护问题(如果在一个程序系统中大量的使用存储过程,到程序交付使用的时候随着用户需求的增加会导致数据结构的变化,接着就是系统的相关问题了,最后如果用户想维护该系统可以说是很难很难、而且代价是空前的。维护起来更加麻烦!

存储过程和函数的区别:函数只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。

写法上:存储过程的参数列表可以有输入参数、输出参数、可输入输出的参数;

            函数的参数列表只有输入参数,并且有return <返回值类型,无长度说明>。

返回值上:

    存储过程的返回值,可以有多个值,

           函数的返回值,只有一个值。

存储过程怎么用见http://www.cnblogs.com/jiajiayuan/archive/2011/06/15/2081201.html

二、存储过程与触发器的区别?

触发器与存储过程非常相似,触发器也是SQL语句集,两者唯一的区别是触发器不能用EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发(激活)执行。

存储过程必须有用户、应用程序或者触发器来显示的调用并执行,而触发器是当特定时间出现的时候,自动执行或者激活的,与连接用数据库中的用户、或者应用程序无关。

触发器属于一种特殊的存储过程,可以在其中包含复杂的SQL语句。触发器与存储过程的区别在于触发器能够自动执行并且不含有参数。

三、事务、游标和视图的概念和用途?

事务:

视图:视图的常见用法是限制用户只能够存取表中的某些数据行,用这种方法产生的视图称为水平视图,即表中行的子集

create view student_view1
as
select * from student

where (class_id='0903')
create view student_view2
as
select student_id as '学号' ,student_name as '姓名',sex as '性别' from student where sex=1 with check option /*强制视图上执行的所有修改语句必须符合由select 语句设置的准则*/

索引:索引是数据库的对象之一,索引是为了加速对表中数据行的检索而创建的一种分散的一种存储结构。

索引是针对一个表而建立的,它是由数据页面以外的索引页面组成的 。

索引可以看成是你数据表的目录,主要是方便查询而使用的,在对表中数据进行查找和排序的时候效果明显。

游标是一种处理数据的方法,为了查看或者处理结果集中的数据,游标提供了在结果集中向前或者向后浏览数据的能力

posted on 2016-06-28 16:20  楼兰过客  阅读(314)  评论(0编辑  收藏  举报

导航