视图的创建,查看和修改触发器的简单语法和存储过程

视图的创建,查看和修改触发器的简单语法和存储过程


什么是视图?

  • 视图(VIEW)也被称作虚表,即虚拟的表,是一组数据的逻辑表示,其本质是对应于一条SELECT语句,结果集被赋予一个名字,即视图名字。
  • 视图本身并不包含任何数据,它只包含映射到基表的一个查询语句,当基表数据发生变化,视图数据也随之变化。

视图的作用

  • 如果需要经常执行某项复杂查询,可以基于这个复杂查询建立视图,此后查询此视图即可,简化复杂查询;
  • 视图本质上就是一条SELECT语句,所以当访问视图时,只能访问到所对应的SELECT语句中涉及到的列,对基表中的其它列起到安全和保密的作用,可以限制数据访问。

◆视图的含义:

试图是一个虚拟表,是从数据库中一个或者多个表中导出来的表。视图还可以从已经存在的视图的基础上定义

在这里插入图片描述

视图的优点:

◆视图的作用
◼简单性
◼安全性
◼逻辑数据独立性

视图的创建:

语法:

在这里插入图片描述

示例:创建视图

在这里插入图片描述

- create view 视图名

- as

- select 字段名1,字段名2,字段名 N from 表名

  • 视图创建后,可以像操作表一样操作视图,主要是查询操作。

  • 语法中的Subquery是SELECT查询语句,对应的表被称作基表。

示例:查询视图

在这里插入图片描述

根据视图所对应的子查询种类分为几种类型:

  • SELECT语句是基于单表建立的,且不包含任何函数运算、表达式或分组函数,叫做简单视图,此时视图是基表的子集;
  • SELECT语句同样是基于单表,但包含了单行函数、表达式、分组函数或GROUP BY子句,叫做复杂视图; SELECT语句是基于多个表的,叫做连接视图。

注意!!!!视图的修改 会直接影响实表的数据


触发器

触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。而存储过程可以通过存储过程的名称被调用。


什么是触发器:

  • 触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。

  • 触发器一般用在check约束更加复杂的约束上面。

  • 触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。

  • SQL Server 2005中触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有create、alter、drop语句。

  • DML触发器分为:

  • 1、 after触发器(之后触发)
  • a、 insert触发器

  • b、 update触发器
  • c、 delete触发器

触发器语法:

create trigger tri_test1

after insert on 表名

for each row

begin

update 表名 set num=num-new.字段名 where 字段名### =new.字段名;

end;

触发器创建语法四要素:

  • 1.监视地点(table)

  • 2.监视事件(insert/update/delete)

  • 3.触发时间(after/before)

  • 4.触发事件(insert/update/delete)

触发器new old

◼insert语句,只有new是合法的。
◼delete语句,只有old是合法的。
◼update语句,new和old可以同时使用

示例

添加一笔订单

在这里插入图片描述

删除一笔订单

在这里插入图片描述

修改一笔订单

在这里插入图片描述

存储过程

◆概念

◼存储过程能完成一定操作的一组SQL语句

◆作用

◼大大提高效率(存储过程本身执行速度非常快,调用存储过程大大减少数据库交互次数);提高代码重用性

创建存储过程:

语法:

create procedure sp_name(proc_parameter[…])

begin

[characteristic …] routine_body

end

  • sp_name:存储过程名称

  • proc_parameter:存储过程的参数列表

  • characteristic:存储过程的特性

  • routine_body:SQL语句的内容,可以用begin…end来标志SQL语句的开始和结束

在这里插入图片描述

◆带参存储过程

◼in参数示例

创建带参数(in)的存储过程

  • CREATE procedure pro2( in n int)
    BEGIN
    select StudentName from studentinfo
    where GradeID=n;
    END
    【以上可以看出,n虽然在存储过程中被修改,但不影响@n的值】

示例在这里插入图片描述

存储过程的调用

CALL SP_NAME([parameter[,…]])

  • sp_name:存储过程名称

  • proc_parameter:存储过程的参数列表

删除存储过程

在这里插入图片描述

语法:

  • drop procedure sp_name

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值