您的位置:首页 > 数据库 > Oracle

Oracle中关联表的视图创建

2015-08-30 22:25 405 查看
这几天的工作基本上没有了比较的新的技术点,就是反反复复的修改需求,修改Bug……当然,也是到了此刻,自己猜觉得在一个庞大的项目中,需求分析的重要性,以及需求说明书的重要性。我们在需求模糊、文档缺乏的条件下,反复修改功能已经成了家常便饭,今天领导说这个功能应该这样,我们就要立刻改到这样,第二天领导说又要原来的那样,我们只能再改回去了……有时候,我们也曾调侃自己是典型的面向领导开发……
今天没有什么比较新的技术点来总结了,自己回顾了一下,这几天的工作,发现在关联表中创建视图的时候对于连接不是特别熟悉,所以趁此机会再回顾一下了:
1、内联接(典型的联接运算,使用像= 或 <> 之类的比较运算符)。包括相等联接和自然联接。内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。

2、外联接。外联接可以是左向外联接、右向外联接或完整外部联接。

在FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:
1)LEFT JOIN或LEFT OUTER JOIN

左向外联接的结果集包括 LEFTOUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
2)RIGHT JOIN 或 RIGHT OUTER JOIN

右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

3)FULL JOIN 或 FULL OUTER JOIN
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
3、交叉联接

交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。
FROM子句中的表或视图可通过内联接或完整外部联接按任意顺序指定;但是,用左或右向外联接指定表或视图时,表或视图的顺序很重要。有关使用左或右向外联接排列表的更多信息,请参见使用外联接。
以下是自己在防灾系统中中写的一个三个表的左连接实例,供参考:

<span style="font-size:24px;">create or replace view v_dp_b_limitratesegement as
select
     s_id,s_linename,s_linecode,s_monitoringunitcode,s_monitoringpointcode,s_areacode,s_areaname,s_startkilometer,s_startmeter,s_endkilometer,s_endmeter,c_tagspeed,s_tagspeed,i_sortid,c_ableflag,
     s_basestationname,kilometer
  from (
  select
      t1.s_id,t1.s_linename,t1.s_linecode,t1.s_monitoringunitcode,t1.s_monitoringpointcode,s_areacode,s_areaname,s_startkilometer,s_startmeter,s_endkilometer,s_endmeter,c_tagspeed,s_tagspeed,t1.i_sortid,t1.c_ableflag,
      t2.s_basestationname, ('K' || t3.i_km || '+' || t3.i_meter) kilometer
  from
  dp_b_processsegment t1
  left join

  dp_b_basestationinfo t2
  on  t1.s_monitoringunitcode= t2.s_id
  
  left join
  dp_b_monitoringpointinfo t3
  on t1.s_monitoringpointcode=t3.s_id
   ) t;
</span>


总结:以上总结主要是为了自己能够掌握视图的创建方法,内容比较简单,另外也希望能给有需要的人以启发……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: