Mysql外键的使用

MySQL外键(请确保数据库是innodb类型)网上有很多介绍的文章,这里我就凭自己的理解再次整理了下,废话不多说,直入正题哈.
外键的作用:

保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。使两张表形成关联,外键只能引用外表中列的值!

我们来建两个表

 1 CREATE TABLE `example1` (
 2   `stu_id` int(11) NOT NULL DEFAULT '0',
 3   `name` VARCHAR(11) NOT NULL DEFAULT '',
 4   `course_id` int(11) NOT NULL DEFAULT '0',
 5   `grade` float DEFAULT NULL,
 6   PRIMARY KEY (`stu_id`,`course_id`)
 7 ) engine=INNODB;
 8 CREATE TABLE `example2` (
 9   `id` int(11) NOT NULL,
10   `stu_id` int(11) DEFAULT NULL,
11   `course_id` int(11) DEFAULT NULL,
12   PRIMARY KEY (`id`),
13   KEY `f_ck` (`stu_id`,`course_id`),
14   CONSTRAINT `f_ck` FOREIGN KEY (`stu_id`, `course_id`) REFERENCES `example1` (`stu_id`, `course_id`)
15 ) engine=INNODB;
16 insert into example1 (stu_id,name,course_id,grade)values(1,'baidu',1,97.5),(2,'google',2,89);
17 insert into example2 (id,stu_id,course_id)values(1,1,1),(2,2,2); 

example1表,里面包含stu_id学号,name姓名,course_id课程号,grade分数

example2表,里面包含id,stu_id学号,course_id课程号,然后建立外键

分别插入数据到两个表中。

我们把example2中的stu_id和course_id称为example2表的外键,example1是父表,example2是子表,两个表形成关联,必须子表的数据删除后,才能删除父表中的对应数据

现在我们来删除example1中的一条数据

猜你喜欢

转载自www.cnblogs.com/phpper/p/8978685.html