传智mysql 笔记_传智韩忠康mysql课程笔记3(吐血整理).pdf

外键 foreign key

2013 年 4 月 17 日星期三

09:48

概念:

如果一个实体的( student ) 的某个字段 (student:class_id) ,

指向(引用)另个实体 (class) 的主键( class:class_id) ,

就称 Student 实体的 class_id 是外键。

被指向的实体,称之为 主实体(主表),也叫父实体(父表)。 class

负责指向的实体,称之为 从实体(从表),也叫子实体(子表)。 Student

作用:

保证数据的完整性。

用于约束处于关系内的实体。

增加子表记录时,是否有与之对应的父表记录。

在删除或者更新主表记录时,从表应该如何处理相关的记录。

定义一个外键:

在从表上,增加一个外键字段,指向主表的主键。

使用关键字 foreign key

foreign Key ( 外键字段) references 主表名 ( 关联字段 ) [主表记录删除时的动作 ]

[主表记录更新时的动作 ]

设置级联操作:

在主表数据发生改变时,与之关联 的从表数据应该如何处理:

主表更新:

主表删除:

使用关键字:

On update

On delete 来标识。

允许的级联动作:

Cascade: 关联操作,如果主表被更新或删除,那么

从表也会执行相应的操作。

Set null:设置为 null ,表示从表不指向任何主表记录。

Restrict:拒绝主表的相关操作。

修改这个外键:

先删除,在新建。通过修改表完成。

Alter table tbl_name drop foreign key 外键标识 ;

删除外键需要通过指定外键名称达到目的:

可以通过在创建外键时,制定名称,

或者使用 mysql 默认生成的名称

Alter table tbl_name add foreign key 外键定义

Set null

关联字段设置为空:

测试删除:

Cascade

级联操作 ,执行对应的操作,删除后

子数据也删除,更新后子数据也更新

删除主表数据时,从表发生了删除:

restrict

测试 On update

指的是 只有主表的主键发生变化,才会对从表反生影响

存储引擎

2013 年 4 月 17 日星期三

11:29

表类型

默认的服务器表类型, 通过 my.ini

可以配置:

default-storage-engine=INNODB

在创建表,或者编辑表时,可以指定表的存储引擎:

利用表属性: engine 引擎类型

Engine myisam

Engine innodb

创建时,指定:

Innodb & myisam

区别

保存的文件的方式不同:

myisam ,一个表,三个文件

Tbl_name.frm 结构

Tbl_name.myd 数据

Tbl_name.myi 索引

innodb :

一个表一个文件:

Tbl_name.frm 结构

所有的 innodb 表,都使用相同的 innodb 存储表空间在保存数据和索引:

innoDB&myisam:

数据和索引的保存的文件不同: MyISAM 是分开保存,而 innodb 是保存到表空

MyIASM 支持索引压缩,而 Innodb 索引和数据是绑定保存不压缩,体积大。

Innodb 很多时候是行级锁,而 myisam 是表级锁, innodb 的并发高。

InnoDB 不支持 FULLTEXT 类型的索引(新版本的 Inno

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值