在MySQL中,建表时可以利用外键约束来保证数据完整性。
首先,建立主表(即包含外键的表)和从表(即被引用的表)。主表中需要建立一个字段作为外键,它将引用从表中的某个字段。
CREATE TABLE people (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT,country_id INT,FOREIGN KEY (country_id) REFERENCES countries(id));
在上面的代码中,people表中的country_id字段被设置成了外键,它将引用countries表中的id字段。
接下来,建立从表,并在其中建立被引用的字段。
CREATE TABLE countries (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50));
在以上代码中,countries表中的id字段将被people表中的country_id字段引用。
需要注意的是,如果外键引用的表或字段不存在,或者被引用的字段不是一个主键或唯一键,那么建立外键约束时将会失败。
当数据被插入到主表中时,如果引用的从表中不存在对应的记录,则会报错。
当然,外键也可以设置一些属性,比如ON DELETE CASCADE表示如果从表记录被删除,则主表中对应的记录也会被删除。
CREATE TABLE people (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT,country_id INT,FOREIGN KEY (country_id) REFERENCES countries(id) ON DELETE CASCADE);
这里需要注意的是,外键约束只能针对引擎支持的表类型,比如InnoDB,而对于MyISAM等表类型是不支持外键约束的。