赞
踩
外键是强制实施参照完整性的一种方式
子表中创建外键,引用父表中的键(通常为主键)。
外键创建有两种方法,一种是创建表(CREATE TABLE)的时候顺便把外键也创建了,一种是修改/维护表(ALTER TABLE)的时候创建了。
语法:
CREATE TABLE table_name
(
column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT fk_column
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES parent_table (column1, column2, ... column_n)
);
子表叫table_name,fk_column是子表中外键的名字,该外键引用父表中的column1, column2, … column_n字段。
语法:
ALTER TABLE table_name
ADD CONSTRAINT fk_column
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES parent_table (column1, column2, ... column_n);
同样的,子表叫table_name,fk_column是子表中外键的名字,该外键引用父表中的column1, column2, … column_n字段。
指当主表中的一条记录被删除,那么子表中所关联的记录也相应的自动删除。
两种为子表中的外键设置级联删除的方法:CREATE TABLE 和 ALTER TABLE。
语法:
CREATE TABLE table_name
(
column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT fk_column
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES parent_table (column1, column2, ... column_n)
ON DELETE CASCADE
);
看得出来,和用CREATE TABLE创建外键的语法基本一样,就是最后多了一句“ON DELETE CASCADE”。顺便学习一下cascade的意思:
cascade 英[kæˈskeɪd] 美[kæˈskeɪd]
n. 大量; 小瀑布(尤指一连串瀑布中的一支); 倾泻; 流注; 大簇的下垂物; 倾泻(或涌出)的东西;
vi. 倾泻; 流注; 大量落下; 大量垂悬;
我自己意会一下,“ON DELETE CASCADE”大概意思是在上流(父表)水流(被引用的键的某条记录)开始倾泻(被删掉)之后,下流(子表)的水流(对应的外键的该条记录)就会被冲刷(也被删了)。
语法:
ALTER TABLE table_name
ADD CONSTRAINT fk_column
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES parent_table (column1, column2, ... column_n);
ON DELETE CASCADE;
类似的,加了一句on delete cascade。
删除子表中的外键字段。
w3cschool讲了两种方法:
alter table "表名" drop constraint "外键名"
或
alter table "表名" drop primary key
但是总觉得第二种方法是删除主键用的。查了一些文章,大家删除外键都是用的第一个方法,所以这里记得第一个就行了。
我的理解就是让外键失效。
语法:
ALTER TABLE table_name
DISABLE CONSTRAINT fk_column;
被禁用的外键是,表table_name的外键fk_column。
好好理解,不愿再解释了。语法:
ALTER TABLE table_name
ENABLE CONSTRAINT fk_column;
这一章就是讲外键的“生平”,从出生到去世,还有中途偶尔玩消失又重新出现,语法都蛮简单的,主要就是理解外键干嘛的和级联是怎么回事就行了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。