mysql左右连接和外键关联_外键和内外左右连接的基础知识

原文: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)

查询结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值