MYSQL 字段约束之外键约束的要求2020-11-18

MYSQL 字段约束之外键约束的要求
1,父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
2,数据表的存储引擎只能是InnoDB;
3,外键列和参考列必须具有相似的数据类型,其中数字的长度或是否有符号位必须相同,而字符长度则可以不同;
4,外键列和参照列必须创建索引。如果外键列不存在索引的话,MYSQL将自动创建索引。
5,查看索引:SHOW INDEXES FROM tab_name\G;

 corse | CREATE TABLE `corse` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `name` char(10) NOT NULL,
 PRIMARY KEY (`id`)
 ENGINE=InnoDB DEFAULT CHARSET=utf8 |


 CREATE TABLE ers(
 id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 username CHAR(10) NOT NULL,
 cid INT UNSIGNED,
 FOREIGN KEY (cid) REFERENCES corse (id)
 );


| ERS   | CREATE TABLE `ers` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` char(10) NOT NULL,
  `cid` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `cid` (`cid`),
  CONSTRAINT `ers_ibfk_1` FOREIGN KEY (`cid`) REFERENCES `corse` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |



mysql> SHOw INDEXes FROM ers\G;
*************************** 1. row ***************************
        Table: ers
   Non_unique: 0
     Key_name: PRIMARY
 Seq_in_index: 1
  Column_name: id
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
*************************** 2. row ***************************
        Table: ers
   Non_unique: 1
     Key_name: cid
 Seq_in_index: 1
  Column_name: cid
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null: YES
   Index_type: BTREE
      Comment:
Index_comment:
2 rows in set (0.00 sec)



mysql> SHOw INDEXes FROM corse\G;
*************************** 1. row ***************************
        Table: corse
   Non_unique: 0
     Key_name: PRIMARY
 Seq_in_index: 1
  Column_name: id
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
1 row in set (0.00 sec)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值