2016-06-02 1 views
0

У меня есть таблица под названием студентов:SQL: Что делает UNIQUE означает, при создании первичного ключа

+------------+------------+-----------+---------------------+---------------------+ 
| 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 | 
+------------+------------+-----------+---------------------+---------------------+  

При создании таблицы:

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)); 

Что делает «UNIQUE (электронная почта)? Означает ли это, что первичный ключ не является уникальным, посмотрите на письмо, чтобы узнать, является ли это уникальным? Или что-то другое?

Благодаря

+4

это означает, что любое конкретное значение в этой области может появиться только один раз во всей таблице. это означает, что у вас не может быть двух + пользователей с 'president @ whitehouse.gov' в качестве их адреса. –

+0

Возможный дубликат [Разница между ключом, основным ключом, уникальным ключом и индексом в MySQL] (http://stackoverflow.com/questions/3844899/difference-between-key-primary-key-unique-key-and-index- in-mysql) –

+1

@Marc, вы должны опубликовать это как ответ. – Brad

ответ

2

UNIQUE ключевое слово создает уникальное ограничение на колоннах, которые упомянуты в списке аргументов (в данном случае, email). Это не мешает первичному ключу. Он будет применять уникальные значения в столбце электронной почты, то есть сбой с исключением, когда строка должна быть INSERT ed (или UPDATE d), которая столкнется с существующей строкой.

Первичный ключ (по умолчанию) подразумевает уникальное ограничение. Так как вы назначаете student_id как ваш первичный ключ, RDBMS также автоматически сохраняет уникальные значения в этом столбце для вас.

Дальнейшее чтение: http://www.w3schools.com/sql/sql_unique.asp

1

Это позволяет двигателю использовать его в качестве индекса в запросах и обеспечивает его уникальным, когда запись/s вставлены/обновлены; бросая нарушение unique key constraint, когда уже добавлено/обновлено уже существующее email.

Пример: http://sqlfiddle.com/#!9/7a0aee

Дополнительная информация: http://dev.mysql.com/doc/refman/5.7/en/partitioning-limitations-partitioning-keys-unique-keys.html

Смежные вопросы