MySQL中如何建立主表和外键关系
在数据库设计中,为了保持数据的一致性和完整性,通常需要建立主表和外键关系。本文将介绍如何在MySQL中建立主表和外键关系。
一、建立主表
在MySQL中,新建表的语句如下所示:
CREATE TABLE 表名 (字段名 数据类型 [NULL|NOT NULL] [DEFAULT 默认值] [AUTO_INCREMENT]);
其中,表名表示新建的表名称;字段名表示表中的字段名称;数据类型表示字段的数据类型,例如INT、VARCHAR等;NULL和NOT NULL用于表示字段是否可以为空;DEFAULT用于设置字段的默认值;AUTO_INCREMENT表示字段是自增长的。
例如,下面是新建一个名称为student的表,并设id字段为主键自增长:
CREATE TABLE student (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(32) NOT NULL,
age INT(11) NOT NULL,
PRIMARY KEY (id)
);
其中,PRIMARY KEY (id)表示将id字段设为主键。在一张表中,每个字段都必须唯一标识每一行数据,这个唯一标识就是主键。
二、建立外键
在MySQL中,外键是用于建立表与表之间关联的一种关系。通过外键,可以实现表之间数据的参照完整性。
外键可以在表中设置,也可以在表创建后添加。
例如,在建立student表的前提下,我们创建一个新的score表来记录学生的成绩情况:
CREATE TABLE score (
id INT(11) NOT NULL AUTO_INCREMENT,
stu_id INT(11) NOT NULL,
course_name VARCHAR(32) NOT NULL,
score INT(11) NOT NULL,
PRIMARY KEY (id),
INDEX (stu_id), # 添加索引
FOREIGN KEY (stu_id) REFERENCES student(id) ON DELETE CASCADE ON UPDATE CASCADE
);
在新建score表时,我们设置了stu_id字段为外键,这个字段参照了student表中的id字段,表示学生的成绩是跟学生信息相关的。通过添加FOREIGN KEY (stu_id) REFERENCES student(id)语句,我们建立了score表与student表之间的外键关系。
其中,INDEX (stu_id)是为外键添加索引,提高数据查询效率。ON DELETE CASCADE ON UPDATE CASCADE表示当student表中的数据发生修改、删除时,score表中与其关联的数据也会进行相应的操作。
三、删除外键
删除外键可以通过ALTER TABLE语句实现。例如,下面的语句将删除score表中的外键:
ALTER TABLE score DROP FOREIGN KEY fk_score_stu_id;
其中,fk_score_stu_id表示要删除的外键名称。
四、总结
本文介绍了如何在MySQL中建立主表和外键关系。在实际应用中,合理使用主表和外键关系可以有效地维护数据库的一致性和完整性,提高数据的可靠性和安全性。