mysql的多表查询
转自: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的多表查询的更多相关文章
- Vc数据库编程基础MySql数据库的表查询功能
Vc数据库编程基础MySql数据库的表查询功能 一丶简介 不管是任何数据库.都会有查询功能.而且是很重要的功能.上一讲知识简单的讲解了表的查询所有. 那么这次我们需要掌握的则是. 1.使用select ...
- MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习
MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建 ...
- MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询
MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...
- day15(mysql 的多表查询,事务)
mysql之多表查询 1.合并结果集 作用:合并结果集就是把两个select语句查询的结果连接到一起! /*创建表t1*/ CREATE TABLE t1( a INT PRIMARY KEY , b ...
- mysql数据库优化课程---11、mysql普通多表查询
mysql数据库优化课程---11.mysql普通多表查询 一.总结 一句话总结:select user.username,user.age,class.name,class.ctime from u ...
- Mariadb/MySQL数据库单表查询基本操作及DML语句
Mariadb/MySQL数据库单表查询基本操作及DML语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一数据库及表相关概述 1>.数据库操作 创建数据库: CREATE ...
- day 39 MySQL之多表查询
MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都 ...
- day 38 MySQL之单表查询
MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER ...
- MySQL的联表查询
MySQL的联表查询 首选:分析查询的字段来自哪些表 进而:确定交集 然后:确定判断的条件 比如:从student表 和 result表 查学号.考试名称.学时.考试日期.考试成绩 表1: 学号 考试 ...
- mysql 查询优化 ~ 多表查询基础知识
一 什么是驱动表 1)指定了联接条件时,满足查询条件的记录行数少的表为[驱动表]: 2)未指定联接条件时,行数少的表为[驱动表](Important!). 表现 explain第一行出现的 ...
随机推荐
- 《JAVA与模式》之享元模式
<JAVA与模式>之享元模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述享元(Flyweight)模式的: Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨 ...
- alert对ajax阻塞调查(IE, Chrome, FF)
前阵子做保守工作,对一个js效果进行了改进,由于自己在chrome下测试没问题就丢给同事测试,同事用的是FF,发现不正常,后来又发现这个js在IE10下也不行,不得不调查,结果发现Chrome的ale ...
- jQuery Uploadify在ASP.NET MVC中的使用
感谢http://www.cnblogs.com/libingql/archive/2012/09/11/2681007.html 除此之外,给大家推荐一个: http://gallery.kissy ...
- C#实现AES加解密方法
using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptograph ...
- 在生产环境使用Docker部署应用
导读 Docker现在越来越流行,但是真正在生产环境部署Docker还是个比较新的概念,还没有一个标准的流程.作者是ROR的程序员,作者结合平时的部署经验,联系Docker的特点,向大家分享了其在生产 ...
- 鸟哥的linux私房菜学习笔记 __ 命令与文件的搜寻
连续输入两次[tab]按键就能够知道使用者有多少命令可以下达.那你知不知道这些命令的完整档名放在哪里?举例来说,ls 这个常用的命令放在哪里呢? 就透过 which 或 type 来找寻吧! 范例一: ...
- Coursera台大机器学习技法课程笔记01-linear hard SVM
极其淡腾的一学期终于过去了,暑假打算学下台大的这门机器学习技法. 第一课是对SVM的介绍,虽然之前也学过,但听了一次感觉还是很有收获的.这位博主总结了个大概,具体细节还是 要听课:http://www ...
- rocksdb 编译安装 日志
Compilation RocksDB's library should be able to compile without any dependency installed, although w ...
- 【Spring】Spring系列3之Spring AOP
3.Spring AOP 3.1.AOP概述 3.2.前置通知 3.3.后置通知 3.4.返回通知.异常通知.环绕通知 3.5.指定切面优先级 3.6.重用切入点表达式 3.7.引入通知 3.8.基于 ...
- Shell编程基础
写之前我们先来搞清楚为什么要学shell,学习要有目的性shell简单.灵活.高效,特别适合处理一些系统管理方面的小问题shell可以实现自动化管理,让系统管理员的工作变得容易.简单.高效shell脚 ...