noder_ss
@noder_ss
Линуксоид-энтузиаст и SQL разработчик

Что такое PRIMARY KEY, CONSTRAINT, FOREIGN KEY, REFERENCES, INSERT INTO и для чего они нужны?

Изучаю MySQL на курсах и немного не понимаю некоторые строчки. Например PRIMARY KEY:
63eb5d59252ba025043311.png(Да, я хохол)
Не понимаю, что означает первичный ключ в смысле слова. Дальше:
63eb5dda59e71138227069.png(Для того чтобы указать, что поля таблицы ссылаются на другие.
таблицы нужно указать так называемое ограничение таблицы.

Указывается ограничение по следующей формуле:
CONSTRAINT имя_ограничение FOREIGN KEY (имя_поля-ключа)
REFERENCES название_таблицы(название_поля_на_которое_ссылается_ключ))

Как это "ограничение"? Кто может объяснить?
Дальше:
63eb5f64bd854558888888.png
(Для заполнения таблицы используется следующий синтаксис:
INSERT INTO название_таблицы(название_поля, название_поля, название_поля)
VALUES(значение, значение, значение);)
В каком смысле заполнение таблицы? Добавление новых пользователей?
  • Вопрос задан
  • 312 просмотров
Решения вопроса 2
@Akina
Сетевой и системный админ, SQL-программист.
PRIMARY KEY - первичный ключ. Поле, комбинация полей либо выражение (последнее MySQL не поддерживает), которое не может быть NULL и не допускает дубликатов (уникально для каждой отдельной записи в пределах таблицы). Поддерживается путём создания соответствующего уникального индекса и наложением ограничения NOT NULL на все используемые в выражении поля. По факту - однозначно идентифицирует запись. Кроме того, в MySQL выражение первичного ключа является кластерным индексом. См. Индекс -> Уникальный индекс -> Первичный индекс.

CONSTRAINT - ограничение. Правило, которое не допускает создания записи, для которой значение выражения ограничения имеет значения FALSE (можно TRUE или NULL).

FOREIGN KEY - внешний ключ. Ограничение, которое требует, чтобы указанное выражение для текущей записи присутствовало среди значений указанного выражения референсной таблицы (допускается и внешний ключ на ту же таблицу). Точнее, чтобы такая проверка присутствия не возвращала FALSE (можно TRUE или NULL).

REFERENCES - определяет референсную таблицу и референсное выражение.

INSERT INTO - запрос, вставляющий новые записи в таблицу.
Ответ написан
Комментировать
@grek_cheburek
Программист самоучка
1. Смотри, primary key нужен для того, чтобы таблица понимала, какой тут столбец самый главный.
То есть, этот primary key может отсутствовать, но тогда у тебя не будет работать auto_increment. Auto_increment нужен для того, чтобы у тебя главный столбец мог автоматически увеличиваться. Это нужно для порядковой записи строк.
2. Ключ, который ссылается на другую таблицу - это простое объединение. Нужно это для того, чтобы ты случайно не удалил связанные таблицы. Или настроить такой вариант. Если удаляешь главную таблицу или главную запись, то что должно произойти в момент удаления главной записи с записями, которые зависят от нее.
INSERT INTO это простое добавление строки в базу. Пользователь добавляется через другую команду.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы