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

58同城有做网站/老客外链

58同城有做网站,老客外链,网站由哪几部分组成,陕西网站建设美化之前一直对数据库里面的外连接有些疑惑,理解的不是很透彻,今天总算自己建了个表,详细地对照了几种写法,总算彻底搞清楚了。 基本概念 左连接、右连接就是数据库里面的关键字 left join 和 right join, 当然在oracle里面…

之前一直对数据库里面的外连接有些疑惑,理解的不是很透彻,今天总算自己建了个表,详细地对照了几种写法,总算彻底搞清楚了。 基本概念 左连接、右连接就是数据库里面的关键字 left join 和 right join, 当然在oracle里面也可以在某个字段的后面加上()来表

之前一直对数据库里面的外连接有些疑惑,理解的不是很透彻,今天总算自己建了个表,详细地对照了几种写法,总算彻底搞清楚了。

基本概念

左连接、右连接就是数据库里面的关键字 left join 和 right join, 当然在oracle里面也可以在某个字段的后面加上(+)来表示外连接

左连接保留出现在left join左边的关系中的元组,也就是允许右边关系中为空;通俗一点:Left join 会从左表中返回所有的行,即便在右表中没有找到匹配的项。

同理右连接保留出现在right join右边的关系中的元组,也就是允许左边关系中为空;Right join会总右表中返回所有的行,即便在左表中没有找到匹配的项。

在Oracle中

select * from a left join b on a.xxx=b.xxx

select * from a, b where a.xxx = b.xxx(+)

是等价的。

举例说明

再难理解的知识点放到实际中去操作一下,立刻就能理解地透彻很多。

我们假设现在有两张表 a1 和a2

a1:

dbf4598ffa7f010c991d2309177b190d.png

a2:

1c7a485205f2f4358897d6c850690bec.png

这两个表中有共同的字段id表示相同的含义,bcde字段可以看做不同的4列;

可以看到这两个表中有一个相同的id 1;那如果不做任何选择,a1和a2的笛卡尔积是什么样子呢?

试着执行下列语句:喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:sql;">select * from a1, a2

你会得到如下的结果:

017b5187f5b766560e8289d35dc8281c.png

笛卡尔积是个全乘积,但是单单得到笛卡尔积是没有什么用的,因为这个集合很大,而且很多行并没有什么实际意义,这时候就需要加上where语句来选择出真正有用的列

试着执行下列语句:

select a.id, b, c, d, e from a,b where a.id=b.id;

注意,如果笛卡尔积中的字段是唯一的,可以不用在select的时候标明,也就是说不用写 select a.c , b.d, b.e 等。

这时候得到的结果一定是只有1行的,也就是

0506a1a8ad81c51d683bc01a0429a918.png

这个很容易理解,也是我们最常使用的,那如果我们想得到a1表中的所有id,而无论他在不在a2中呢,改如何做呢?

试试下列语句中的任意一条:

select a.id,b,c,d,e from a,b where a.id=b.id(+);

select a.id,b,c,d,e from a left join b on a.id = b.id;

你会得到什么结果呢?

f1a56e7c6b6f0cdf72ff9558698eb353.png

是的,你会发现我们把a1表中所有的id都选择了出来,如果这个id没有在a2表中出现,那么这一行就会留空。

看到这里,一个更通俗易懂的理解外连接的诀窍就是:+号出现的那一侧允许出现NULL

当然,我们可以通过在d和e字段加上nvl(d,0)语句来把相应的null值改成我们想要的数据。

目的:

到了这里,相信我们已经对外连接有个清晰的认识了,不过为什么我们需要外连接呢??

举个简单的例子,假如a1表是学生信息表,a2表示学生选课表

c69396af38ee079c185ab8b94dc080b3.png

由于某种特殊原因,学号为201400002的那位女同学就是没有选一门课,不管她是休学1年还是已经修满学分了,就是任性,一门课也不修,那如果我们想统计学生的姓名,年龄,选课信息等等,如果不使用外连接,很容易地就把这位女同学漏掉了,而一个a.id=b.id(+)就足以规避这种特殊情况带来的错误了!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

http://www.jmfq.cn/news/4882447.html

相关文章:

  • 建站宝盒做的网站/营销策划36计
  • 专门做民宿的网站/windows优化大师官方
  • 动态网站设计用那个软件/百度快照seo
  • 仿网站建设/搜索引擎优化不包括
  • 网站开发 企业宣传册/百度推广营销方案
  • 网站常识/广告投放渠道
  • 做网站点击软件/搜索关键词排名优化服务
  • 网站开发前端要学什么/成都网站建设系统
  • wordpress 媒体库清理/新网站 seo
  • 深圳网站建设公司熊掌号/中小企业管理培训课程
  • 千图网网站怎么做/网络营销策划推广公司
  • 外国人做家具的网站/网站搜索系统
  • 怎么做动态网站视频教程/重庆百度推广排名
  • 有哪些免费做网站/谷歌官网下载
  • 高端网站建设seo/花生壳免费域名注册
  • 雅安公司做网站/百度上海分公司
  • 网站与微信结合/长沙网站包年优化
  • 智能产品开发与应用/seo外链工具有用吗
  • tp框架做的图片网站/重庆森林电影
  • 网站建设 佛山/一键优化软件
  • 中国上市公司前100名/昆明长尾词seo怎么优化
  • 网站流量分析网站/品牌网络seo方案外包
  • 最好的网站管理系统/山东济南seo整站优化费用
  • 聋哑工作设计做网站/模板建站价格
  • 翠竹营销网站设计/网上营销
  • 做淘客网站多少钱/简述获得友情链接的途径
  • 公司网站建设的申请/免费域名服务器
  • html网站地图怎么做/千度搜索引擎
  • 来宾网站建设/手机网站排名优化
  • 帮妈妈做家务作文网站/提交链接