美文网首页
外键约束

外键约束

作者: 简单可靠才可信 | 来源:发表于2019-12-06 15:57 被阅读0次

    FOREIGN KEY(将要设置为外键的字段) REFERENCES 表名(要依赖的主键)

    这里是创建一张家族表
    CREATE TABLE `family` (
          `name` VARCHAR(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名字',
          `exp` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '经验',
          `notice` VARCHAR(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '公告',
          `board` VARCHAR(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '黑板',
          PRIMARY KEY (`name`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    -- name:名称,varchar类型表示,长度限制32位,这里说明一下varchar没有占位符,
    -- char定义是固定长度的,即使不足也会使用空格填充
    -- utf8mb4_unicode_ci是指字符编码形式,此编码是基于标准的Unicode来排序和比较,
    -- 能够在各种语言之间精确排序
    -- COMMENT是添加说明的关键字
    -- INT UNSIGNED是指使用无符号int类型,不能出现负数
    -- PRIMARY KEY设置主键,这里可以设置多个主键,以逗号分隔
    

    ENGINE=InnoDB这里的这个代码意思指使用InnoDB数据库引擎(InnoDB用于事务处理)

    DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci这里的代码含义指使用默认的字符集和默认的字符编码形式

    这里是创建一张家族历史表
    CREATE TABLE `familyhistory` (
          `hid` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '历史id',
          `name` VARCHAR(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '家族名字',
          `msg` VARCHAR(256) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作信息',
          PRIMARY KEY (`hid`, `name`),
          CONSTRAINT `familyhistory_ibfk_1` FOREIGN KEY (`name`) REFERENCES `family` (`name`) ON DELETE CASCADE
        ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    

    CONSTRAINT:约束关键字
    CONSTRAINT `familyhistory_ibfk_1`含义是创建约束名为familyhistory_ibfk_1
    FOREIGN KEY (`name`)含义是创建外键name
    REFERENCES `family` (`name`)意思是参考family表中的主键name
    ON DELETE CASCADE这条命令是做级联删除,意思是删除参考值时,约束值自动删除

    相关文章

      网友评论

          本文标题:外键约束

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