认识sql——foreignKey

认识sql——foreignKey

这是dept表,主键id,

    CREATE TABLE test_dept (
        id INT(11) NOT NULL AUTO_INCREMENT,
        deptname VARCHAR(32),
        locadd VARCHAR(32),
        PRIMARY KEY (`id`)
    );

    +----------+-------------+------+-----+---------+----------------+
    | Field    | Type        | Null | Key | Default | Extra          |
    +----------+-------------+------+-----+---------+----------------+
    | id       | int(11)     | NO   | PRI | NULL    | auto_increment |
    | deptname | varchar(32) | YES  |     | NULL    |                |
    | locadd   | varchar(32) | YES  |     | NULL    |                |
    +----------+-------------+------+-----+---------+----------------+

这是emp表,主键id,外键deptid(references指向表名(主键名))

    CREATE TABLE test_emp (
        id INT(11) NOT NULL AUTO_INCREMENT,
        name VARCHAR(32),
        deptid INT(11),
        PRIMARY KEY (`id`),
        FOREIGN KEY (`deptid`) REFERENCES test_dept (`id`)
    );

    +--------+-------------+------+-----+---------+----------------+
    | Field  | Type        | Null | Key | Default | Extra          |
    +--------+-------------+------+-----+---------+----------------+
    | id     | int(11)     | NO   | PRI | NULL    | auto_increment |
    | name   | varchar(32) | YES  |     | NULL    |                |
    | deptid | int(11)     | YES  | MUL | NULL    |                |
    +--------+-------------+------+-----+---------+----------------+
  • 当这两个表创建成功后,就形成了有外键关联的表,一定程度耦合。
  • 向emp表插入数据时,属性deptid必须在dept表中有存在值,否则插入失败;
  • 同样,当emp表中尚有包含deptid属性的记录时,是无法删除操作的。

猜你喜欢

转载自blog.csdn.net/aimu_zs/article/details/80200180
今日推荐