mysql 外键约束 外键索引吗_外键必须是在MySQL中的索引?

bd96500e110b49cbb3cd949968f18be7.png

I've just created my first mySQL table on my own (other than using Joomla, Wordpress, etc.) and I am MS SQL developer for years but normally I can easily create a foreign key in MS SQL but I came across a difficulty or lack of knowledge here.

Here is my tables :

users

user_id int primary auto_increment

username varchar(20)

password varchar(20)

posts

post_id in primary auto_increment

title varchar(100)

message text

user_id int

When I try to add a foreign key to users which refers to posts->user_id, I cannot see the posts->user_id option in the option list Relation_view window on mySQL panel.

I am wondering whether I should define posts->user_id as Index or something? If so, why?

解决方案

Short answer: Yes, MySQL forces you to index foreign key.

InnoDB requires indexes on foreign keys and referenced keys so that foreign key checks can be fast and not require a table scan.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL约束是用来保持数据完整性的重要机制之一。它可以用于定义表之间的关系,并确保这些关系在数据操作时得到保持。下面是一些关于MySQL约束的重要信息: 1. 约束定义:在创建表时,可以使用FOREIGN KEY关字来定义约束约束指定了一个或多个列,这些列的值必须在另一个表存在。 2. 关联表:在约束,通常有一个称为主表(referenced table)和一个称为从表(referencing table)。主表包含被引用的列,从表包含引用主表列的列。 3. 参照完整性:约束可以确保数据的参照完整性。这意味着从表列只能包含主表已存在的值,或者为NULL(如果允许)。 4. 更新和删除操作:约束还可以指定更新和删除操作。在更新或删除主表的值时,可以选择级联更新或级联删除从表的相关行,以保持数据的一致性。 5. 索引:为了提高约束的性能,MySQL会自动为列创建索引。这样可以加快查找和匹配操作。 6. 约束名称:在定义约束时,可以为其指定一个名称。这样可以方便地进行管理和修改。 需要注意的是,约束只能应用于InnoDB存储引擎,其他存储引擎如MyISAM不支持约束。此约束的使用需要注意数据的插入顺序,以避免违反约束而导致的错误。 这些是关于MySQL约束的一些基本信息,希望对你有所帮助!如果你还有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值