[Mysql-视图和存储过程]

视图

视图是从一个或者几个基本表(或视图)导出的表。它与基 本表不同,是一个虚表。

创建使用视图

视图

-- 视图只能用来查询,不能做增删改

-- 创建视图

-- create view 视图名【view_xxx / v_xxx】

-- as 查询语句

create view v_stu_man as

select * from student where ssex = '男';

-- 视图使用

select * from v_stu_man;

create view v_vstuman_class as

select v_stu_man.*,classname from v_stu_man

left join class on v_stu_man.classid = class.classid

select * from v_vstuman_class;

-- 查看库中所有的视图

select * from information_schema.VIEWS

WHERE table_schema = 'myschool';

-- 删除视图

drop view v_stu_man;

存储过程

存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后,再次调用不需要重复编译,用户通过指定存储过程的名字并给出参数 (如果该存储过程带有参数)来执行它。

创建使用存储过程

存储过程 -- 本质是一个函数

-- 存储过程创建

-- create procedure 存储过程名【proc_xxx】(形参列表)

-- begin

-- 一组sql语句集

-- end

-- 创建最简单存储过程

delimiter $$

create procedure proc_test()

begin

select * from student;

end $$

delimiter ;

-- 使用存储过程

call proc_test();

-- 带参存储过程

delimiter $$

create procedure proc_test2(

in a int, -- in 只入参(值传递)

out b int, -- out 只出参 (无)

inout c int -- inout 出入参 (引用传递)

)

begin

set a = a+1;

set b = b+100;

set c = c+1000;

end $$

delimiter ;

-- 环境变量 @局部环境变量 @@全局环境变量

-- 环境变量 @ 局部环境变量 @@ 全局环境变量

set @x = 10; -- 11 10 null

set @y = 20; -- 120 20 null

set @z = 30; -- 1030 30 null

select @x, @y, @z;

call proc_test2(@x,@y,@z)

select @x, @y, @z;
-- 面试题

-- ceiling 向上取整

-- 分页

delimiter $$

create procedure proc_stuPage(

in curpage int,

in sizepage int,

out stucount int,

out pagecount int

)

begin

declare cp int; -- declare 变量

set cp = (curpage-1)*sizepage;

select count(*) from student into stucount;

set pagecount = ceiling(stucount / sizepage);

select * from student limit cp,sizepage;

end $$

delimiter ;

set @a = 0;

set @b = 0;

call proc_stuPage(2,3,@a,@b);

select @a,@b

存储过程与函数的区别:

语法:关键字不同,存储过程是procedure, 函数是function;

执行:存储过程可以独立执行,函数必须依 赖表达式的调用;

返回值:存储过程可以定义多个返回结果, 函数只有一个返回值;2222

功能:函数不易做复杂的业务逻辑,但是存 储过程可以。

存储过程的缺陷

维护性:存储过程的维护成本高,修 改调试较为麻烦。

移植性:大多数关系型数据库的存储过程 存在细微差异。

协作性:没有相关的版本控制或者IDE,团队中对于存储过程的使用大多是依赖文档。

相关推荐
焦糖布丁的午夜3 小时前
MySQL数据库大王小练习
数据库·mysql
狗头实习生3 小时前
Spring常见的事务失效原因
java·数据库·spring
冉冰学姐4 小时前
SSM泰兴市公交信息系统f504u(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架应用·泰兴市公交·息管理系统
偶像你挑的噻6 小时前
3.Qt-基础布局以及事件
开发语言·数据库·qt
Dxy12393102166 小时前
MySQL如何做读写分离架构
数据库·mysql·架构
毕设十刻7 小时前
基于Vue的考勤管理系统8n7j8(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
合方圆~小文7 小时前
不同画面,三个镜头实时监控拍摄方案
数据结构·数据库·人工智能
ChrisitineTX8 小时前
凌晨突发Java并发问题:synchronized锁升级导致接口超时,排查过程全记录
java·数据库·oracle
极限实验室9 小时前
Easysearch 2.0.0 性能测试
数据库·性能优化
老华带你飞9 小时前
社团管理|基于Java社团管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端