Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3377
  • 博文数量: 2
  • 博客积分: 70
  • 博客等级: 民兵
  • 技术积分: 25
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-21 14:44
文章分类
文章存档

2012年(2)

我的朋友
最近访客

分类: Mysql/postgreSQL

2012-12-26 17:43:39

MySQL的MyISAM数据库引擎(默认的)不支持使用外键约束。
MySQL的InnoDB数据库引擎支持使用外键约束。

SQL的约束(主要是以下几种):
    NOT NULL 约束强制列不接受 NULL 值。
    UNIQUE 约束唯一标识数据库表中的每条记录。但每个表可以有多个 UNIQUE 约束,而 PRIMARY KEY 约束每个表只能有一个。
    PRIMARY KEY 约束唯一标识数据库表中的每条记录。每个表都应该有一个主键,并且每个表只能有一个主键。
    FOREIGN KEY 约束用于预防破坏表之间连接的动作。也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
    CHECK 约束用于限制列中的值的范围。
    DEFAULT 约束用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新记录。

外键约束的方式:
    CASCADE: 从父表删除或更新行,并且自动删除或更新子表中匹配的行。ON DELETE CASCADE 和 ON UPDATE CASCADE 都可用。
    SET NULL: 从父表删除或更新行,并设置子表中的外键列为 NULL 。如果外键列没有指定 NOT NULL 限定词,这就是唯一合法的。ON DELETE SET NULL 和 ON UPDATE SET NULL 子句被支持。
    NO ACTION: 在ANSI SQL-92标准中,NO ACTION 意味着不采取动作,就是如果有一个相关的外键值在被参考的表里,删除或更新主要键值的企图不被允许进行。InnoDB拒绝对父表的删除或更新操作。
    RESTRICT: 拒绝对父表的删除或更新操作。NO ACTION 和 RESTRICT 都一样(一些数据库系统有延期检查,并且 NO ACTION 是一个延期检查。在MySQL中,外键约束是被立即检查的,所以 NO ACTION 和 RESTRICT 是同样的),指定 RESTRICT(或者 NO ACTION )和忽略 ON DELETE 或者 ON UPDATE 选项的效果也是一样的。
    SET DEFAULT: 这个动作被解析程序识别,但InnoDB拒绝包含 ON DELETE SET DEFAULT 或 ON UPDATE SET DEFAULT 子句的表定义。

补充:
    主表( = 参考表 = 父表):在数据库中建立的表格即Table,其中存在主键(primary key)用于与其它表相关联,并且作为在主表中的唯一性标识。
    从表( = 参考表 = 子表):以主表的主键(primary key)值为外键 (Foreign Key)的表,可以通过外键与主表进行关联查询。从表与主表通过外键进行关联查询。
阅读(169) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:MySQL主从同步原理

给主人留下些什么吧!~~