回顾mysql--第六天、表联合

学习目标

  • 外部联合
  • 内部联合
  • 左联合
  • 右联合
  • 等值联合
  • 不等值联合

笛卡尔积 n*m行

如果你在联合表的时候没有使用 WHERE 子句 你执行的其实是笛卡尔联合 也就
是笛卡尔叉积 这种联合会对 FROM 中指出的表进行完全的组合 如果每个表有 200
个记录的话 那么所得到的结果将会有 40000 行 200 *200

等值联合

  • 等值联合是在 WHERE 子句中使用等号
  • 利用都存在的列,这种联合操作称为等值联合 因为它只显示第一个表中的数据以及第二个表中的 存在于第一个表
    中的数值

不等值联合

  • 不等值联合则是在 WHERE 子句中使用除了等号以外的其它比较运算符
  • 在现实世界中等值联合的使用
    要远远多于不等值联合 但是你的编程时可能会遇到使用不等值联合的情况

内部联合与外部联合

这种类型的联合没有 WHERE 子句

  • 内部联合 指与个表内的行与本表内的数据相互进行联合,产生的结果行数取决于参加联合的行数
  • SELECT P.PARTNUM P.DESCRIPTION P.PRICE O.NAME O.PARTNUM
    FROM PART P JOIN ORDERS O ON ORDERS.PARTNUM = 54
  • 外部联合指外部联合则是表间的联合
  • 外部右联合,它会令 SQL 返回右边表集内的全部记录
    SELECT P.PARTNUM P.DESCRIPTION P.PRICE O.NAME O.PARTNUM FROM PART P
    RIGHT OUTER JOIN ORDERS O ON ORDERS.PARTNUM = 54
  • 外部左联合,与内部联合的结果一样 都是六行 因为你使用的是左联合 PART 表决定返回的行
    数 而 PART 表比 ORDERS 表小 所以 SQL 把其余的行数都扔掉了
  • 在一些解释器中使用+号来代替外部联合 +号的意思就是 ——显示我的全部内容包括
    不匹配的内容。
    select e.name e.employee_id ep.salary ep.marital_status from e,ployee_tbl e,
    employee_pay_tbl ep
    where e.employee_id = ep.employee_id(+) and e.name like ‘%MITH’
    这条语句将会联合两个表 标有+号的 employee_id 将会全部显示 包括不满足条件的
    记录

自我联合

用于检查已存在的数据是否有错误插入
WHERE F.PARTNUM = S.PARTNUM AND F.DESCRIPTION <> S.DESCRIPTION.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值