`

mysql中的内连接,外连接实例详解

阅读更多
mysql中的内连接,外连接实例详解
内连接: 只连接匹配的行
左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行
右外连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行
全外连接: 包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。
交叉连接  生成笛卡尔积-它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个

行都一一匹配

举个例子吧。
表A
id   name 
1    张
2    李
3    王

表B
id   address   A_id
1    北京      1
2    上海      3
3    南京      10
/******************************** left join  左连接*****************************************/
包容性:A表包容B表,左连接左表是全的.(left join 或 left outer join )
SQL语句如下:
SELECT A.name, B.address
FROM A
LEFT JOIN B ON A.id = B.A_id
查询结果为:
name     address
张     北京
李     NULL
王     上海
/******************************** right join  右连接*****************************************/
包容性:B表包容A表,右连接右表是全的.(right join 或 right outer join )
SQL语句如下:
SELECT A.name, B.address
FROM A
RIGHT JOIN B ON A.id = B.A_id
查询结果为:
name     address
张     北京
王     上海
NULL     南京
/******************************** inner join  内连接*****************************************/
排他性:A,B表中至少有1个匹配时,才返回行。两表的交集
SQL语句如下:
select A.name,B.address from A
inner join B
on A.id = B.A_id

查询结果为:
name     address
张     北京
王     上海
inner join  内连接等价于下面的sql:
SELECT A.name, B.address
FROM A, B
WHERE A.id = B.A_id
/******************************** full join  全连接*****************************************/
注释:全外连接返回参与连接的两个数据集合中的全部数据,无论它们是否具有与之相匹配的行。在功能上,它等价于

对这两个数据集合分别进行左外连接和右外连接,然后再使用消去重复行的并操作将上述两个结果集合并为一个结果集

。(full join 或 full outer join )
SQL语句如下:
select * from A
full join B
查询结果为:
id     name     id     address A_id
1     张     1     北京     1
2     李     1     北京     1
3     王     1     北京     1
1     张     2     上海     3
2     李     2     上海     3
3     王     2     上海     3
1     张     3     南京     10
2     李     3     南京     10
3     王     3     南京     10
/******************************** CROSS JOIN(不带条件where...)***********************************/
注释:返回3*3=9条记录,即笛卡尔积
SQL语句如下:
SELECT * FROM A
CROSS JOIN B
查询结果为:
id     name     id     address A_id
1     张     1     北京     1
2     李     1     北京     1
3     王     1     北京     1
1     张     2     上海     3
2     李     2     上海     3
3     王     2     上海     3
1     张     3     南京     10
2     李     3     南京     10
3     王     3     南京     10
CROSS JOIN等价于:
select * from A,B

注意:
1. on A.id = B.id 等同于 using(id)//这里字段名要相同
2. 当 MySQL 在从一个表中检索信息时,你可以提示它选择了哪一个索引。  
如果 EXPLAIN 显示 MySQL 使用了可能的索引列表中错误的索引,这个特性将是很有用的。  
通过指定 USE INDEX (key_list),你可以告诉 MySQL 使用可能的索引中最合适的一个索引在表中查找记录行。  
可选的二选一句法 IGNORE INDEX (key_list) 可被用于告诉 MySQL 不使用特定的索引。    

效率问题:
1.inner join比left join快
注:inner join  内连接等价于下面的sql: SELECT A.name, B.address FROM A, B WHERE A.id = B.A_id
所以一般要用一般的连接就可以了.
2.连接字段建索引

分享到:
评论

相关推荐

    SpringMVC Mysql 实例详解

    SpringMVC Mysql 实例详解

    JSP连接Mysql数据库详解与实例

    JSP连接Mysql数据库详解与实例

    Mysql中的内连接,外连接实例详解

     左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行  右外连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行  ...

    C++利用MySQL API连接和操作数据库实例详解

    主要介绍了C++利用MySQL API连接和操作数据库实例详解的相关资料,需要的朋友可以参考下

    PHP操作MYSQL实例详解

    PHP操作MYSQL实例详解 PHP操作MYSQL实例详解 PHP操作MYSQL实例详解

    SpringMVC+Mysql实例详解

    SpringMVC+Mysql实例详解,一直用的是ssh,因为公司要用到SpringMVC,以前也没接触过,所以今天来和大家一起学习一下这个框架,分享一下。

    如何用php连接mysql实例详解_.docx

    如何用php连接mysql实例详解_.docx

    MySQL 序列 AUTO_INCREMENT详解及实例代码

    MySQL 序列 AUTO_INCREMENT详解及实例代码 MySQL序列是一组整数:1, 2, 3, …,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现。 本章我们将介绍如何使用...

    mysql存储过程之case语句用法实例详解

    本文实例讲述了mysql存储过程之case语句用法。分享给大家供大家参考,具体如下: 除了if语句,mysql提供了一个替代的条件语句CASE。 mysql的 CASE语句使代码更加可读和高效。废话不多说,我们先来看下简单case语句的...

    mysql事务处理用法与实例详解

    mysql事务处理用法与实例详解

    mysql存储过程实例详解,pdf

    mysql存储过程实例详解

    php mysql操作mysql_connect连接数据库实例详解

    mysql_connect介绍 php mysql_connect用于连接mysql服务器,该函数有多个参数,但我们一般只需要了解以下三个参数... mysql_connect实例 <?php $host=mysql153.secureserver.net; $uname=root; $pass=passwor

    Mysql自连接查询实例详解

    主要介绍了Mysql自连接查询,结合实例形式分析了MySQL自连接查询的应用场景、原理及相关操作技巧,需要的朋友可以参考下

    MySQL连接查询实例详解

    主要介绍了MySQL连接查询,结合实例形式总结分析了mysql表的创建、内连接、左连接、右连接、复合条件连接查询等相关操作技巧,需要的朋友可以参考下

    MYSQL连接C++的实例

    里面的的代码是一个实现C++连接MYSQL数据库的很好的例子  这里用了建表,插入,检索,删表等常用功能  我用VC++6.0生成,已经成功连接了。  在VC++6.0中要想把做一下两步准备工作才可以。

    MySql二进制连接方式详解

    以下是从命令行中连接mysql服务器的简单实例: 代码如下: [root@host]# mysql -u root -p Enter password:****** 在登录成功后会出现 mysql> 命令提示窗口,你可以在上面执行任何 SQL 语句。 以上命令执行后,登录...

    python3连接MySQL数据库实例详解

    #python3连接MySQL实例 import pymysql """导入连接MySQL需要的包,没有安装pymysql需要先安装 使用命令行切换到python的安装路径下的scripts子目录下安装(pip install pymysql) """ #连接MySQL数据库 db = ...

    MySQL存储过程实例教程详解.docx

    MySQL存储过程实例教程详解.docxMySQL存储过程实例教程详解.docx

    Linux 下C语言连接mysql实例详解

    Linux 下C语言连接mysql实例详解 第一步: 安装mysql, 参考://www.jb51.net/article/39190.htm 第二步: 安装mysql.h函数库 sudo apt-get install libmysqlclient-dev 执行之后就可以看到/usr/include/MySQL目录...

Global site tag (gtag.js) - Google Analytics