2016-12-01 72 views
-1

我創建MySQL中的表下面列是否用於創建表索引的列隱含地爲UNIQUE?

create table Students (
     id varchar(32) not null, 
     name varchar(200), 
     key1 varchar(450), 
     key2 varchar(255), 
     key3 varchar(255), 
     key4 varchar(255) 
) 

現在,我已經創建的索引此表作爲

create index Students_key_inx on Students (key1(255)); 

現在,我並沒有提及key1的唯一性。既然,我相信索引列應該有唯一的值,那麼MYSQL會自動執行唯一性嗎?意思是,我不能在Students中插入key1的重複值嗎?

+1

您爲什麼認爲唯一的關​​鍵字存在? – e4c5

+0

@ e4c5我知道唯一的關鍵字及其用法,我所要求的只是如果索引暗中執行它 – SimpleGuy

+0

簡單的問題,使兩個插入找出 – e4c5

回答

2

創建索引不強制唯一性。創建唯一指數的作用:

create unique index unq_students_key1 on Students (key1(255)); 
1

嘗試這樣的:

CREATE UNIQUE INDEX student_key1 ON Students (key1); 
0

定義(簡體)

  • 指數:用來存儲在列中的值的有序集合構建該指數。這有助於rdbms在表中查找特定值,而不需要檢查表本身中的數據(可以按任何順序或不以任何方式進行排序,並且通常需要更多的IO操作)
  • 獨特:This是一個CONSTRAINT,它定義了哪些數據可以存儲在數據庫中的規則。

所以這些是不同的概念,你必須明確地告訴你是否想要一個唯一的索引。另請注意,NULL值被視爲不同的值。

相關問題