2013-12-20 54 views

回答

1

是這些不同

KEY或INDEX是指正常的非唯一索引。索引的非重疊值是允許的,因此索引可能包含索引所有列中具有相同值的行。這些索引不會對您的數據實施任何限制,因此它們僅用於確保某些查詢可以快速運行。

UNIQUE指索引中所有行必須唯一的索引。也就是說,對於此索引中的所有列,同一行可能不具有與另一行相同的非NULL值。除了用於加快查詢速度外,UNIQUE索引還可用於強制限制數據,因爲數據庫系統不允許在插入或更新數據時破壞此不同值規則。

您的數據庫系統可能允許將UNIQUE索引應用於允許NULL值的列,在這種情況下,如果兩行都包含NULL值,則允許兩行相同(此處的基本原理是NULL被認爲不相等本身)。但是,根據您的應用程序,您可能會發現這種情況不合需要:如果您希望防止出現這種情況,您應該在相關列中禁止使用NULL值。

PRIMARY的行爲與UNIQUE索引完全相同,只是它總是被命名爲「PRIMARY」,並且在表上可能只有一個(並且總是應該有一個;儘管一些數據庫系統不強制執行此操作)。 PRIMARY索引是作爲唯一標識表中任何行的主要手段,因此與UNIQUE不同,它不應用於任何允許NULL值的列。您的PRIMARY索引應該位於足以唯一標識一行的最小列數上。通常,這只是一列包含一個唯一的自動遞增數字,但如果還有其他任何可以唯一標識一行的列(如國家/地區列表中的「countrycode」),則可以使用該列。

某些數據庫系統(例如MySQL的InnoDB)將按照它們在PRIMARY索引中出現的順序在磁盤上存儲表記錄。

2

主要是一張表的一列的值或一個表的多個列的值的組合,我們可以識別每一行。例如,讓我們有一個表Customers與列ID int,FirstName varchar(50),LastName(50)。然後ID列可以用來標識用戶,因此它可以用作該表的PK。只有一個客戶(如果存在的話)與ID = 4ID = 10等。

唯一是表中的列的值,對於每個單獨的記錄應具有唯一值。

索引關鍵字是一個表或列的組合,使得對錶的查詢執行速度更快。當一個表有很多記錄,甚至一個簡單的查詢需要很長時間才能完成時,它是有用的。