SQL基础 之 表连接

原创 2015年07月11日 10:07:41

关键字:基表, 匹配, 笛卡尔积

交叉连接

交叉连接(cross join):不带on子句,返回的是两表的乘积,也叫笛卡尔积
有两种,显式的和隐式的,(只是SQL书写方式不同而已)

两张原始表
你好啊
person 表:人员表,包括主键ID, 姓名name
order表:人员喜欢的食物表,包括主键ID, 食物Food, person_id,

交叉连接后(行数是 3*4)
这里写图片描述

隐式SQL

SELECT o.* , p.* From order as o , person as p

显示SQL (使用CORSS JOIN)

SELECT o.* , p.* From order as o cross join person as p

内连接

a.内连接
内连接也叫连接,是最早的一种连接。还可以被称为普通连接或者自然连接,内连接是从结果表中删除与其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。
内连接的语法如下:
select fieldlist from table1 [inner] join table2 on table1.column = table2.column

例子
select p.* , o.* from person p inner join order o on p.id = o.person_id
结果如下(及从两表的笛卡尔积中选出 符合on后面条件 的行)
这里写图片描述

外连接

外连接分为三种:左外连接,右外连接,全外连接。对应SQL:LEFT/RIGHT/FULL OUTER JOIN。

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

左连接
select p.* , o.* from person p left join order o on p.id = o.id

可以这样去考虑,第一步取出person的第一行,匹配oder表所有行,如果满足 on条件, 则匹配上,如下结果得到两条记录
这里写图片描述

第二步:用person表的第二行重复第一步的操作,结果也是有两条可以匹配。

第三步:用person表的第三行重复第一步的操作,但是没有一条匹配上。结果会是这样的,如下图
这里写图片描述

所以最后的结果是5条

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

数据库基础--SQL多表连接查询(详细实例)

本文主要列举两张和三张表来讲述多表连接查询。 新建两张表: 表1:student 截图如下: 表2:course 截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,...

Oracle PL/SQL开发基础(第九弹:多表连接查询)

在Oracle中,有两种多表连接的方式,分别为ANSI SQL连接格式和Oraacle特有的连接格式。 内连接 内连接也称为等值连接或简单连接。 如: SELECT emp.empno, ...

关于java基础--SQL驱动及JDBC连接

一、SQL与JDBC 1,SQL驱动 步骤: (1)设置驱动包调用路径driver (2)设置调用的URL (3)设置用户名username (4)设置用户密码userpass (5)调用驱动包Cla...
  • yzjyhp
  • yzjyhp
  • 2015年07月22日 21:40
  • 995

数据应用达人之SQL基础教程分享7-算术取反连接操作

3.算术操作 重拾儿时课堂 1、没错,就是加减乘除 【知识点介绍】 算术符的 + - & / 在SQL里是用于执行算术功能的,它的定义与数学中的加减乘除并无二意。 假设学生表...

SQL Server调优系列基础篇(常用运算符总结——三种物理连接方式剖析)

SQL Server调优系列基础篇(常用运算符总结——三种物理连接方式剖析) 作者: 指尖流淌  来源: 博客园  发布时间: 2015-02-13 16:45  阅读: 107 次  推荐...

15 sql语言基础与qt里sqlite, mysql数据库的连接

sql: struct query language 关系型数据通用语法数据库里还有触发器(对数据库里做某种操作时会触发执行函数), 储存器(储存数据会触发的函数)数据表: 相当于描述一个结构体里所...
  • jklinux
  • jklinux
  • 2017年05月14日 21:18
  • 449

数据库基础学习----SQL语句的连接方式

在敲机房收费系统的过程中,遇到了这样一个问题那就是我需要的数据在两个表中,我就想实现如何同时查询两个表呢  对此问题经过查找和问同学得到了解决    解决一  :  也是我自己想的简单...

数据应用达人之SQL基础教程分享8-子查询、连接、组合查询

6.子查询 更为复杂的子查询 1、子查询 【知识点介绍】 学习到现在,我们已经使用WHERE进行了很多简单的查询,一个条件、多个条件的查询都处理过了。 那么什么是子查询?...

PL/SQL基础编程之(三)[输出、连接字符、服务器输出、注释等]

常用: 赋值: [:=] 连接字符: [||] 输出: dbms_out.put_line(‘some text’); 1、应用变量赋值输出的案例如下: Declare x...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL基础 之 表连接
举报原因:
原因补充:

(最多只允许输入30个字)