转 http://blog.csdn.net/u010011371/article/details/50596535

1、内连接 (INNER JOIN)

  内连接也称自然连接,它是根据两个或多个表中的列之间的关系,从这些表中查询数据。
注意: 内连接是从结果表中删除与其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。
重点:内连接,只查匹配行。
语法:(INNER可省略)

  1. select dishname,dishcode,nums,catename from sn_dish_info inner join sn_dish_category
  2. on sn_dish_info.cateuuid=sn_dish_category.cateuuid

菜品类别表:

菜品表

结果表

  这样我们就把两张表中我们想要的数据查出来了。但同时招牌菜这个的数据就丢失了!!不过这对于我们好像不影响我们。我们只要菜品类别下有菜品的数据。

2、外连接(左,右,全连接)

  外连接分为三种:左外连接,右外连接,全外连接。对应SQL:LEFT/RIGHT/FULL OUTER JOIN。通常我们省略outer 这个关键字。写成:LEFT/RIGHT/FULL JOIN。

  在左外连接和右外连接时都会以一张表为基表,该表的内容会全部显示,然后加上两张表匹配的内容。如果基表的数据在另一张表没有记录。那么在相关联的结果集行中列显示为空值(NULL)。

(1)左连接

以左表为基准,结果集保留左表的所有行,对于右表只包含左表匹配的行。如果右表不存在与左表相对应的数据,就将查询结果集合对应的数据字段放入NULL值。

  1. Select  dishname,dishcode,nums,sn_dish_category.catename as carename
  2. from sn_dish_info  left join sn_dish_info.cateuuid sn_dish_category.cateuuid

结果:

(2)右连接

与左连接正好相反。

  1. Select  dishname,dishcode,nums,sn_dish_category.catename as carename
  2. from sn_dish_info right join sn_dish_category on sn_dish_info.cateuuid=sn_dish_category.cateuui

结果:

(3)全连接

将左右两个表中的数据都查询出来,如果两个表中没有相对应的数据,就将该字段放入NULL值。

  1. Select  dishname,dishcode,nums,sn_dish_category.catename as carename
  2. from sn_dish_info full join sn_dish_category on sn_dish_info.cateuuid=sn_dish_category.cateuuid

3、交叉连接(Cross join)

交叉连接也称笛卡尔积,是将两个表中的每一条数据都进行组合。

例:a(a,1),b(2,3,4)     交叉连接后c{(a,2) ,(a,3),(a,4)(1,2),(1,3),(1,4)}

  1. Select  dishname,dishcode,nums,sn_dish_category.catename as
  2. carename from sn_dish_info cross join sn_dish_category

他和用内连接进行查询的结果一样,就是太慢了,因为它得先进行组合,在进行筛选,导致查询的效率很低。

4、UNION

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。

当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。

SQL UNION 语法  

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2 注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。 SQL UNION ALL 语法 SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

  

 

转 SQL连接查询语句(内、外、交叉和合并查询)的更多相关文章

  1. mysql查询语句,通过limit来限制查询的行数。

    mysql查询语句,通过limit来限制查询的行数. 例如: select name from usertb where age > 20 limit 0, 1; //限制从第一条开始,显示1条 ...

  2. SQL连接方式(内连接,外连接,交叉连接)

    1.内连接.左连接.右连接.全连接介绍 內连接仅选出两张表中互相匹配的记录.因此,这会导致有时我们需要的记录没有包含进来.内部连接是两个表中都必须有连接字段的对应值的记录,数据才能检索出来.   左连 ...

  3. 数据库开发基础-SQl Server 主键、外键、子查询(嵌套查询)

    主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键.一个 ...

  4. MySQL查询语句执行过程及性能优化-查询过程及优化方法(JOIN/ORDER BY)

    在上一篇文章MySQL查询语句执行过程及性能优化-基本概念和EXPLAIN语句简介中介绍了EXPLAIN语句,并举了一个慢查询例子:

  5. SQL Fundamentals || 多表查询(内连接,外连接(LEFT|RIGHT|FULL OUTER JOIN),自身关联,ON,USING,集合运算UNION)

    SQL Fundamentals || Oracle SQL语言 一.多表查询基本语法 在进行多表连接查询的时候,由于数据库内部的处理机制,会产生一些“无用”的数据,而这些数据就称为笛卡尔积. 多表查 ...

  6. SQL连接:内连接、外连接、交叉连接。

    SQL连接可以分为内连接.外连接.交叉连接. 数据库数据:             book表                                          stu表 1.内连接 ...

  7. SQL查询语句大全集锦

    SQL查询语句大全集锦 一. 简单查询 简单的Transact-SQL查询只包括选择列表.FROM子句和WHERE子句.它们分别说明所查询列.查询的 表或视图.以及搜索条件等. 例如,下面的语句查询t ...

  8. (转)经典SQL查询语句大全

    (转)经典SQL查询语句大全 一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql s ...

  9. 经典SQL查询语句大全

    一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数 ...

随机推荐

  1. UUID相同导致的网络连接问题

    目录 场景 思路 解决过程 提升虚拟机配置 直连交换机 最终解决方案 总结 场景 有同事从公司寄了一台服务器到现场,用来安装数据库.缓存等组件供开发使用.到了之后,连接电源.网线,设置IP,用vSph ...

  2. 【图象处理】图文详解YUV420数据格式

    转载自: http://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.html YUV格式有两大类:planar和packed. 对于plan ...

  3. smoothscroll

    smoothscroll是一款jQuery插件,可以平滑地滚动到指定的地方. 可以解决chrome锚点失效的问题. 官方网站 http://iamdustan.com/smoothscroll/ gi ...

  4. krpano下全屏后弹窗失效问题解决方法

    原因 krpano 自身的全屏仅全屏自身,以外的html效果将无法显示 解决方法 把全屏按钮换成浏览器自身的全屏效果 解决步骤 vtourskin.xml <layer name="n ...

  5. Gym - 100989 L / M 【dfs / dp】

    题目链接:http://codeforces.com/gym/100989/problem/L / http://codeforces.com/gym/100989/problem/M 题目大意:给定 ...

  6. jquery的scrollTop方法

    scrollTop方法设置或返回备选元素的垂直滚动条位置. 提示:当滚动条位于最顶部时,位置是0 当用于返回位置时: 该方法返回第一个匹配元素的滚动条的垂直位置 当用于设置位置时: 该方法设置所有匹配 ...

  7. python 安装PostgreSQL 模块:psycopg2

    官方资料:http://www.psycopg.org/psycopg/docs/ 安装: yum -y install python-psycopg2 (安装的版本可能是2.0) pip insta ...

  8. 手把手教你搭建FastDFS集群(中)

    手把手教你搭建FastDFS集群(中) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u0 ...

  9. 汉明码(hamming code)

    hamming code用于磁盘RAID 2中, 关于汉明码的讲解可以看这篇博文,介绍的很详细.最重要是最后的结论: 汉明码属于分组奇偶校验,P4P2P1=000,说明接收方生成的校验位和收到的校验位 ...

  10. 使用JavaFX开发桌面程序(一)

    使用JavaFX开发桌面程序 注:我也是JAVA FX的初学者之一,自己在学习的时候踩了许多的坑,中文英文的资料查了不少,但是觉得FX技术和其他热门技术相比,教程还是太少了.这里就尽量做一点微小的贡献 ...