mysql必知必会 2018/6/19

22  使用视图

视图是虚拟的表,只包含使用时动态的检索数据的查询。

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

将几个表格封装为一个视图,在使用时很方便

SELECT cust_name.cust_contact
FROM productcustomers
WHERE prod_id = 'TNT2';

更新视图将更新其基表。

23 存储

存储过程就是为以后的使用而保存的一条或者多条MYSOL语句的集合。可将其视为批文件。

MYSQL称存储过程的执行为调用。

执行名为productpricing的存储过程,计算并返回产品的最高最低和平均价格。

CALL productpricing(@pricelow,
                    @pricehigh,
                    @priceaverge);

创建存储过程

CREATE PROCEDURE productpricing()
BEGIN
   SELECT Avg(prod_price) AS priceaverge
   FROM products;
END;

删除存储过程

DROP PROCEDURE productpricing;

24 使用游标CURSOR

游标是一个一个存储在MYSQL服务器上的数据查询。它不是一条SELECT语句,而是被该语句检索出来的结果集。游标主要用于交互式应用。

创建游标 DECLARE 语句

DECLARE PROCEDURE processorders()
BEGIN
   DECLARE   ordernumbers   CURSOR
   FOR
   SELECT  order_num  FROM orders;
END;

打开游标

OPEN orderumbers;

关闭游标

CLOSE ordernumbers;

使用游标数据FETCH

CREATE PROCEDURE processorders()
BEGIN 
DECLARE o INT; 
DECLARE ordernumbers  CURSOR
FOR 
SELECT order_num FROM orders; 
OPEN ordernumbers;
FETCH ordernumbers INTO o;
CLOSE ordernumbers;
END;

循环检索数据

CREATE PROCEDURE processorders()
BEGIN
  DECLARE done BOOLEAN DEFAULT 0;
  DECLARE o INT;
  DECLARE ordernumbers CURSOR
  FOR 
  SELECT ordernumbers FROM orders;
  DECLARE CONTINUE HANDLER FOR SQLSTATE '20000'SET done = 1;
  OPEN ordernumbers;
  REPEAT
    FETCH ordernumbers INTO o;
  UNTIL done END REPEAT;
  CLOSE ordernumbers;
END;

25 使用触发器

在执行DELETE,INSERT,UPDATA时,自动执行的一条SQL语句。

创建触发器

CREATE TRIGGER newproduct AFTER INSERT ON products

FOR EACH ROW SELECT 'Product added';

删除触发器

DROP TRIGGER newproduct;


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值