视图
含义:理解成一张虚拟的表
视图和表的区别:
使用方式 占用物理空间视图 完全相同 不占用,仅仅保存的是sql逻辑表 完全相同 占用
视图的好处:
1、sql语句提高重用性,效率高2、和表实现了分离,提高了安全性
视图的创建
视图的增删改查
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_v7ASSELECT 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 参数名 参数类型,...)BEGINsql语句1;sql语句2;END $2、存储过程体中可以有多条sql语句,如果仅仅一条sql语句,则可以省略begin end3、参数前面的符号的意思in:该参数只能作为输入 (该参数不能做返回值)out:该参数只能作为输出(该参数只能做返回值)inout:既能做输入又能做输出
调用存储过程
call 存储过程名(实参列表)
函数
创建函数
学过的函数:LENGTH、SUBSTR、CONCAT等
语法:
CREATE FUNCTION 函数名(参数名 参数类型,...) RETURNS 返回类型BEGIN函数体END
调用函数
SELECT 函数名(实参列表)
函数和存储过程的区别
关键字 调用语法 返回值 应用场景函数 FUNCTION SELECT 函数() 只能是一个 一般用于查询结果为一个值并返回时,当有返回值而且仅仅一个存储过程 PROCEDURE CALL 存储过程() 可以有0个或多个 一般用于更新
