外键和内外左右连接的基础知识
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)
?
查询结果如下:
?
1mysql的外键相关知识
mysql的外键有三种,如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表。外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常的维护工作更加轻松。常见的外键 有级联(cascade)方式,置空(set null)方式及禁止(no action / restrict)方式
a测试级联方式:
?
删除时test222r中的2、3记录级联删除
更新时test222的1记录的groupid级联修改为2
b测试置空(set null)方式
?
删除是导致test333中的2、3记录的groupid被设置为NULL、
更新时导致t_user中的1记录的groupid被设置为NULL
c测试禁止(no action / restrict)方式
?
删除时从表中有相关引用,因此主表中无法删除
更新时从表中有相关引用,因此主表中无法修改
在MySQL中,restrict方式与no action方式作用相同。
2 oracle的外键
外键是该表是另一个表之间联接的字段 ,必须为另一个表中的主键 用途是确保数据的完整性。它通常包括以下几种:
A实体完整性,确保每个实体是唯一的(通过主键来实施)
B域完整性,确保属性值只从一套特定可选的集合里选择
C关联完整性,确保每个外键或是NULL(如果允许的话)或含有与相关主键值相配的值
下面是一个测试例子,如何建立两个表的外键
?
内连接:把两个表中数据对应的数据查出来
外连接:以某个表为基础把对应数据查出来
全连接是以多个表为基础
首先插入如下测试数据:
?
内连接,inner join,join 查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的
列值。
?
?
定义:在内连接的基础上,还包含两个表中所有不符合条件的数据行,并在其中的左表、和右表列填写NULL
关键字:FULL JOIN
?
(四) 交叉连接
定义:将两个表的所有行进行组合,连接后的行数为两个表的乘积数。(笛卡尔积)
关键词:CROSS JOIN
格式:FROM 表名1 CROSS JOIN 表名2
----交叉连接(数据量=M*N)
?
?
相关文章推荐
- JDBC 基础知识(一) + 各种数据库连接
- Delphi7 中使用ADO连接数据库基础知识学习
- 左右内外全交叉连接查询总结
- SQL Server 连接基础知识
- (基础知识)Oracle中外键不加索引?
- 数据库左右内外连接(详细,易懂)
- 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—基础知识篇
- 【Linux基础学习之四】文件系统的基础知识总结(主要目录结构、文件类型、mount、硬连接)
- android学习中关于Textview,Button,EditText,连接的设置,Intent,Activity不同状态等的一系列基础知识点
- MongoDB Java驱动连接基础知识
- 数据库左右内外连接
- (数据库连接) SQL Server 连接基础知识
- PHP连接数据库基础知识及易错点
- MySQL基础9-主键约束、外键约束、等值连接查询、一对一和多对多关系
- JDBC(1)JAVA连接数据库之 基础知识学习
- HTTP权威指南-基础知识-连接管理与HTTP结构
- 左右内外全交叉连接查询总结
- 两个表用HQL语句进行左右连接,前提是不是两个表需要有主外键关系?
- (Java 基础知识) Java 连接数据库
- CSS基础知识-五(CSS定位、左右布局方法)