SQL研习录(21)——外键约束(FOREIGN KEY)

SQL研习录(21)——外键约束(FOREIGN KEY)


版权声明

  • 本文原创作者:清风不渡
  • 博客地址:https://blog.csdn.net/WXKKang

一、外键约束

  外键,是指引用另一个表中的一列或多列,被引用的列应该具有主键约束或唯一性约束;外键用于建立两张表之间的连接,为了更好的理解外键的定义和作用,我们通过例子来学习吧,首先看下面两张表:

CREATE TABLE student(
	s_id varchar(50) NOT NULL PRIMARY KEY,
	s_name varchar(50) NOT NULL,
	s_gender varchar(50)
)

CREATE TABLE family(
	f_id varchar(50) NOT NULL PRIMARY KEY,
	s_id varchar(50) NOT NULL,
	f_name varchar(50) NOT NULL,
	f_relationship varchar(50)
)

  family表中的s_id列表示是属于哪位学生的家庭成员,该值必须是student表中的s_id值,这种情况下,学生(student)表被称为主表,家庭(family)表被称为从表。所以,我们可以利用外键(FOREIGN KEY)将family表中的s_id和student表中的s_id建立起联系,代码如下:

1、基本语法

  创建表(CREATE TABLE)时的外键(FOREIGN KEY)约束
  MySQL数据库中的语法如下:

CREATE TABLE family(
	f_id varchar(50) NOT NULL,
	s_id varchar(50) NOT NULL,
	f_name varchar(50) NOT NULL,
	f_relationship varchar(50),
	PRIMARY KEY (f_id),
	FOREIGN KEY (s_id) REFERENCES student (s_id)
)

  SQL Server / Oracle / MS Access数据库中的语法如下:

CREATE TABLE family(
	f_id varchar(50) NOT NULL PRIMARY KEY,
	s_id varchar(50) NOT NULL FOREIGN KEY REFERENCES student(s_id),
	f_name varchar(50) NOT NULL,
	f_relationship varchar(50),
)

  如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束则可使用下面的语法(MySQL / SQL Server / Oracle / MS Access):

CREATE TABLE family(
	f_id varchar(50) NOT NULL,
	s_id varchar(50) NOT NULL,
	f_name varchar(50) NOT NULL,
	f_relationship varchar(50),
	PRIMARY KEY (f_id),
	CONSTRAINT fk_name FOREIGN KEY (s_id) REFERENCES student (s_id)
)

  修改表(ALTER TABLE)时的外键(FOREIGN KEY)约束
当表已被创建时,如需在某一列创建 FOREIGN KEY 约束则可使用下面的语法(MySQL / SQL Server / Oracle / MS Access):

ALTER TABLE table_name  
ADD FOREIGN KEY (column_name)  
REFERENCES table_name(column_name)

如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束则可用下面的语法(MySQL / SQL Server / Oracle / MS Access):

ALTER TABLE table_name 
ADD CONSTRAINT fk_name
FOREIGN KEY (column_name)  
REFERENCES table_name(column_name)

  撤销外键(FOREIGN KEY)约束
  在MySQL数据库中撤销外键(FOREIGN KEY)约束使用下面的语法:

ALTER TABLE table_name
DROP FOREIGN KEY fk_name

  在SQL Server / Oracle / MS Access数据库中撤销外键(FOREIGN KEY)约束使用下面的语法:

ALTER TABLE table_name
DROP CONSTRAINT fk_name

  小结:

  • 从表里的外键通常为主表的主键
  • 从表里外键的数据类型必须与主表中主键的数据类型一致
  • 主表发生变化时应注意主表与从表的数据一致性问题
发布了81 篇原创文章 · 获赞 36 · 访问量 3344

猜你喜欢

转载自blog.csdn.net/WXKKang/article/details/103869053