当前位置: 首页 > news >正文

[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,团队中对于存储过程的使用大多是依赖文档。

相关文章:

  • 【React】条件渲染:深入探讨高效开发技巧与最佳实践
  • Python | Leetcode Python题解之第292题Nim游戏
  • 【前端手写代码】手写Object.create
  • 在CentOS 7上安装Apache Tomcat 10.0.27
  • Logback原理及应用详解(三)
  • C++ | Leetcode C++题解之第292题Nim游戏
  • python安装驱动
  • 自动驾驶-机器人-slam-定位面经和面试知识系列01之常考公式推导(01)
  • 向量法判断点是否在多边形内部
  • RPA软件-影刀使用
  • 【无标题】Git(仓库,分支,分支冲突)
  • 寄生组合式继承
  • 什么是零拷贝
  • 内网对抗-隧道技术篇防火墙组策略HTTP反向SSH转发出网穿透CrossC2解决方案
  • asp.net core 集成redis详解
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【知识碎片】第三方登录弹窗效果
  • JavaScript 基本功--面试宝典
  • JAVA并发编程--1.基础概念
  • jdbc就是这么简单
  • JS学习笔记——闭包
  • Spring声明式事务管理之一:五大属性分析
  • Vue2 SSR 的优化之旅
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 关于List、List?、ListObject的区别
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 经典排序算法及其 Java 实现
  • 强力优化Rancher k8s中国区的使用体验
  • 让你的分享飞起来——极光推出社会化分享组件
  • 算法-图和图算法
  • 小试R空间处理新库sf
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​【已解决】npm install​卡主不动的情况
  • #QT(串口助手-界面)
  • #Ubuntu(修改root信息)
  • (02)vite环境变量配置
  • (04)odoo视图操作
  • (2)(2.10) LTM telemetry
  • (2)STM32单片机上位机
  • (21)起落架/可伸缩相机支架
  • (7)摄像机和云台
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (四)opengl函数加载和错误处理
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET Core 版本不支持的问题
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET中winform传递参数至Url并获得返回值或文件
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • @SuppressLint(NewApi)和@TargetApi()的区别