zoukankan      html  css  js  c++  java
  • 数据库的一些基本概念(视图,存储过程,函数,触发器)

    一、视图

    视图定义

    视图是从一个或几个基本表(或视图)中导出的虚拟的可视化的表。在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。

    视图特点

    • 安全:有的数据是需要保密的,如果直接把表给出来进行操作会造成泄密,那么可以通过创建视图把相应视图的权限给出来即可保证数据的安全。
    • 高效:复杂的连接查询,每次执行时效率比较低,可以考虑新建视图,每次从视图中获取,将会提高效率。
    • 定制数据:将常用的字段放置在视图中。
    • 使用视图不会加快数据查询速度。

    二、存储过程

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

    优点

    • 存储过程的能力大大增强了SQL语言的功能和灵活性。
    • 可保证数据的安全性和完整性。
    • 通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。
    • 存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。
    • 在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。
    • 可以降低网络的通信量。
    • 使体现企业规则的运算程序放入数据库服务器中,以便 集中控制。

    三、函数

    在数据库中都有函数,这些函数属于系统函。除此之外用户也可以编写用户自定义函数。用户定义函数是存储在数据库中的代码块,可以把值返回到调用程序。调用时如同系统函数一样,如max(value)函数,其value被称为参数。函数一般功能比较简单,对于mysql函数只有传入参数,不像存储过程一样,有输入输出参数。

      数据库函数特点如下:

    • 存储函数将向调用者返回一个且仅返回一个结果值。
    • 存储函数嵌入在sql中使用的,可以在select中调用,就像内建函数一样,比如cos()、hex()。
    • 存储函数的参数类型类似于IN参数。

    四、触发器

    定义

    SQL触发器,是一种特殊类型的存储过程,不由用户直接调用。

    它在指定的表中的数据发生变化时自动生效,唤醒调用触发器以响应 INSERT、UPDATE 或 DELETE 语句。

    他可以查询其它表,并可以包含复杂的Transact-SQL语句。将触发器和触发它的语句作为可在触发器内回滚的单个事务对待。如果检测到严重错误(例如,磁盘空间不足),则整个事务即自动回滚。常常用于强制业务规则和数据完整性。

    分类

    • DML( 数据操纵语言 Data Manipulation Language)触发器:是指触发器在数据库中发生DML事件时启用。DML事件即指在表或视图中修改数据的insert、update、delete语句。

      a、在SQL SERVER 2008中,DML触发器的实现使用两个逻辑表DELETED和INSERTED。这两个表是建立在数据库服务器的内存中,我们只有只读的权限。DELETED和INSERED表的结构和触发器所在的数据表的结构是一样的。当触发器执行完成后,它们也就会被自动删除:INSERED表用于存放你在操件insert、update、delete语句后,更新的记录。比如你插入一条数据,那么就会把这条记录插入到INSERTED表:DELETED表用于存放你在操作 insert、update、delete语句前,你创建触发器表中数据库。

      b、触发器可通过数据库中的相关表实现级联更改,可以强制比用CHECK约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列,例如触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作。触发器也可以根据数据修改前后的表状态,再行采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。

      c、与此同时,虽然触发器功能强大,轻松可靠地实现许多复杂的功能,为什么又要慎用?过多触发器会造成数据库及应用程序的维护困难,同时对触发器过分的依赖,势必影响数据库的结构,同时增加了维护的复杂程序。

    • DDL(数据定义语言 Data Definition Language)触发器:是指当服务器或数据库中发生(DDL事件时启用。DDL事件即指在表或索引中的create、alter、drop语句也。

    • 登陆触发器:是指当用户登录SQL SERVER实例建立会话时触发。

     

    自强不息,厚德载物
  • 相关阅读:
    用 Python 带你看各国 GDP 变迁
    Fluent Interface(流式接口)
    probing privatePath如何作用于ASP.NET MVC View
    Word插入htm文件导致文本域动态增加的一个问题
    Visual Studio 2013附加进程调试IE加载的ActiveX Control无效解决方法
    Ubuntu下Chrome运行Silverlight程序
    Windows Phone Bing lock screen doesn't change解决方法
    SPClaimsUtility.AuthenticateFormsUser的证书验证问题
    Web Service Client使用Microsoft WSE 2.0
    Visual Studio 2013安装Update 3启动crash的解决方法
  • 原文地址:https://www.cnblogs.com/zhoufei2514/p/10511152.html
Copyright © 2011-2022 走看看