Ответ 1
Они одинаковы. Первичный ключ автоматически получил NOT NULL
.
Какой смысл добавлять NOT NULL
в поле первичного ключа? Первичный ключ уже не нулевой + уникальный.
Вот пример:
CREATE TABLE student (
id int(11) AUTO_INCREMENT NOT NULL,
name varchar(255),
PRIMARY KEY(id)
)
Почему бы не определить это так:
CREATE TABLE student (
id int(11) AUTO_INCREMENT,
name varchar(255),
PRIMARY KEY(id)
)
Они одинаковы. Первичный ключ автоматически получил NOT NULL
.
Вы спрашиваете, почему люди не хотят добавлять NOT NULL, когда это не нужно? Просто потому, что это хороший стиль, я думаю. И делает это явным для читателя.
NULL
не эквивалентен NULL
(поскольку NULL
указывает неизвестное или отсутствующее значение), поэтому вам будет разрешено иметь несколько записей с NULL
для идентификатора, хотя есть первичный ключ/уникальное ограничение, следовательно, использование NOT NULL
. Это, если MySql даже позволяет вам определить первичный ключ в поле с нулевым значением.
Кроме того, поскольку первичный ключ часто используется в чужом ключе в других таблицах, наличие одного или нескольких значений NULL
не имеет смысла.