内连接与外连接

数据表的连接有:
1、内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现
2、外连接: 包括

(1)左外连接(左边的表不加限制)
(2)右外连接(右边的表不加限制)
(3)全外连接(左右两表都不加限制)

3、自连接(连接发生在一张基表内)
select a.studentno, a.studentname, b.classname

from students a, classes b
where a.classid(+) = b.classid;
STUDENTNO
STUDENTNAM CLASSNAME
---------- ---------- ------------------------------

1 周虎 一年级一班
2 周林 一年级二班
一年级三班
以上语句是右连接:

即"(+)"所在位置的另一侧为连接的方向,右连接说明等号右侧的所有
记录均会被显示,无论其在左侧是否得到匹配。也就是说上例中,无

论会不会出现某个班级没有一个学生的情况,这个班级的名字都会在
查询结构中出现。

反之:
select
a.studentno, a.studentname, b.classname
from students a, classes b
where
a.classid = b.classid(+);

STUDENTNO STUDENTNAM CLASSNAME
----------
---------- ------------------------------
1 周虎 一年级一班
2 周林 一年级二班
3
钟林达

则是左连接,无论这个学生有没有一个能在一个班级中得到匹配的部门号,
这个学生的记录都会被显示。

select
a.studentno, a.studentname, b.classname
from students a, classes b
where
a.classid = b.classid;

这个则是通常用到的内连接,显示两表都符合条件的记录

总之,


左连接显示左边全部的和右边与左边相同的
右连接显示右边全部的和左边与右边相同的
内连接是只显示满足条件的!

内连接与外连接,布布扣,bubuko.com

时间: 2024-12-19 11:14:09

内连接与外连接的相关文章

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

本文非原创 可分为:交叉连接.内连接.外连接.自连接 1.使用交叉连接: 它是非限制连接,就是将两个表格不加任何条件的组合在一起, 即第一个表格的所有记录分别和第二个表格的每一条记录相连接 组合成新的记录,连接后结果集的行数是两个表格的行数的乘积, 列为两表列之和. 语法: (1)select 列名列表 from 表名1 cross join 表名2 (2)select 列名列表 from 表名1 (起别名) , 表名2 注意:当显示某一些字段要用表名指定. 例:select a.book_na

内连接,外连接,交叉连接

两个表要做连接,就必须有个连接字段 A表 B表 在A表中的Aid和B表中的Bnameid就是两个连接字段 内连接:利用内连接可获取两表的公共部分的记录:Select * from A JOIN B ON A.Aid=B.Bnameid 运行结果如下: 其实select * from A,B where A.Aid=B.Bnameid与Select * from A JOIN B ON A.Aid=B.Bnameid的运行结果是一样的. 外连接:外连接分为两种,一种是左连接(Left JOIN)和

内连接和外连接的区别

在之前,我对MSSQL中的内连接和外连接所得出的数据集不是很清楚.这几天重新温习了一下SQL的书本,现在的思路应该是很清楚了,现在把自己的理解发出来给大家温习下.希望和我一样对SQL的连接语句不太理解的朋友能够有所帮助.(发这么菜的教程,各位大大们别笑话偶了,呵:D ) 有两个表A和表B. 表A结构如下: Aid:int:标识种子,主键,自增ID Aname:varchar 数据情况,即用select * from A出来的记录情况如下图1所示: 图1:A表数据 表B结构如下: Bid:int:

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

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

mysql学习笔记(七)—— MySQL内连接和外连接

    MySQL内连接(inner join on) MySQL的内连接使用inner join on,它的效果跟使用where是一样的,如果联结的是两个表,那么需要左右的条件或者说字段是需要完全匹配的. 来看个例子:有两张表customers客户表和orders订单表,外键是cust_id,我们需要知道哪些客户有订单 select customers.cust_id,orders.order_num from customers , orders where customers.cust_i

SQL Server中内连接和外连接的区别

假设一个数据库中有两张表,一张是学生表StudentInfo,一张是班级表ClassInfo,两张表之间用ClassId字段进行关联. 如果用内连接,正常的写法是这样的: Select StudentInfo.*,ClassInfo.* from StudentInfo join ClassInfo on StudentInfo.ClassId=ClassInfo.ClassId 用这种写法不会出现笛卡尔积,但是内连接是允许省略连接条件的,也就是可以省略掉on后面的内容,所以如果写成这样: Se

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

SQL连接可以分为内连接.外连接.交叉连接. 数据库数据:             book表                                          stu表 1.内连接 1.1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列. 1.2.不等值连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值.这些运算符包括>.>=.<=.<.!>.!<和<&g

SQL SERVER 多表操作 内连接、外连接

MSSQL 数据库分为 自然连接.内连接.外连接 1.自然连接和内连接基本相同.不同之处在于,自然连接“=”两侧的列属性值必须相同,内连接可以不同,只要读取数据相同即可. 自然连接 eg. select worker.职工号,depart.部门 from worker,depart where worker.部门编号 = depart.部门编号 2.内连接.一般使用INNER JOIN 关键字来表示内连接,INNER不是必须的可以不写.除了JOIN 关键字,还必须使用ON 或者using关键字

SQL中的连接可以分为内连接,外连接,以及交叉连接 。

1. 交叉连接CROSS JOIN 如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积: 举例,下列A.B.C 执行结果相同,但是效率不一样: A:SELECT * FROM table1 CROSS JOIN table2 B:SELECT * FROM table1,table2 C:select * from table1 a inner join table2 b A:select a.*,b.* from table1 a,table2