MYSQL晋级之路----------(4)视图以及存储过程
视图的定义
视图是虚拟的表,与数据库中我们所定义的数据库表不一样,视图只包含使用使用时动态检索数据的查询。
视图就是对SELECT语句的一种封装。
视图的使用
1.创建: CREATE VIEW viewname AS SELECT语句
2.删除 DROP VIEW
3.更新视图
(1)先DROP 再 CREATE
(2)CREATE OR REPLACE VIEW
存储过程的定义
存储过程就是存储一条或者多条SQL语句的集合。
在开发过程中,将一些复杂操作的多条或者一条sql语句存储在存储过程中,可以有效的简化以及预防错误。
存储过程的使用
创建存储过程
CREATE PROCEDURE productpricing()
BEGIN
SELECT AVG(prod_price) AS priceaverage
FROM products
END;
使用以上创建的存储过程
CALL productpricing();
删除存储过程
DROP PROCEDURE productpricing;
创建接收参数的存储过程
CREATE PROCEDURE productpricing(
OUT pl DECIMAL (8,2),
OUT ph DECIMAL (8,2),
OUT pa DECIMAL (8,2),
)
BEGIN
SELECT Min(pro_price)
INTO pl
FROM products;
SELECT Max(pro_price)
INTO ph
FROM products;
SELECT Avg(pro_price)
INTO pa
FROM products;
END;
以上存储过程接受三个参数。每个参数必须具有具体的参数类型,这里使用的是十进制。
关键字OUT 是指从存储过程中输出参数。
IN(传递给存储过程),INOUT(对存储过程传入或传出)
INTO 保存到相应的参数
使用接收参数的存储过程
调用存储过程
CALL PROCEDURE productpricing( @pricelow,
@pricehign,
@priceaverage);
SELECT @priceaverage;
在调用存储过程的时候,需要指定变量名,格式为 @变量名。 这个变量名不需要与创建时候的变量名(pl、ph、pa)一样。
使用IN的范例:
CREATE PROCEDURE ordertotal(
IN onumber INT,
OUT ototal DECIMAL(8,2)
)
BEGIN
SELECT Sum(item_price*quantity)
FROM orderitems
WHERE order_num = onumber
INTO ototal;
END;
调用这个存储过程
CALL ordertotal(2005,@total);
2005即传入的参数
使用@total取出参数
智能存储过程
之前的存储过程所封装的SQL都是比较简单的语句,完成一个比较简单的逻辑,封装起来的必要性不是那么强或者说封装起来可能更加麻烦。
智能存储过程就是进行更加复杂的逻辑封装。
以下举出一个例子,同时包含业务逻辑和智能处理。
例子的功能:
1.获得合计
2.把营业税有条件的加到合计
3.返回合计
CREATE PROCEDURE ordertotal( IN onumber INT, -- taxable用于判断含税 IN taxable BOOLEAN, OUT total DECIMAL(8,2) )COMMENT 'Obtain order total, optionally adding tax' -- COMMENT关键字 并不是必须的,在执行命令 SHOW PROCEDURE STATUS的时候可看到内容。 BEGIN DECLARE total DECIMAL(8,2); DECLARE taxrate INT DEFAULT 6; SELECT Sum(item_price*quantity) FROM orderitems WHERE order_num = onumber INTO total; IF taxable THEN SELECT total+(total/100*taxrate) INTO total; END IF;
- 点赞
- 收藏
- 分享
- 文章举报
- mysql-创建函数,存储过程以及视图
- mysql-创建函数,存储过程以及视图
- mysql-创建函数,存储过程以及视图
- mysql中的存储过程、触发器、视图是如何创建的,以及PHP中是如何调用的
- mysql中的存储过程、触发器、视图是如何创建的,以及PHP中是如何调用的
- 认识下mysql中的存储过程使用以及语法
- mysql 导入导出数据库以及函数、存储过程的介绍
- mysql查看所有存储过程,函数,视图,触发器,表
- mysql的存储过程,视图的创建
- mysql多表操作1以及存储过程的应用
- MySQL 存储过程带in和out参数以及PHP,PB如何调用的小例子
- Mysql视图, 存储过程, 触发器, 事务
- mysql 导入导出数据库以及函数、存储过程
- mysql写存储过程的一些注意事项以及mysql的一些函数
- MySQL存储过程与视图
- MySql视图、存储过程和触发器
- mysql查看所有存储过程,函数,视图,触发器,表《转》
- mysql查看所有存储过程,函数,视图,触发器,表
- mysql查询存储过程和函数、视图、触发器
- mysql存储过程详解以及PHP调用MYSQL存储过程实例