Oracle_4 sql标准 连接 select小结

sql标准

        sql92标准中的连接条件和数据过滤条件都是混在where语句中,这样使人很同意混淆,如下面语句:

 

        为了解决这个问题,sql99标准改善了这个问题,用join语句表示连接条件,where中只剩下数据过滤

    条件。新的语法定义比较清晰,语句更容易读,如以下语句:

 

若是等值连接还有另一种简便的写法,如以上可写成:

 

但是不推荐这一种写法,因为这种写法不易让人理解,也容易出错join连接3个表,这种写法比用

     where更容易理解,如下:

 

左外连接:会把左边那张表的多余的数据(不能和另外一张表产生连接的数据)显示出来

     左向外联接的结果集包括left子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某

     行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

 

右内连接: 右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有

     匹配行,则将为左表返回空值

 

完整连接: 完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的

    选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值

 

select小结:select实例:

--求部门中哪些人的薪水最高

 

--求部门平均薪水的等级

 

--比普通员工的最高薪水还要高的经理人名称

 

最后说一个面试题:比较下面两条语句的执行效率:

 

       两条语句在执行时理论上是第一条效率较高,因为匹配数字比匹配字符串更快,所以先过滤掉数字效率

   会更高些但是在实际应用中,比如oracle数据库中,在使用第2条语句时,oracle会自动优化查询,它仍

   然会像第1条语句那样执行,所以在具体的数据库中他们的效率还要看具体情况

 

 

 

 

 

 

posted on 2011-02-24 10:14  springside5  阅读(161)  评论(0编辑  收藏  举报