• 技术文章 >数据库 >mysql教程

    mysql外键约束怎么创建

    我叫mt我叫mt2020-06-17 14:21:40原创1545

    我们可以在创建表时设置外键约束。

    在 CREATE TABLE 语句中,通过 FOREIGN KEY 关键字来指定外键,具体的语法格式如下:

    [CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…]
    REFERENCES <主表名> 主键列1 [,主键列2,…]

    举例:

    现在在 test_db 数据库中创建一个部门表 tb_dept1,表结构如下图所示:

    1c7950ce5c6bf8aabacf93caff5c545.png

    创建 tb_dept1 的 SQL 语句和运行结果如下所示。

    mysql> CREATE TABLE tb_dept1
        -> (
        -> id INT(11) PRIMARY KEY,
        -> name VARCHAR(22) NOT NULL,
        -> location VARCHAR(50)
        -> );
    Query OK, 0 rows affected (0.37 sec)

    创建数据表 tb_emp6,并在表 tb_emp6 上创建外键约束,让它的键 deptId 作为外键关联到表 tb_dept1 的主键 id,SQL 语句和运行结果如下所示。

    mysql> CREATE TABLE tb_emp6
        -> (
        -> id INT(11) PRIMARY KEY,
        -> name VARCHAR(25),
        -> deptId INT(11),
        -> salary FLOAT,
        -> CONSTRAINT fk_emp_dept1
        -> FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
        -> );
    Query OK, 0 rows affected (0.37 sec)
    
    mysql> DESC tb_emp6;
    +--------+-------------+------+-----+---------+-------+
    | Field  | Type        | Null | Key | Default | Extra |
    +--------+-------------+------+-----+---------+-------+
    | id     | int(11)     | NO   | PRI | NULL    |       |
    | name   | varchar(25) | YES  |     | NULL    |       |
    | deptId | int(11)     | YES  | MUL | NULL    |       |
    | salary | float       | YES  |     | NULL    |       |
    +--------+-------------+------+-----+---------+-------+
    4 rows in set (1.33 sec)

    以上语句执行成功之后,在表 tb_emp6 上添加了名称为 fk_emp_dept1 的外键约束,外键名称为 deptId,其依赖于表 tb_dept1 的主键 id。

    注意:从表的外键关联的必须是主表的主键,且主键和外键的数据类型必须一致。例如,两者都是 INT 类型,或者都是 CHAR 类型。如果不满足这样的要求,在创建从表时,就会出现“ERROR 1005(HY000): Can't create table”错误。

    推荐教程:mysql教程

    以上就是mysql外键约束怎么创建的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:mysql 外键约束
    上一篇:sql server无法连接服务器怎么办? 下一篇:MySQL Workbench 安装教程
    PHP编程就业班

    相关文章推荐

    • 分享MySQL中实用的几种SQL语句• MySQL 和 SQL Server 的区别?• mysql模糊查询语句是什么?• mysql索引类型介绍

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网