有人能解释Mysql的主键、唯一键和索引键之间的区别吗?你能在不同的情况下解释每一种情况吗??
发布于 2013-12-20 08:31:16
是的,这些是不同的。
键或索引指的是正常的非唯一索引。允许索引的非不同值,因此索引可以在索引的所有列中包含具有相同值的行。这些索引不对数据强制执行任何限制,因此它们仅用于确保某些查询能够快速运行。
唯一是指索引的所有行都必须是唯一的索引。也就是说,对于此索引中的所有列,同一行可能没有与另一行相同的非空值。除了用于加速查询之外,还可以使用唯一索引来强制限制数据,因为数据库系统不允许在插入或更新数据时破坏这一不同的值规则。
数据库系统可能允许将唯一索引应用于允许空值的列,在这种情况下,如果两行都包含空值,则允许它们是相同的(这里的基本原理是,NULL被认为与其本身不相等)。但是,根据应用程序的不同,您可能会发现这是不可取的:如果您希望阻止这种情况,则应该在相关列中不允许空值。
主索引的作用与唯一索引完全一样,只是它总是被命名为“主索引”,而且表上可能只有一个索引(而且应该始终有一个索引;尽管有些数据库系统没有强制执行这个索引)。主索引旨在作为唯一标识表中任何行的主要手段,因此不应在任何允许空值的列上使用它,而不应使用唯一索引。主索引应位于足以唯一标识行的最小列数上。通常,这仅仅是一个列,包含一个唯一的自动递增号,但是如果还有什么可以唯一地识别一行,比如国家列表中的“国家代码”,你可以用它代替。
一些数据库系统(如MySQL的InnoDB)将按表记录在主索引中的顺序存储在磁盘上。
发布于 2013-12-20 08:30:10
主表是表的一个列的值,或者一个表的多个列的值的组合,我们可以用它来标识每一行。例如,让我们有一个表Customers,其中包含ID int、FirstName varchar(50)、LastName(50)列。然后ID列可以用于标识用户,因此它可以用作该表的PK。只有一个客户,如果存在的话,使用ID = 4或ID = 10等。
Unique是表的列的值,对于每个单独的记录都应该具有唯一的值。
索引键是表的列或列的组合,使对表的查询执行速度更快。它是有用的,当一个表有很多记录,甚至一个简单的查询都需要很长的时间才能完成。
https://stackoverflow.com/questions/20699225
复制相似问题