您的位置:首页 > 其它

外键和内外左右连接的基础知识

2013-08-26 17:31 183 查看
原文:http://www.2cto.com/database/201307/232324.html
1mysql的外键相关知识
mysql的外键有三种,如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表。外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常的维护工作更加轻松。常见的外键 有级联(cascade)方式,置空(set null)方式及禁止(no action / restrict)方式

a测试级联方式:

?
这种情况下无法插入,用户组3不存在,与参照完整性约束不符

删除时test222r中的2、3记录级联删除

更新时test222的1记录的groupid级联修改为2

b测试置空(set null)方式

?
无法插入,用户组3不存在,与参照完整性约束不符
删除是导致test333中的2、3记录的groupid被设置为NULL、

更新时导致t_user中的1记录的groupid被设置为NULL

c测试禁止(no action / restrict)方式

?
插入时无法插入,用户组3不存在,与参照完整性约束不符
删除时从表中有相关引用,因此主表中无法删除

更新时从表中有相关引用,因此主表中无法修改

在MySQL中,restrict方式与no action方式作用相同。

2 oracle的外键
外键是该表是另一个表之间联接的字段 ,必须为另一个表中的主键 用途是确保数据的完整性。它通常包括以下几种:

A实体完整性,确保每个实体是唯一的(通过主键来实施)
B域完整性,确保属性值只从一套特定可选的集合里选择
C关联完整性,确保每个外键或是NULL(如果允许的话)或含有与相关主键值相配的值

下面是一个测试例子,如何建立两个表的外键

?
3数据库内连接外连接左连接右连接

内连接:把两个表中数据对应的数据查出来
外连接:以某个表为基础把对应数据查出来
全连接是以多个表为基础

首先插入如下测试数据:

?
(一) 内连接

  内连接,inner join,join 查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的
列值。

?
(二) 外连接 (左连接、右连接) 

?
(三) 完全连接()
定义:在内连接的基础上,还包含两个表中所有不符合条件的数据行,并在其中的左表、和右表列填写NULL
关键字:FULL JOIN

?
查询的时候mysql是不支持的

(四) 交叉连接
定义:将两个表的所有行进行组合,连接后的行数为两个表的乘积数。(笛卡尔积)
关键词:CROSS JOIN
格式:FROM 表名1 CROSS JOIN 表名2 

----交叉连接(数据量=M*N)

?
查询结果如下:

?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: