2016-06-02 2 views
0

Schaffung Ich habe eine Tabelle namens Studenten bekam:SQL: Was ist bedeutet das UNIQUE, wenn ein Primärschlüssel

+------------+------------+-----------+---------------------+---------------------+ 
| student_id | first_name | surname | email    | reg_date   | 
+------------+------------+-----------+---------------------+---------------------+ 
|   1 | Emily  | Jackson | [email protected] | 2012-10-14 11:14:13 | 
|   2 | Daniel  | ALexander | [email protected] | 2014-08-19 08:08:23 | 
|   3 | Sarah  | Bell  | [email protected]  | 1998-07-04 13:16:32 | 
|   4 | Alex  | Harte  | [email protected] | 1982-06-14 00:00:00 | 
+------------+------------+-----------+---------------------+---------------------+  

Wenn Sie die Tabelle erstellen:

CREATE TABLE students(
-> student_id INT NOT NULL AUTO_INCREMENT, 
-> first_name VARCHAR(30) NOT NULL, 
-> surname VARCHAR(50) NOT NULL, 
-> email VARCHAR(200) NOT NULL, 
-> reg_date DATETIME NOT NULL, 
-> PRIMARY KEY (student_id), 
-> UNIQUE (email)); 

Was bedeutet die ‚UNIQUE (E-Mail) 'bedeuten? Bedeutet es, wenn der Primärschlüssel nicht eindeutig ist, sehen Sie sich die E-Mail an, um zu sehen, ob diese stattdessen eindeutig ist? Oder etwas anderes?

Dank

+4

es bedeutet, dass ein bestimmte Wert in diesem Feld nur einmal in der gesamten Tabelle erscheinen. das heißt, Sie können nicht zwei + Benutzer mit 'president @ whitehouse.gov' als ihre Adresse haben. –

+0

Mögliches Duplikat von [Unterschied zwischen Schlüssel, Primärschlüssel, eindeutigem Schlüssel und Index in MySQL] (http://stackoverflow.com/questions/3844899/difference-between-key-primary-key-unique-key-and-index-) in-mysql) –

+1

@Marc, sollten Sie das als Antwort posten. – Brad

Antwort

2

Das UNIQUE Schlüsselwort erstellt eine eindeutige Einschränkung auf den Spalten, die in der Argumentliste (in diesem Fall email) erwähnt werden. Es stört den Primärschlüssel nicht. Es wird eindeutige Werte in der E-Mail-Spalte erzwingen, dh mit einer Ausnahme fehlschlagen, wenn eine Zeile gleich INSERT ed ist (oder UPDATE d), die mit einer vorhandenen Zeile kollidieren würde.

Ein Primärschlüssel (standardmäßig) impliziert eine eindeutige Einschränkung. Wenn Sie student_id als Ihren Primärschlüssel festlegen, verwaltet das RDBMS automatisch auch eindeutige Werte in dieser Spalte für Sie.

Weiterführende Literatur: http://www.w3schools.com/sql/sql_unique.asp