Что такое PRIMARY KEY, CONSTRAINT, FOREIGN KEY, REFERENCES, INSERT INTO и для чего они нужны?
PRIMARY KEY - первичный ключ. Поле, комбинация полей либо выражение (последнее MySQL не поддерживает), которое не может быть NULL и не допускает дубликатов (уникально для каждой отдельной записи в пределах таблицы). Поддерживается путём создания соответствующего уникального индекса и наложением ограничения NOT NULL на все используемые в выражении поля. По факту - однозначно идентифицирует запись. Кроме того, в MySQL выражение первичного ключа является кластерным индексом. См. Индекс -> Уникальный индекс -> Первичный индекс.

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

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

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

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