博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL视图&触发器
阅读量:6611 次
发布时间:2019-06-24

本文共 1218 字,大约阅读时间需要 4 分钟。

SQL视图

在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。

视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。

SQL CREATE VIEW 语法

CREATE VIEW view_name ASSELECT column_name(s)FROM table_nameWHERE condition

视图的优点:1,可以简化操作,2,可以建立前台和后台的缓冲,3,可以合并分割数据,4,最重要的是可以提高安全性。

视图的作用:从下图可得,对视图的增删查改和对数据表的作用是一样的

删除视图:(不能修改视图定义,如果要修改,只能删除再重新创建)

DROP VIEW view_name

 


触发器:

触发器(trigger):监视某种情况,并触发某种操作。

触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update)

create trigger triggerNameafter/before insert/update/delete on 表名for each row   #这句话在mysql是固定的beginsql语句;end;

 

使用触发器的时候,注意要用delimeter更改结束符,否则默认以;结束符,就无法成功设定beigin内部的sql语句了。

 

delimiter $create trigger tg1after insert on ofor each row beginupdate g set num=num-3 where id=1;end$

 

 

 

 对于上面的触发器,还可以改成如下:(对于insert而言,新插入的行用new来表示,行中的每一列的值用new.列名来表示。对于delete而言:原本有一行,后来被删除,想引用被删除的这一行,用old来表示,old.列名可以引用被删除的行的值。)

create trigger tg2after insert on ofor each row beginupdate g set num=num-new.much where id=new.gid;(注意此处和第一个触发器的不同)end$

 

after和before的区别:

after是先完成数据的增删改,再触发,触发的语句晚于监视的增删改操作,无法影响前面的增删改动作;也就是说先插入订单记录,再更新商品的数量;

before是先完成触发,再增删改,触发的语句先于监视的增删改,我们就有机会判断,修改即将发生的操作;

 

转载于:https://www.cnblogs.com/LUO77/p/5820179.html

你可能感兴趣的文章
web网站加速之CDN(Content Delivery Network)技术原理
查看>>
sed的基本用法
查看>>
ansible模块批量管理
查看>>
RHEL/Centos7新功能
查看>>
DBA日常工作职责
查看>>
Planner .NET日历日程控件能给你的应用程序提供多种日历日程功能
查看>>
我的友情链接
查看>>
Linux压力测试
查看>>
JAVA中的线程机制(二)
查看>>
nginx安装与配置2(转载)
查看>>
沈阳一饭店凌晨爆燃,燃气报警器时刻预防
查看>>
Redis 与 数据库处理数据的两种模式
查看>>
DataTable转换成json字符串
查看>>
【DM642】ICELL Interface—Cells as Algorithm Containers
查看>>
svs 在创建的时候 上传文件夹 bin obj 这些不要提交
查看>>
Tinkphp
查看>>
temporary Object and destructor
查看>>
xcode - 移动手势
查看>>
细说浏览器特性检测(1)-jQuery1.4添加部分
查看>>
Java基础-算术运算符(Arithmetic Operators)
查看>>