您的位置:首页 > 数据库

数据库存储过程,视图,索引,会话,事务

2017-12-09 11:03 459 查看
全部摘抄自baidu,如有雷同不是巧合。只是希望给自己记录,避免忘了又要search

                                             1.什么是存储过程:

存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。

        存储过程的好处:
1.由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。
2.一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速率。
3.通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。

       存储过程代码格式:

create prpc procedure_name

AS sql_statement

调用存储过程:EXECUTE Procedure_name '' --存储过程如果有参数,后面加参数格式为:@参数没那个=value,也可直接为参数值value

删除存储过程:drop procedure procedure_name --在存储过程中能调用另外一个存储过程,而不能删除另外一个存储过程

                                       2.存储过程和视图的区别:
存储过程的作用范围要广很多 其实都相当于执行一段已经编译好的sql脚本
而区别在与存储过程可以提供参数、输入参数 以及每次返回多个表数据 

而视图一次只能返回一个二维表的数据 且不能接受 任何参数
视图就是张虚拟表,你可以像对真实表一样对其进行操作,而存储过程是一组sql语句的批处理,这样它们的区别就很显然了

                                                  3.索引:

有三列内容的数据库,分别是Employee_Name,Employee_Age和Employee_Address在Employee_Name列上创建索引的SQL如下:

CREATE INDEX name_index
ON Employee (Employee_Name)

一个索引是存储的表中一个特定列的值数据结构(最常见的是B-Tree)。索引是在表的列上创建。所以,要记住的关键点是索引包含一个表中列的值,并且这些值存储在一个数据结构中。请记住记住这一点:索引是一种数据结构 。
因为索引已经按照按字母顺序排序。索引已经排序意味着查询一个名字会快很多,因为名字少字母为‘J’的员工都是排列在一起的

需要理解的重点是数据库索引并不存储这个表中其他列(字段)的值。举例来说,如果我们在Employee_Name列创建索引,那么列Employee_Age和Employee_Address上的值并不会存储在这个索引当中。如果我们确实把其他所有字段也存储在个这个索引中,那就成了拷贝一整张表做为索引-这样会占用太大的空间而且会十分低效。

      使用数据库索引有什么缺点呢?

其一,索引会占用空间 - 你的表越大,索引占用的空间越大。

其二,性能损失(主要值更新操作),当你在表中添加、删除或者更新行数据的时候, 在索引中也会有相同的操作。

记住:建立在某列(或多列)索引需要保存该列最新的数据。

基本原则是只如果表中某列在查询过程中使用的非常频繁,那就在该列上创建索引。

                                          4.会话和事务的区别:
会话,即session,当你使用工具如sqlplus或者toad执行连接,连接到某个数据库的时候,就开启了一个会话,直到你关闭这次连接,这个会话才算结束。

事务,即transaction,是一个由多条SQL语句组成的工作逻辑单元,这些语句要么全部执行成功,要么全部不执行。只有commit,rollback,或者关闭工具的情况下,事务才会结束。当一个事务结束之后,下一个可执行的SQL语句自动开启一个新的事务。事务具有4个属性:原子性,一致性,隔离性,持久性。这里不具体说。

以上解释了什么是会话和事务,接下来用一个生动的例子来进一步说明它们俩的区别,相信大家就都能明白了。

比如你去银行办理业务,当你坐在柜台前跟工作人员面对面,开始办理业务的时候,这个时候‘会话’就开启了,那么这个‘会话’结束自然就是你办理好了所有的业务离开柜台的时候。
在办理业务的时候,比如你要先办一张银行卡,然后再往里面存一万块钱,那么这就相当于两个事务,一个是办理银行卡,一个是存钱。当你拿到银行卡的时候,相当于这个事务已经commit了,事务结束。当你开始存钱的时候,一个新的事务开启,存进去之后,第二个事务结束。

综上,一个会话可以包含很多个事务,会话是一次对数据库的连接,事务是一个工作单元。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