转自:http://huaxia524151.iteye.com/blog/1423614

转自:http://blog.sina.com.cn/s/blog_4c197d420101cnm9.html

连接类型

分为三种:交叉连接(笛卡尔积)、内连接(自然连接、等值连接、非等值连接)、外连接。

现有表R,S如下:

表R

表S

(1)交叉连接(笛卡尔积)cross join

没有where子句的交叉连接将产生连接表的笛卡尔积。

例一:

select * from R cross join S;

select * from R,S;

结果:

注:不需要任何条件。结果为两张表函数相乘(3x3=9)。

例二:

select * from R cross join S where R.C = S.C;

结果:

(2)内连接

内连接分为三种:自然连接、等值连接、非等值连接。

A.自然连接 natural join:在连接条件中使用等于=运算符比较被连接列的列值,但删除连接表中重复列。

例一:

select * from R natural join S;

select e.empno,e.ename,m.empno,m.ename from emp e,emp m
where m.mgr = e.empno;

结果:


 B.等值连接  :使用等于=比较连接列的列值,在查询结果中列出接连表中的所有列,包括其中的重复列。

select * from R  join S where R.C = S.C;

select * from R inner join S where R.C = S.C;

结果:

C.非等值连接:在连接条件中,可以使用其他比较运算符,比较被连接列的列值,如:<、>、!=等。

(3)外连接

外连接分为三类:全外连接、左外连接、右外连接。

A.左外连接 left join / left
outer join

select * from R left join S on R.C = S.C;

左外连接要遍历左表的所有记录,右表没有的用null表示。

B.右外连接 right join / right
outer join

select * from R right join S on R.C = S.C;

右外连接要遍历右表所有的记录,左表没有的用null表示。

C.全外连接 full join / full
outer join

select * from R full join S on R.C = S.C;

mysql中的全连接补充:

MySQL支持左连接,右连接,但是并不支持全连接。

通过基本是下全连接的效果。
表数据说明:

表a


表b

自然连接sql:
select a.id as a_id,a.name as a_name, b.id as b_id,b.name as b_name
from stu_a a ,stu_b b
where a.id=b.id

左连接sql:
select a.id as a_id,a.name as a_name, b.id as b_id,b.name as b_name
from stu_a a
left join stu_b b
on a.id=b.id

右连接sql:
select a.id as a_id,a.name as a_name, b.id as b_id,b.name as b_name
from stu_a a
right join stu_b b
on a.id=b.id

合并左、右连接:
select a.id as a_id,a.name as a_name, b.id as b_id,b.name as b_name
from stu_a a
left join stu_b b
on a.id=b.id
union
select a.id as a_id,a.name as a_name, b.id as b_id,b.name as b_name
from stu_a a
right join stu_b b
on a.id=b.id

也可以是:
select a.id as a_id,a.name as a_name, b.id as b_id,b.name as b_name
from stu_a a
left join stu_b b
on a.id=b.id
union
select a.id as a_id,a.name as a_name, b.id as b_id,b.name as b_name
from stu_a a
right join stu_b b
on a.id=b.id
where a.id is null

