外键的作用,主要有两个:
一个是让数据库自己通过外键来保证数据的完整性和一致性
一个就是能够增加ER图的可读性
外键定义:
[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
REFERENCES tbl_name (index_col_name, ...)
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
该语法可以在 CREATE TABLE 和 ALTER TABLE 时使用,如果不指定CONSTRAINT symbol,MYSQL会自动生成一个名字。
ON DELETE、ON UPDATE表示事件触发限制,可设参数:
RESTRICT(限制外表中的外键改动)
CASCADE(跟随外键改动)
SET NULL(设空值)
SET DEFAULT(设默认值)
NO ACTION(无动作,默认的);
1,删除外键:mysql> alter table student drop foreign key student_ibfk_1;//student_ibfk_1是外键别名(CONSTRAINT修饰的),不是字段名字.
2,增加外键:mysql> alter table student add constraint f1 foreign key (teacher_id) references teacher(id);//注意名字没有括号~
3,增加约束:mysql> alter table student add constraint f2 foreign key (teacher_id) references teacher (id) on delete cascade;
主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性
外键:是另一表的主键, 外键可以有重复的(新建表的时候可以), 可以是空值,用来和其他表建立联系用的。
一个是让数据库自己通过外键来保证数据的完整性和一致性
一个就是能够增加ER图的可读性
外键定义:
[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
REFERENCES tbl_name (index_col_name, ...)
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
该语法可以在 CREATE TABLE 和 ALTER TABLE 时使用,如果不指定CONSTRAINT symbol,MYSQL会自动生成一个名字。
ON DELETE、ON UPDATE表示事件触发限制,可设参数:
RESTRICT(限制外表中的外键改动)
CASCADE(跟随外键改动)
SET NULL(设空值)
SET DEFAULT(设默认值)
NO ACTION(无动作,默认的);
1,删除外键:mysql> alter table student drop foreign key student_ibfk_1;//student_ibfk_1是外键别名(CONSTRAINT修饰的),不是字段名字.
2,增加外键:mysql> alter table student add constraint f1 foreign key (teacher_id) references teacher(id);//注意名字没有括号~
3,增加约束:mysql> alter table student add constraint f2 foreign key (teacher_id) references teacher (id) on delete cascade;
主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性
外键:是另一表的主键, 外键可以有重复的(新建表的时候可以), 可以是空值,用来和其他表建立联系用的。