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基础之多表连接查询

有三个表:T_USER, t_group, T_USER_GROUP 1.select* from T_USER 2.select * from t_group 3.select ...
  • qiu_1231
  • qiu_1231
  • 2017年08月10日 15:22
  • 840

自己珍藏的数据库SQL基础练习题答案

自己珍藏的数据库SQL基础练习题答案 一,基本表的定义与删除. 题1:  用SQL语句创建如下三张表:学生(Student),课程表(Course),和学生选课表(SC),这三张表的结构如表...
  • Litt_J
  • Litt_J
  • 2014年12月31日 21:55
  • 3513

一份基本的SQL测试题

 数据库基础测试题 姓名:          工号:     一、单项选择题,把合适的选项编号填写在括号内。(每小题1分,共10分) 1.在数据库技术中,实体-联系模型是一种( A )A.概念数据模型...
  • caiqcong
  • caiqcong
  • 2009年06月23日 14:16
  • 11257

SQL基础查询

一、基本查询语句:      ♠ FROM 子句 --- 指定要从哪个表中查询。      ♠ 使用别名           (1)在 SQL语句中可以通过使用列的别名改变标题的显示样式,或者表示...
  • u012959008
  • u012959008
  • 2015年12月21日 23:29
  • 215

SQL表连接

背景 在上次的自考科目《数据库系统原理》中,已经接触到了关于数据库表连接的一些知识,最近的学习过程中又用到了关于数据库表的连接问题,趁此再跟大家一起回顾一下。 导图总结 首先用一张思维导...
  • u010773667
  • u010773667
  • 2014年07月24日 22:14
  • 1471

<基础>SQL面试题(2)

问题描述: 本题用到下面三个关系表: CARD 借书卡。 CNO 卡号,NAME 姓名,CLASS 班级 BOOKS 图书。 BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价...
  • miragesky2049
  • miragesky2049
  • 2012年02月23日 11:08
  • 2676

SQL基本操作---数据查询

                                           SQL基本操作---数据查询SELECT语法格式:  SELECT[predicate]{*|table.*|[t...
  • ailihx
  • ailihx
  • 2007年03月24日 19:04
  • 1012

Spark Sql,Dataframe和数据集指南

概述   Spark SQL是一个spark模块,主要用于结构化数据的处理。不像基础的spark RDD的API那么抽象,该接口能够对数据和数据的计算提供更多的信息。Spark SQL使用这些额外的信...
  • u013676711
  • u013676711
  • 2016年05月10日 23:14
  • 552

SQL数据库表连接图文详解

sql数据库表连接,主要分为:内连接、外连接(左连接、右连接 、全连接)、交叉连接,今天统一整合一下,看看他们的区别。   首先建表填充值。 学生表:student(id,姓名,年龄,性别 ) ...
  • MAOZEXIJR
  • MAOZEXIJR
  • 2017年06月25日 14:35
  • 972

Hibernate 一对多连接表单向关联

版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。   原文地址: http://lavasoft.blog.51cto.com/62575/39318 Hibernate 一对多连接表...
  • a9529lty
  • a9529lty
  • 2009年12月04日 13:36
  • 1748
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL基础 之 表连接
举报原因:
原因补充:

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