实习-数据库-视图

 1. 视图

1)基础概念

  • 视图是一种 虚拟表 ,本身是 不具有数据 的,占用很少的内存空间。
  • 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。
  • 在大型项目中,以及数据表比较复杂的情况下,视图可以帮助我 们把经常查询的结果集放到虚拟表中,提升使用效率。

2)创建视图

create or replace view <视图名称> as
select <column_name> from <table_name> where <condition_1> and <condition_2>;

我们用刚刚的a,b表创建新的视图test_ab:

create or replace view test_ab as
select a.name as a_name,
       b.name as b_name,
       a.sex,
       b.salary
from test_a a full outer join
     test_b b
on a.name= b.name;

如此,我们可以得到视图test_ab:

3)带入参数

oracle数据库不允许将参数带入视图,但是我们可以通过创建包&包体来实现传递参数:

  • 创建包:
create or replace package p_view_param is

  function set_param(str varchar2) return varchar2;

  function get_param return varchar2;

end p_view_param;
  • 创建包体:
create or replace package body p_view_param is

paramValue varchar2(40));
function set_param(str varchar2) return varchar2is
begin
paramValue := str;
return str;
end;

function get_param return varchar2is
begin
return paramValue;
end;
end p_view_param;

 现在,我们可以在视图中引入参数作为a的名字:

create or replace view test_ab as

select * from test_a a where a.name = p_view_param.get_param()

查询时,我们只需:

select * from test_ab where p_view_param.set_param('a') = 'a'

*注:这种带参查询法只能逐条带入,不可以多条带入。如:

select * from test_ab where p_view_param.set_param('a', 'b') = 'a', 'b'

这种是不可行的。

4)sysdate

在视图里,我们如果对某个字段分配sysdate作为日期,那么每一次我们引用视图的时候,该字段的日期都会更新,并不会固定在第一次创建时间,因为视图是虚拟的表。

*参考资料:SQL视图_明明的demo日常的博客-CSDN博客在Oracle中创建带参数的视图_视图能带参数吗_吴勇356181020的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值