Mysql基础(二十三):视图/存储过程

一 ##视图

含义:理解成一张虚拟的表

视图和表的区别:

使用方式 占用物理空间

视图 完全相同 不占用,仅仅保存的是sql逻辑

表 完全相同 占用

视图的好处:


1、sql语句提高重用性,效率高
2、和表实现了分离,提高了安全性

###视图的创建
语法:
CREATE VIEW 视图名
AS
查询语句;
###视图的增删改查
1、查看视图的数据 ★

SELECT * FROM my_v4;
SELECT * FROM my_v1 WHERE last_name='Partners';

2、插入视图的数据
INSERT INTO my_v4(last_name,department_id) VALUES('虚竹',90);

3、修改视图的数据

UPDATE my_v4 SET last_name ='梦姑' WHERE last_name='虚竹';


4、删除视图的数据
DELETE FROM my_v4;
###某些视图不能更新
包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all
常量视图
Select中包含子查询
join
from一个不能更新的视图
where子句的子查询引用了from子句中的表
###视图逻辑的更新
#方式一:
CREATE OR REPLACE VIEW test_v7
AS
SELECT last_name FROM employees
WHERE employee_id>100;

#方式二:
ALTER VIEW test_v7
AS
SELECT employee_id FROM employees;

SELECT * FROM test_v7;
###视图的删除
DROP VIEW test_v1,test_v2,test_v3;
###视图结构的查看
DESC test_v7;
SHOW CREATE VIEW test_v7;

二 ##存储过程

含义:一组经过预先编译的sql语句的集合
好处:

1、提高了sql语句的重用性,减少了开发程序员的压力
2、提高了效率
3、减少了传输次数

分类:

1、无返回无参
2、仅仅带in类型,无返回有参
3、仅仅带out类型,有返回无参
4、既带in又带out,有返回有参
5、带inout,有返回有参
注意:in、out、inout都可以在一个存储过程中带多个
###创建存储过程
语法:

create procedure 存储过程名(in|out|inout 参数名 参数类型,...)
begin
存储过程体

end

类似于方法:

修饰符 返回类型 方法名(参数类型 参数名,...){

方法体;
}

注意

1、需要设置新的结束标记
delimiter 新的结束标记
示例:
delimiter $

CREATE PROCEDURE 存储过程名(IN|OUT|INOUT 参数名 参数类型,...)
BEGIN
sql语句1;
sql语句2;

END $

2、存储过程体中可以有多条sql语句,如果仅仅一条sql语句,则可以省略begin end

3、参数前面的符号的意思
in:该参数只能作为输入 (该参数不能做返回值)
out:该参数只能作为输出(该参数只能做返回值)
inout:既能做输入又能做输出


#调用存储过程
call 存储过程名(实参列表)

原文地址:https://www.cnblogs.com/qiu-hua/p/14877755.html