任何人都可以解釋Mysql的主鍵,唯一鍵和索引鍵之間的區別。你能否在不同情況下解釋每一個? ?Mysql中的主鍵,唯一鍵和索引
回答
是這些不同
KEY或INDEX是指正常的非唯一索引。索引的非重疊值是允許的,因此索引可能包含索引所有列中具有相同值的行。這些索引不會對您的數據實施任何限制,因此它們僅用於確保某些查詢可以快速運行。
UNIQUE指索引中所有行必須唯一的索引。也就是說,對於此索引中的所有列,同一行可能不具有與另一行相同的非NULL值。除了用於加快查詢速度外,UNIQUE索引還可用於強制限制數據,因爲數據庫系統不允許在插入或更新數據時破壞此不同值規則。
您的數據庫系統可能允許將UNIQUE索引應用於允許NULL值的列,在這種情況下,如果兩行都包含NULL值,則允許兩行相同(此處的基本原理是NULL被認爲不相等本身)。但是,根據您的應用程序,您可能會發現這種情況不合需要:如果您希望防止出現這種情況,您應該在相關列中禁止使用NULL值。
PRIMARY的行爲與UNIQUE索引完全相同,只是它總是被命名爲「PRIMARY」,並且在表上可能只有一個(並且總是應該有一個;儘管一些數據庫系統不強制執行此操作)。 PRIMARY索引是作爲唯一標識表中任何行的主要手段,因此與UNIQUE不同,它不應用於任何允許NULL值的列。您的PRIMARY索引應該位於足以唯一標識一行的最小列數上。通常,這只是一列包含一個唯一的自動遞增數字,但如果還有其他任何可以唯一標識一行的列(如國家/地區列表中的「countrycode」),則可以使用該列。
某些數據庫系統(例如MySQL的InnoDB)將按照它們在PRIMARY索引中出現的順序在磁盤上存儲表記錄。
主要是一張表的一列的值或一個表的多個列的值的組合,我們可以識別每一行。例如,讓我們有一個表Customers
與列ID int
,FirstName varchar(50)
,LastName(50)
。然後ID列可以用來標識用戶,因此它可以用作該表的PK。只有一個客戶(如果存在的話)與ID = 4
或ID = 10
等。
唯一是表中的列的值,對於每個單獨的記錄應具有唯一值。
索引關鍵字是一個表或列的組合,使得對錶的查詢執行速度更快。當一個表有很多記錄,甚至一個簡單的查詢需要很長時間才能完成時,它是有用的。
- 1. MySQL的唯一鍵和索引
- 2. Sybase唯一索引和主鍵
- 3. 分區與主鍵和concatonated唯一索引的MySQL表
- 4. django中的主鍵和唯一鍵
- 5. MySQL:複合主鍵,關係表的唯一簡單索引
- 6. SQL Server中主鍵和唯一索引之間的區別
- 7. 索引和主鍵
- 8. InnoDB的唯一鍵和索引
- 9. mysql警告:MYSQL中同一字段的主鍵和索引
- 10. 非主鍵列MySQL索引
- 11. 多列唯一索引鍵
- 12. 唯一索引或唯一鍵?
- 13. 外鍵和主鍵Postgres和索引
- 14. 唯一性索引和約束/與主鍵的關係
- 15. 非唯一索引中的外鍵? (oracle)
- 16. 多索引中的多個唯一鍵
- 17. FuelPHP中的唯一鍵/索引
- 18. SQL。唯一和主鍵
- 19. MySQL:刪除主鍵會刪除唯一的約束和/或索引嗎?
- 20. 請確認我使用主鍵和唯一索引
- 21. 境界索引和主鍵
- 22. 主鍵和索引概念
- 23. 主鍵和聚集索引
- 24. MySql中的唯一鍵
- 25. 在沒有索引/主鍵/唯一字段的MySQL中提高查詢速度
- 26. MySQL主鍵列上的重複索引?
- 27. MySQL:非主鍵列上的索引
- 28. 關於SQL中的索引和主鍵?
- 29. PHP MySQL使用主鍵和唯一鍵在同一個表中複製一行...
- 30. 每個外鍵的唯一索引
感謝您發佈鏈接.. –