Определение PRIMARY KEY в MySQL CREATE TABLE
Какая разница между этим кодом:
CREATE TABLE samples (
sampleid INT(11) NOT NULL AUTO_INCREMENT,
sampledate DATE NOT NULL,
location VARCHAR(25) NOT NULL,
PRIMARY KEY (sampleid)
)
ENGINE=InnoDB;
и это:
CREATE TABLE samples (
sampleid INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
sampledate DATE NOT NULL,
location VARCHAR(25) NOT NULL,
)
ENGINE=InnoDB;
код
Итак, отдельный оператор PRIMARY KEY или как часть определения столбца. Тот же вопрос для определения UNIQUE INDEX и UNIQUE в определении столбцов.
Ответы
Ответ 1
Второй синтаксис - это просто ярлык, позволяющий указать столбец и добавить в него индекс в одном предложении.
Это отлично работает в тех случаях, когда вы просто хотите создать столбец и добавить на него индекс.
Вам нужно будет использовать первый синтаксис, если вы хотите сделать что-то более сложное, например добавление индекса на основе нескольких столбцов, а не одного столбца, или если вы добавляете или изменяете индекс в существующем столбце; то есть вы не создаете столбец и индекс на нем одновременно.
Ответ 2
MySQL позволяет использовать директиву PRIMARY KEY, чтобы вы могли динамически устанавливать первичный ключ. Поставка PRIMARY KEY в качестве аргумента для конструктора может быть вызвана только при создании столбца. ПЕРВИЧНЫЙ КЛЮЧ (X), ПЕРВИЧНЫЙ КЛЮЧ (Y), ПЕРВИЧНЫЙ КЛЮЧ (Z) позволяет изменять первичные ключи при последующих запросах.
Ответ 3
То, что я вижу, это... Первый метод используется для создания составных клавиш. Хотя второй метод (более читаемый для меня) в основном используется, если в таблице есть только первичный ключ.
Второй метод нельзя использовать, если вы хотите реализовать составной ключ
Ответ 4
Есть много способов скинуть кошку, и более двух примеров - всего лишь 2 из них. Они идентичны. Нет никакой разницы.
Ответ 5
Они буквально одинаковы. Вот быстрый сайт, который показывает вам разные способы (3) сделать это. http://www.java2s.com/Code/SQL/Key/Defineanduseprimarykey.htm