mysql的多表查询的更多相关文章

  1. Vc数据库编程基础MySql数据库的表查询功能

    Vc数据库编程基础MySql数据库的表查询功能 一丶简介 不管是任何数据库.都会有查询功能.而且是很重要的功能.上一讲知识简单的讲解了表的查询所有. 那么这次我们需要掌握的则是. 1.使用select ...

  2. MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习

    MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建 ...

  3. MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询

    MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...

  4. day15(mysql 的多表查询,事务)

    mysql之多表查询 1.合并结果集 作用:合并结果集就是把两个select语句查询的结果连接到一起! /*创建表t1*/ CREATE TABLE t1( a INT PRIMARY KEY , b ...

  5. mysql数据库优化课程---11、mysql普通多表查询

    mysql数据库优化课程---11.mysql普通多表查询 一.总结 一句话总结:select user.username,user.age,class.name,class.ctime from u ...

  6. Mariadb/MySQL数据库单表查询基本操作及DML语句

    Mariadb/MySQL数据库单表查询基本操作及DML语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一数据库及表相关概述 1>.数据库操作 创建数据库: CREATE ...

  7. day 39 MySQL之多表查询

    MySQL之多表查询   阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都 ...

  8. day 38 MySQL之单表查询

    MySQL之单表查询   阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER ...

  9. MySQL的联表查询

    MySQL的联表查询 首选:分析查询的字段来自哪些表 进而:确定交集 然后:确定判断的条件 比如:从student表 和 result表 查学号.考试名称.学时.考试日期.考试成绩 表1: 学号 考试 ...

  10. mysql 查询优化 ~ 多表查询基础知识

    一 什么是驱动表   1)指定了联接条件时,满足查询条件的记录行数少的表为[驱动表]:   2)未指定联接条件时,行数少的表为[驱动表](Important!).   表现 explain第一行出现的 ...

随机推荐

  1. mouseover和mouseout闪烁问题

    在父级元素上注册了mouseover和mouseout事件后,当鼠标移动到子元素上时,会触发父级的mouseout和mouseover事件,反复触发,形成闪烁. 原因: 一种是由于冒泡,子级的mous ...

  2. Iterator<转>

    Iterator就是迭代器的意思. Iterator是一个接口,利用迭代器主要是获取元素,很少删除元素.有三个方法:    1)hasNext():判断是否有更多的元素,如果有返回true.    2 ...

  3. linux ls和 ll 命令

    工作中用到      ll -alrth|tail -30    命令 所以再来回顾一下 ls 命令 linux ls和 ll 命令 ll 命令列出的信息更加详细,有时间,是否可读写等信息 ll命令和 ...

  4. 整理的dedecms标签大全,方便查找

    平时用dedecms开发经常会用到一些标签,特别是首页.栏目页.内容页,这些页面都会用到标签的调用,比如title.keywords.description.arclist.field.body等,为 ...

  5. 学习windows内核书籍推荐 ----------转自http://tieshow.iteye.com/blog/1565926

      虽然,多年java,正在java,看样子还得继续java.(IT小城,还是整java随意点)应用程序 运行于操作系统之上,  晓操作系统,方更晓应用程序. 主看windows,因为可玩性高,闭源才 ...

  6. 秀尔算法:破解RSA加密的“不灭神话”

    RSA加密 VS 秀尔算法 作为RSA加密技术的终结者——“太多运算,无法读取”的秀尔算法(Shor’s algorithm)不是通过暴力破解的方式找到最终密码的,而是利用量子计算的并行性,可以快速分 ...

  7. 基于贪心算法的几类区间覆盖问题 nyoj 12喷水装置(二) nyoj 14会场安排问题

    1)区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖 样例: 区间长度8,可选的覆盖线段[2,6],[1, ...

  8. SHSEE 备战最后十(四)天日记

    努力. Day -1 看书.睡觉. Day 0 上午考试.语文纯RP题跪.理总不错. 下午上课,各种神. Day 1 上午下午讲课...Day 0成绩出来才#17.... Day 2 考试..这次题目 ...

  9. 《linux备份与恢复之一》.tar.bz2与.tar.gz格式的文本压缩率比较

    对于文本压缩,据说bzip的算法要优于gzip,从而拥有更好的压缩比.特地找了两个文件来做一下测试,以下为测试结果:   (1)源文件为591MB, .tar.bz2文件为61MB(10.32%), ...

  10. 【SpringMVC】SpringMVC系列2之@RequestMapping 映射约束请求

    @RequestMapping 映射约束请求 2.1.映射请求URL Spring MVC 使用 @RequestMapping 注解为控制器指定可以处理哪些 URL 请求,在控制器的类定义及方法定义 ...