数据库sql语句如何设置外键

什么是外键

在关系型数据库中,一个表(称作子表或从表)的字段,可以参考另外一个表中的主键(称作主表或父表)的字段,这种字段就是外键。

可以理解为,一个表的外键字段指向另外一个表的主键字段,这样就可以在两个表之间建立关系。通过这个关系,可以方便地进行查询和操作。

如何设置外键

创建表时设置外键

在创建表时,可以通过约束的方式来设置外键。创建表语句如下:

CREATE TABLE t_goods (

id INT PRIMARY KEY,

goods_name VARCHAR(20),

category_id INT,

FOREIGN KEY (category_id) REFERENCES t_category(id)

);

CREATE TABLE t_category (

id INT PRIMARY KEY,

category_name VARCHAR(20)

);

以上的代码中,t_goods表中的category_id字段为外键,参考了t_category表中的id字段。关联的sql语句是:FOREIGN KEY (category_id) REFERENCES t_category(id)。

这种方式可以保证插入数据时,category_id的取值只能是t_category表中已存在的id值(否则会报错)。

已存在的表中添加外键

在已经存在的表中添加外键,必须满足两个表中的对应字段类型、长度等必须相同,同时字段名也必须一致。在MySQL中,可以通过修改表结构来添加外键。

例如,在t_goods表中添加外键,关联t_category表:

ALTER TABLE t_goods ADD FOREIGN KEY (category_id) REFERENCES t_category(id);

这条语句的含义是:将t_goods表的category_id字段设置为外键,并参考t_category表的id字段。

需要注意的是,已经存在的数据的category_id值,必须与t_category表中id字段的值一致,否则也会报错。

外键的作用

外键可以用来保证数据的引用关系的正确性。

例如,t_goods表中的category_id字段参考t_category表中的id字段。这样,在插入t_goods表数据时,如果插入的数据的category_id在t_category表中不存在,就会报错,保证数据的正确性。

同时,外键还可以用来实现相关的查询,以及级联更新和级联删除等功能。

外键的类型

MySQL中的外键有两种类型:普通外键和唯一外键。

普通外键即前面介绍的,在创建表或者修改表结构时设置的外键。

唯一外键则是指一个表中的字段不仅唯一,同时还满足参考其他表的主键的要求。在MySQL中,可以通过给字段加上UNIQUE和FOREIGN KEY约束来实现唯一外键。例如:

CREATE TABLE t_users (

id INT PRIMARY KEY,

name VARCHAR(20) UNIQUE,

city_id INT,

FOREIGN KEY (city_id) REFERENCES t_cities(id)

);

CREATE TABLE t_cities (

id INT PRIMARY KEY,

city_name VARCHAR(20)

);

以上代码中,t_users表中的name字段加上了UNIQUE约束,变为唯一外键。

外键的优缺点

优点

保证数据的引用关系的正确性。

提供相关的查询功能。

提供级联更新和级联删除等功能。

缺点

外键的查询和操作效率较低。

外键会限制数据的修改和删除操作,增加了维护的复杂度。

外键的约束可能会造成死锁等问题。

总结

外键是关系型数据库中一个重要的概念,它可以用来保证数据的引用关系的正确性,提供相关的查询和操作功能。在MySQL中,外键分为普通外键和唯一外键两种类型。外键的设置有助于数据的完整性和一致性维护,但同时也会带来一些约束和限制。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签