美文网首页
FOREIGN KEY

FOREIGN KEY

作者: SingleDiego | 来源:发表于2018-12-04 10:21 被阅读23次

一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。

本例中,有一张学生表和一张选课表。

学生表(students_tbl):

CREATE TABLE students_tbl(
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    schllo VARCHAR(40) NOT NULL,
    PRIMARY KEY ( id )
    );

+----+--------+--------------+
| id | name   | school       |
+----+--------+--------------+
|  1 | 小李   | 北京大学     |
|  2 | 小刘   | 中山大学     |
|  3 | 小张   | 清华大学     |
+----+--------+--------------+

选课表(subject_tbl):

CREATE TABLE subject_tbl(
    id INT NOT NULL AUTO_INCREMENT,
    subject_name VARCHAR(100) NOT NULL,
    students_id INT NOT NULL,
    PRIMARY KEY ( id ),
    FOREIGN KEY (students_id) REFERENCES students_tbl(id)
    );

+----+--------------+-------------+
| id | subject_name | students_id |
+----+--------------+-------------+
|  1 | C++          |           1 |
|  3 | Python       |           2 |
|  4 | Java         |           3 |
+----+--------------+-------------+

选课表(subject_tbl)中的 students_id 指向学生表(students_tbl)中的 id。

students_id 为选课表(subject_tbl)的外键(FOREIGN KEY)。

FOREIGN KEY 约束用于预防破坏表之间连接的动作。

FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

现在我们尝试插入一个非法的值:

mysql> INSERT INTO subject_tbl
    -> (subject_name, students_id)
    -> VALUES
    -> ("Java", 10);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key 
constraint fails (`test`.`subject_tbl`, CONSTRAINT `subject_tbl_ibfk_1` 
FOREIGN KEY (`students_id`) REFERENCES `students_tbl` (`id`))

可以看到外键约束的生效。

相关文章

  • Database 面试题

    Database mySQL: 设计场景 Foreign key: A FOREIGN KEY is a key ...

  • Sql知识

    主键外键 主键:PRIMARY KEY 外键:FOREIGN KEY 创建SQL FOREIGN KEY关于数据库...

  • mysql:FOREIGN_KEY_CHECKS

    SELECT @@FOREIGN_KEY_CHECKS; //查询外键约束SET FOREIGN_KEY_CHE...

  • FOREIGN KEY

    一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。 本例中,有一张学生表和一张选课表。...

  • 外键约束

    约束:NOT NULL,PRIMARY KEY,UNIQUE KEY,DEFAULT,FOREIGN KEY 约束...

  • MySQL-- foreign key(外键) 说明与实例

    一 : 什么是foreign key,及其完整性 foreign key就是表与表之间的某种约定的关系,由于这...

  • MYSQL ---2

    概要:Limit, offset, 索引、UNIQUE、PRIMARY KEY、FOREIGN KEY、视图 1、...

  • sql练习

    SET FOREIGN_KEY_CHECKS=0; -- ----------------------------...

  • MySQL数据库删除带外键约束表数据的方法

    删除数据库中数据时,提示因为设置了foreign key而无法修改删除,可以通过设置FOREIGN_KEY_CHE...

  • NO.3 引用完整性

    定义外键约束:FOREIGN KEY CREATE TABLE stu( sid int pirmary key,...

网友评论

      本文标题:FOREIGN KEY

      本文链接:https://www.haomeiwen.com/subject/xwopcqtx.html