mysql 约束( key constraints )
2010-07-29 20:35
387 查看
mysql支持的key约束只有主键约束(PRIMARY KEY),唯一键值(UNIQUE KEY)约束和外键约束(FOREIGN KEY)。
1.唯一键值约束
唯一键值索引类型不能是 FULLTEXT 或者 SPATIAL 类型。
(1).创建 UNIQUE KEY constraints
mysql> ALTER TABLE actor ADD UNIQUE KEY fname_actor (first_name,actor_id);
或者
mysql> CREATE UNIQUE INDEX fname_actor ON actor (first_name,actor_id);
mysql> ALTER TABLE actor ADD PRIMARY KEY (actor_id);
ps:主键只能在create table时指定,或由alter 来添加。用 create index 不能添加主键。
(2).删除 UNIQUE KEY constraints
mysql> ALTER TABLE actor drop KEY fname_actor;
或者
mysql> drop index fname_actor on actor;
2.外键约束( foreign key constraints )
外键约束只对InnoDB存储引擎有效。
外键约束可以由 CREATE TABLE 或者 ALTER TABLE 语句来创建。
简单外键约束定义 foreign key (field1) references other_table(fieldA).
复合外键约束定义 foreign key (field1,field2) references other_table(fieldA,fieldB).
ps:复合外键约束 只能关联一张表,如下是错误的:
foreign key (field1,field2) references other_table1(fieldA),other_table2(fieldB).
(1)创建
mysql> ALTER TABLE this_table ADD FOREIGN KEY (field1) REFERENCES ref_table (fieldA);
或者
mysql> ALTER TABLE this_table ADD CONSTRAINT fk_lastname FOREIGN KEY (last_name) REFERENCES other_table (last_name);
(2)删除
mysql> ALTER TABLE this_table DROP FOREIGN KEY fk_lastname;
3.改变存在外键约束的表数据时注意一些规则
当B表一个字段外键关联到A表中的某字段,这时更新、删除A表该字段时,有如下规则
(1)RESTRICT 不允许关联到的A表字段更新或者删除
(2)CASCADE 级联,当A表字段更新或者删除时,B表所关联的数据也相应的更新或者删除
(3)SET NULL 当A表中关联字段更新时B表相应字段更新,当A表关联字段删除时,B表中相应字段设为空
(4)NO ACTION 类似RESTRICT的规则
1.唯一键值约束
唯一键值索引类型不能是 FULLTEXT 或者 SPATIAL 类型。
(1).创建 UNIQUE KEY constraints
mysql> ALTER TABLE actor ADD UNIQUE KEY fname_actor (first_name,actor_id);
或者
mysql> CREATE UNIQUE INDEX fname_actor ON actor (first_name,actor_id);
mysql> ALTER TABLE actor ADD PRIMARY KEY (actor_id);
ps:主键只能在create table时指定,或由alter 来添加。用 create index 不能添加主键。
(2).删除 UNIQUE KEY constraints
mysql> ALTER TABLE actor drop KEY fname_actor;
或者
mysql> drop index fname_actor on actor;
2.外键约束( foreign key constraints )
外键约束只对InnoDB存储引擎有效。
外键约束可以由 CREATE TABLE 或者 ALTER TABLE 语句来创建。
简单外键约束定义 foreign key (field1) references other_table(fieldA).
复合外键约束定义 foreign key (field1,field2) references other_table(fieldA,fieldB).
ps:复合外键约束 只能关联一张表,如下是错误的:
foreign key (field1,field2) references other_table1(fieldA),other_table2(fieldB).
(1)创建
mysql> ALTER TABLE this_table ADD FOREIGN KEY (field1) REFERENCES ref_table (fieldA);
或者
mysql> ALTER TABLE this_table ADD CONSTRAINT fk_lastname FOREIGN KEY (last_name) REFERENCES other_table (last_name);
(2)删除
mysql> ALTER TABLE this_table DROP FOREIGN KEY fk_lastname;
3.改变存在外键约束的表数据时注意一些规则
当B表一个字段外键关联到A表中的某字段,这时更新、删除A表该字段时,有如下规则
(1)RESTRICT 不允许关联到的A表字段更新或者删除
(2)CASCADE 级联,当A表字段更新或者删除时,B表所关联的数据也相应的更新或者删除
(3)SET NULL 当A表中关联字段更新时B表相应字段更新,当A表关联字段删除时,B表中相应字段设为空
(4)NO ACTION 类似RESTRICT的规则
相关文章推荐
- mysql 外键,主键,唯一性约束
- MySQL入门3——约束及修改数据表
- mysql-完整性约束条件
- MySQL-Front 添加外键 约束
- [Mysql] 约束
- mysql oracle 删除外键约束
- MySQL 添加唯一约束
- 如何禁用和启用mysql外键约束
- MySQL(3)约束以及修改数据表
- mysql外键约束
- MySQL心得5-2--约束
- mysql的约束
- mysql 在表中添加多个外键/增加外键/级联约束
- Mysql外健约束on update,on delete
- Mysql外键约束设置[Mysql外键使用详细教程]
- mysql创建Bitmap_Join_Indexes中的约束与索引
- MySQL 查看约束,添加约束,删除约束 添加列,修改列,删除列
- MYSQL基础四--约束
- MySQL中的查询约束语句和主键、联合主键、外键
- Mysql字段操作—增加字段、删除字段、修改字段名、修改字段类型(约束条件)