MySQL 视图,触发器

视图

含义:视图是一张虚拟表,不是实际存在的表,作用就是可以把一些经常使用的sql来做视图,不用每次写sql都要把全部条件加上

/*样例表*/
CREATE TABLE student
(
  s_id  INT,
  name  VARCHAR(40)
);

CREATE TABLE stu_info
(
  s_id   INT,
  glass  VARCHAR(40),
  addr   VARCHAR(90)
);

示例 —单表创建视图

在t表格上创建一个名为view_t的视图,代码如下:
 /*创建基本表t*/
CREATE TABLE t (qty INT, price INT);       
/*插入记录*/ 
INSERT INTO t VALUES(3, 50);                 
/*创建视图view_t*/
CREATE VIEW view_t AS SELECT qty, price, qty *price FROM t;    
# 查看视图数据
SELECT * FROM view_t;

示例---- 多表创建视图

在表student和表stu_info上创建视图stu_glass,代码如下:
  /*插入记录*/
INSERT INTO student VALUES(1,'wanglin1'),(2,'gaoli'),(3,'zhanghai');              
INSERT INTO stu_info VALUES(1, 'wuban','henan'),(2,'liuban','hebei'),(3,'qiban','shandong');
# 创建视图 -- 就是一个简单的连表sql
CREATE VIEW stu_glass (id,name, glass) AS SELECT student.s_id,student.name ,stu_info.glass FROM student ,stu_info WHERE student.s_id=stu_info.s_id;
# 查看视图
SELECT * FROM stu_glass;

在这里插入图片描述

使用 describe 查看视图信息(和看表一样)
在这里插入图片描述

show table status 查看视图的基本信息
在这里插入图片描述
在这里插入图片描述

触发器(trigger)

含义:触发器是由某个事件来触发某个操作,事件包括 insert,update,delete
触发器创建语法

create trigger trigger_name trigger_timer trigger_event
on table_name for each row trigger_stmt

trigger_name :触发器名字
trigger_timer :触发器事件(什么时候触发)  before 、after
trigger_event:什么事件使触发器做出行为动作,insert,update,delete
table_name :建立触发器的表名
trigger_stmt:触发器执行语句
查看创建的触发器

show triggers

所有触发器的定义都在 information.schema.TRIGGERS 中,如存储过程中的 information.schema.ROUTINES

删除触发器

drop trigger db_name.trigger_name

示例

步骤1:创建persons表
CREATE TABLE persons (name VARCHAR(40), num int);

步骤2:创建一个销售额表sales
CREATE TABLE sales (name VARCHAR(40), sum int);

步骤3:创建一个触发器
CREATE TRIGGER num_sum AFTER INSERT ON persons
FOR EACH ROW INSERT INTO sales VALUES (NEW.name,7*NEW.num);

步骤4:向persons表中插入记录
INSERT INTO persons VALUES ('xiaoxiao',20),('xiaohua',69);

SELECT * FROM persons;
SELECT *FROM sales;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值