当前位置:网站首页>数据库对象-视图;存储过程
数据库对象-视图;存储过程
2022-08-04 11:16:00 【parker_001】
视图
【1】视图的概念
视图(view)是一个从单张或多张基础数据表或其他视图中构建出来的虚拟表。同基础表一样,视图中也包含了一系列带有名称的列和行数据,但是数据库中只是存放视图的定义,也就是动态检索数据的查询语句,而并不存放视图中的数据,这些数据依旧存放于构建视图的基础表中,只有当用户使用视图时才去数据库请求相对应的数据,即视图中的数据是在引用视图时动态生成的。因此视图中的数据依赖于构建视图的基础表,如果基本表中的数据发生了变化,视图中相应的数据也会跟着改变。
PS:视图本质上就是:一个查询语句,是一个虚拟的表,不存在的表,你查看视图,其实就是查看视图对应的sql语句
【2】视图的好处
简化用户操作:视图可以使用户将注意力集中在所关心地数据上,而不需要关心数据表的结构、与其他表的关联条件以及查询条件等。
对机密数据提供安全保护:有了视图,就可以在设计数据库应用系统时,对不同的用户定义不同的视图,避免机密数据(如,敏感字段“salary”)出现在不应该看到这些数据的用户视图上。这样视图就自动提供了对机密数据的安全保护功能
【3】SQL展示:
-- 创建/替换单表视图:
create or replace view myview01
as
select empno,ename,job,deptno
from emp
where deptno = 20
with check option;
-- 查看视图:
select * from myview01;
-- 在视图中插入数据:
insert into myview01 (empno,ename,job,deptno) values (9999,'lili','CLERK',20);
insert into myview01 (empno,ename,job,deptno) values (8888,'nana','CLERK',30);
insert into myview01 (empno,ename,job,deptno) values (7777,'feifei','CLERK',30);
-- > 1369 - CHECK OPTION failed 'mytestdb.myview01'
-- 创建/替换多表视图:
create or replace view myview02
as
select e.empno,e.ename,e.sal,d.deptno,d.dname
from emp e
join dept d
on e.deptno = d.deptno
where sal > 2000 ;
select * from myview02;
-- 创建统计视图:
create or replace view myview03
as
select e.deptno,d.dname,avg(sal),min(sal),count(1)
from emp e
join dept d
using(deptno)
group by e.deptno ;
select * from myview03;
-- 创建基于视图的视图:
create or replace view myview04
as
select * from myview03 where deptno = 20;
select * from myview04;
存储过程
【1】什么是存储过程(Stored Procedure)
通过前面章节的学习,我们已经知道SQL是一种非常便利的语言。从数据库抽取数据,或者对特定的数据集中更新时,都能通过简洁直观的代码实现。
但是这个所谓的“简洁”也是有限制,SQL基本是一个命令实现一个处理,是所谓的非程序语言。
在不能编写流程的情况下,所有的处理只能通过一个个命令来实现。当然,通过使用连接及子查询,即使使用SQL的单一命令也能实现一些高级的处理,但是,其局限性是显而易见的。例如,在SQL中就很难实现针对不同条件进行不同的处理以及循环等功能。
这个时候就出现了存储过程这个概念,简单地说,存储过程就是数据库中保存(Stored)的一系列SQL命令(Procedure)的集合。也可以将其看作相互之间有关系的SQL命令组织在一起形成的一个小程序。
【2】存储过程的优点
1) 提高执行性能。存储过程执行效率之所高,在于普通的SQL语句,每次都会对语法分析,编译,执行,而存储过程只是在第一次执行语法分析,编译,执行,以后都是对结果进行调用。
2) 可减轻网络负担。使用存储过程,复杂的数据库操作也可以在数据库服务器中完成。只需要从客户端(或应用程序)传递给数据库必要的参数就行,比起需要多次传递SQL命令本身,这大大减轻了网络负担。
3) 可将数据库的处理黑匣子化。应用程序中完全不用考虑存储过程的内部详细处理,只需要知道调用哪个存储过程就可以了
【3】图解:
【4】展示存储过程:
-- 定义一个没有返回值 存储过程
-- 实现:模糊查询操作:
select * from emp where ename like '%A%';
create procedure mypro01(name varchar(10))
begin
if name is null or name = "" then
select * from emp;
else
select * from emp where ename like concat('%',name,'%');
end if;
end;
-- 删除存储过程:
drop procedure mypro01;
-- 调用存储过程:
call mypro01(null);
call mypro01('R');
-- 定义一个 有返回值的存储过程:
-- 实现:模糊查询操作:
-- in 参数前面的in可以省略不写
-- found_rows()mysql中定义的一个函数,作用返回查询结果的条数
create procedure mypro02(in name varchar(10),out num int(3))
begin
if name is null or name = "" then
select * from emp;
else
select * from emp where ename like concat('%',name,'%');
end if;
select found_rows() into num;
end;
-- -- 调用存储过程:
call mypro02(null,@num);
select @num;
call mypro02('R',@aaa);
select @aaa;
边栏推荐
- win8和win10下,visual studio 2008 调试出现无响应的卡死问题解决
- Leetcode brush questions - binary search tree related topics (98. Verify binary search tree, 235. The nearest common ancestor of binary search tree, 1038. From binary search tree to bigger sum tree, 5
- Small program containers accelerate the construction of an integrated online government service platform
- mongo-导出数据到mysql
- Disc burning steps
- MySQL不提供数组,只能做成表吗?
- 从零开始Blazor Server(7)--使用Furion权限验证
- 什么是 DevOps?看这一篇就够了!
- 你值得拥有的登录注册页面(附赠源码)
- 图文手把手教程--ESP32 OTA空中升级(VSCODE+IDF)
猜你喜欢
cubemx stm32 afm3000 module gas flow sensor driver code
cubemx stm32 afm3000模块 气体流量传感器 驱动代码
上帝空间——全球首个基于Web3.0的艺术协议创意平台,拓宽多元艺术融合边界
Advanced transcriptome analysis and R data visualization hot registration (2022.10)
iMeta | German National Cancer Center Gu Zuguang published a complex heatmap visualization method
【黄啊码】MySQL入门—2、使用数据定义语言(DDL)操作数据库
Leetcode brush questions - binary search tree related topics (98. Verify binary search tree, 235. The nearest common ancestor of binary search tree, 1038. From binary search tree to bigger sum tree, 5
The use of DDR3 (Naive) in Xilinx VIVADO (1) to create an IP core
MySql数据库入门的基本操作
萌宠来袭,如何让“吸猫撸狗”更有保障?
随机推荐
Use pytest hook function to realize automatic test result push enterprise WeChat
C#/VB.NET:在 Word 中设置文本对齐方式
职责链模式(responsibilitychain)
*SEO*
datax oracle to oracle离线json文件
热成像测温的原理是什么呢?你知道吗?
audio_policy_configuration.xml配置文件详解
Zikko launches new Thunderbolt 4 docking station with both HDMI2.1 and 2.5GbE
win8和win10下,visual studio 2008 调试出现无响应的卡死问题解决
apache dolphin scheduler 文件dolphinscheduler-daemon.sh详解
手搓一个“七夕限定”,用3D Engine 5分钟实现烟花绽放效果
MATLAB程序设计与应用 3.2 矩阵变换
将博客搬至CSDN
WPF 截图控件之画笔(八)「仿微信」
*W3C* Standards Organization
Xilinx VIVADO 中 DDR3(Naive)的使用(1)创建 IP 核
Maple 2022 software installation package download and installation tutorial
命令模式(Command)
Super Learning Method
化繁为简!阿里新产亿级流量系统设计核心原理高级笔记(终极版)