转 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. ipad3 修理记录

    1,左下角 有视频线 2,右下角 有WIFI线

  2. React + Antd开发模式下的Excel导入功能

    具体js如下,配合的是antd里面的upload组件,使用的是xlsx插件 npm :  npm install xlsx 插件链接: https://github.com/SheetJS/sheet ...

  3. python库 使用shutil来删除文件夹时报PermissionError时的解决方案

    解决方案: def handle_remove_read_only(func, path, exc): excvalue = exc[1] if func in (os.rmdir, os.remov ...

  4. Anaconda Spyder 常用快捷键

    Ctrl+1 注释.取消注释 Ctrl+4/5 块注释 / 取消块注释 Ctrl+D 删除一行 Ctrl+L 转到行 Ctrl+G/左键 查找函数定义 F9 运行选中代码 F12 断点 / 取消断点 ...

  5. [bzoj1733][Usaco2005 feb]Secret Milking Machine 神秘的挤奶机_网络流

    [Usaco2005 feb]Secret Milking Machine 神秘的挤奶机 题目大意:约翰正在制造一台新型的挤奶机,但他不希望别人知道.他希望尽可能久地隐藏这个秘密.他把挤奶机藏在他的农 ...

  6. Qt5笔记(一)

      1.  只要指定父对象,直接或间接继承于QObect,那么子对象如果是动态分配空间,不需要手动释放内存,系统会自动释放.( Qt的内存回收机制) 2.  想要查看某个函数,可以F1进入帮助文档,连 ...

  7. # codeblocks 使用技巧+伪单文件编译

    codeblocks 使用技巧+伪单文件编译 shift+F2打开和隐藏左侧工作空间 F2 打开和隐藏下面控制台 CTRL+Shift+c 注释,CTRL+Shift+x取消注释 view->p ...

  8. Swoft2.x 小白学习笔记 (四) --- RPC

    介绍 swoft 中 RPC使用:搭建访问服务端和客户端 RPC服务端: 一.配置,在文件 /app/bean.php中添加 return [ 'rpcServer' => [ 'class' ...

  9. Python的IDE之Jupyter的使用

    Python的IDE之Jupyter的使用 今天给大家分享的是Jupyter安装和基本使用教程,同时在我安装的过程中遇到了一些问题,解决方法,一并和大家分享 一.Jupyter介绍 Jupyter N ...

  10. Office/Visio/Project 2019 专业版iso

    一.Microsoft Office 2019专业增强版1.简体中文版Office Professional Plus 2019 (x86 and x64) – DVD (Chinese-Simpli ...