前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL视图,存储过程和触发器的使用

MySQL视图,存储过程和触发器的使用

作者头像
小末快跑
发布2019-07-03 17:27:04
1K0
发布2019-07-03 17:27:04
举报
文章被收录于专栏:日常撸知识日常撸知识

一、视图

视图常见的应用:

》重用SQL语句;

》简化复杂的SQL操作;

》保护数据,可以给用户特定部分的权限而不是整个表的权限;

》更改数据格式和表示,视图可返回和底层表格式不同的数据;

》使用表的部分数据而不是整个表;

在视图创建后,可以用表的基本操作来使用视图,进行SELECT,WHERE,ORDER BY,联结等操作。视图仅仅是用来查看存储在别处的数据的一种工具而不是一个表,本身存储数据。

创建一个视图:

CREATE VIEW productcustomers AS SELECT cust_name,cust_contact,prod_id FROM customers,orders,orderitems WHERE customers.cust_id=orderitems.cust_id AND orderitems.order_num=orders.order_num;

使用视图:

SELECT * FROM productcustomers WHERE prod_id='TNT2';

删除视图:

DROP VIEW viewname;

二、存储过程

存储过程实际上是一种函数。使用存储过程有三个主要的好处:简单,安全,高性能。

创建存储过程:

DELIMITER //

CREATE PROCEDURE productpricing()

BEGIN

SELECT Avg(prod_price) AS priceaverage FROM products;

END //

DELIMITER;

因为在mysql中使用;作为语句分割符,所有临时使用DELIMITER //来更改。

使用存储过程:

CALL productpricing();

删除存储过程:

DROP PROCEDURE productpricing();

在存储过程中使用参数:

CREATE PROCEDURE ordertotal(

IN onumber INT,OUT otoal DECIMAL(8,2)

)

BEGIN

SELECT Sum(item_price*quantity) FROM orderitems WHERE order_num=onumber INTO ototal;

END

使用上面的存储过程:

CALL ordertotal(2000,@total)

三、触发器

触发器的作用是需要在某个表发生更改时自动处理。

触发器时MySQL响应下面语句而自动执行的SQL语句:DELETE,INSERT,UPDATE.

创建触发器:

CREATE TRIGGER newproduct AFTER INSERT ON products

FOR EACH ROW SELECT 'Product added';

删除触发器:

DROP TRIGGER newproduct;

触发器不能更或覆盖,为了修改一个触发器,必须先删除再重新创建。

CREATE TRIGGER neworder AFTER INSERT ON orders

FOR EACH ROW SELECT NEW.order_num;

创建了一个neworder的触发器。在插入一个新订单后,mysql生成了一个新订单号并保存到order_num中。触发器从NEW.order_num中取得值并返还。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小末快跑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档