连接(交叉连接、内连接、外连接、自连接)

本文非原创

可分为:交叉连接、内连接、外连接、自连接

1.使用交叉连接:

它是非限制连接,就是将两个表格不加任何条件的组合在一起,
即第一个表格的所有记录分别和第二个表格的每一条记录相连接
组合成新的记录,连接后结果集的行数是两个表格的行数的乘积,
列为两表列之和。

语法: (1)select 列名列表 from 表名1 cross join 表名2
(2)select 列名列表 from 表名1 (起别名) , 表名2

注意:当显示某一些字段要用表名指定。

例:select a.book_name , b.book_num from table1 a , table2 b

2.使用内连接:

内连接是将两个表中满足条件的记录显示出来,就是在交叉连接的
基础上加条件,一般采用“主键 = 外键”的形式。

语法:(1)select 列名列表 from 表名1 [inner] join 表名2 on 条件表达式

(2)select 列名列表 from 表名1 , 表名2 where 条件表达式

例:select * from table1 a join table2 b on a.book_name = b.book_name

3.使用外连接:

外连接分为:左外连接、右外连接、全外连接

(1)左外连接:

它是将左表中的所有数据分别与右表的每一条数据进行组合,
结果集中除了显示内连接的记录外,还显示左表中不符合条
件的记录,并在右表中相应的列上填 Null 值.

语法: select * from 表名1 left [outer] join 表名2 on 条件表达式

(2)右外连接:

它是将右表中的所有数据分别与左表的每一条数据进行组合,
结果集中除了显示内连接的记录外,还显示右表中不符合条
件的记录,并在左表中相应的列上填 Null 值.

语法: select * from 表名1 right [outer] join 表名2 on 条件表达式

(3)全外连接:

全外连接就是左表中的所有记录分别与右表中的每一条进行组合,
结果集中除返回内部连接记录之外,还要显示出两个表中不符合
条件的全部记录,并在左表、右表中对应的位置添上Null 值。

语法: select * from 表名1 full join 表名2 on 条件表达式

4.使用自连接:

自连接就是一张表的两个副本之间的连接,就是将同一个表的
不同行连接起来;使用自连接时,必须为本表指定两个别名,
使其在逻辑上成为两个表。

例: select a.biao_jia , a.biao_liang from qian a join qian b
on a.biao_jia = b.biao_jia and a.biao_liang <> b.biao_liang

5. 合并结果集:

使用union 语句可以把两个以上的结果集合并为一个结果集。

语法: select …………
union
select …………

合并结果集时有以下三点限制:
(1)union 合并的结果集的两个 select 语句的列数相同,
所使用列的数据类型要对应相同;

(2)最后结果集中的列名来自第一个 select 语句;

(3)在合并结果集时,默认将从最后结果集中删除重复的行,
除非使用关键字。

例:select book_name , book_id into #new_1 from YI
go
select egg_name , egg_shu into #new_2 from egg
go
select * from #new_1
union all
select * from # new_2

时间: 2024-09-30 18:43:57

连接(交叉连接、内连接、外连接、自连接)的相关文章

Oracle学习笔记(一)----------内、外连接

这么久终于可以静下来整理一下工作上学到的东西了(主要还是自己太懒了..) 废话少说,正文开始 在公司里,数据库用的基本都是Oracle,所以就学了一下Oracle的一点知识,现在整理一下自己遇到的问题和学到的一些东西. 先说说自己经常搞混的内连接.外连接(大学里一直没搞懂..) 数据表之间有很多种连接方式,如:内外连接等 一(内连接): 内连接就是我们经常说的等值连接或者自然连接. 内连接用连接 inner join(join)关键字连接表(或者直接用where和“=”号). 直接上例子: 设有

Oracle 内、外连接

一.Oracle连接类型     ☆说明:按照自己的理解划分的类型,并不是官方定义. 1.内连接 ①等值连接 ②非等值连接 ③自然连接 2.外连接 ①左外连接 ②右外连接 ③全外连接 二.表数据准备 t表 字段a 字段b 1 18 2 28 3 38 4 NULL t1表 字段x 字段y 1 9 2 8 3 7 三.内连接 1.内连接是通过inner join进行多表关联,展示查询结果,示例如下: SQL>select * from t inner join t1 on t.a=t1.x; 效果

左连接、右连接、交叉连接、全外连接

第一部分.连接查询 一.内连接 内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值.内连接分三种: 1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列. 2.不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值.这些运算符包括>.>=.<=.<.!>.!<和<>. 3.自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用

【cl】多表查询(内、外连接)

交叉连接(cross join):该连接产生的结果集笛卡尔积 a有7行,b有8行    a的第一行与b的每一行进行连接,就有8条a得第一行 7*8=56条 select a.real_name,s.unix_host,s.os_username from account a cross  join service s:(56条) select a.real_name,s.unix_host,s.os_username from account a cross  join service s wh

Orcle数据库 表的 内置函数 内链接 外连接 相关练习题

内连接 外连接 自连接 交叉连接

======================================================== My SQL如下: ======================================================== 1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行. 2.外联接.外联接

MSSQL 详解SQL Server连接(内连接、外连接、交叉连接)

在查询多个表时,我们经常会用“连接查询”.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据. 目的:实现多个表查询操作. 知道了连接查询的概念之后,什么时候用连接查询呢? 一般是用作关联两张或两张以上的数据表时用的.看起来有点抽象,我们举个例子,做两张表:学生表(T_student)和班级表(T_class) 1 --创建DB 2 --filename修改为自己电脑上MSSQL存储的位置

SQL中的内连接外连接和交叉连接是什么意思?

内连接又分为等值连接.自然连接和不等连接三种. 外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN).右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTER JOIN或FULL JOIN)三种.与内连接不同的是,外连接不只列出与连接条件相匹配的行,而是列出左表(左外连接时).右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行. 交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积,

MySQL 外连接、内连接,连接查询、多表查询、子查询、视图

MySQL连接查询.多表查询.子查询: 连接查询:事先将两张或多张表join,根据join的结果进行查询: [导入hellodb.sql数据库],输入密码即可 [[email protected] home]# mysql -uroot -p  mydb < /home/hellodb.sql     hellodb.sql数据库下载链接:http://pan.baidu.com/s/1pJKK4w7 密码:a0re [查看students表] mysql> select * from stu