什么';在MySQL中同时使用自动增量和主键有什么意义?
在MySQL中,我理解如下什么';在MySQL中同时使用自动增量和主键有什么意义?,mysql,sql,primary-key,auto-increment,Mysql,Sql,Primary Key,Auto Increment,在MySQL中,我理解如下 AUTO_INCREMENT:用于使INT值在用户每次创建行时自动增加 主键:用于使值在该表中唯一 然而,在定义id时,我经常看到它们一起使用 我不理解将自动增量与主键一起使用的意义,因为自动增量本身会使id唯一 在创建id时,它们一起使用有什么原因吗?您理解正确,但它们做的事情不同 PRIMARY KEYwithAUTO_INCREMENT表示我们希望此列在值上不重复,如果我们没有设置值,它将自动增加 但是我们只设置AUTO_INCREMENT怎么样?这只意味着
AUTO_INCREMENT
:用于使INT
值在用户每次创建行时自动增加
主键
:用于使值在该表中唯一
然而,在定义id
时,我经常看到它们一起使用
我不理解将自动增量
与主键一起使用的意义,因为自动增量
本身会使id
唯一
在创建id
时,它们一起使用有什么原因吗?您理解正确,但它们做的事情不同
PRIMARY KEY
withAUTO_INCREMENT
表示我们希望此列在值上不重复,如果我们没有设置值,它将自动增加
但是我们只设置AUTO_INCREMENT
怎么样?这只意味着如果我们不设置值,它将自动增加。但是没有确保该值是唯一的。主键有三个属性:
它是独一无二的
它是非空的
每张桌子只有一张
将密钥定义为主键意味着它也应该用于外键引用
此外,MySQL通过主键对数据进行集群。因此,该声明指示新行位于表的“末尾”——这意味着与数据页上最近的插入相邻
此外,可以通过各种方式创建自动递增id的重复值。一种方法是可以重置增量计数器,从而导致重复。MySQL在并发更新的副本上应该是线程安全的,但是已经报告了错误。作为主键
,表中不允许有重复项。自动增量
不会使列唯一。如果缺少,则仅在创建行时“自动”填充值。但您可以稍后更新这些值,也可以通过显式提供值来创建行
主键
拒绝任何可能导致两个不同条目存储相等值的修改sql语句。因此,它保证您的数据库处于正确的状态。我仍然没有得到“将密钥定义为主键意味着它也应该用于外键引用”这一部分。这是强制性的吗?请你详细说明一下,以便我能清楚地理解好吗?@Poream3387。你知道什么是外键引用吗?哦,是的,我知道什么是外键。你是说如果我要用外键引用某个键,它必须是被正确引用的主键?@Poream3387。不幸的是,它不必如此。但最好的做法是只将主键用于外键引用。哦,这就是你在文章中的意思!谢谢