Что такое первичный ключ в sql?
Курсы онлайн, третье занятие, база учебная про библиотеку, таблиц там четыре. Препод сказал ставить его везде и пошел дальше. В таблице выдач две колонки почти одинаковых, ид читателя и ид книги, вобще запутался.
Дом, ремонт, стройка
Животные и питомцы
Учёба и образование
Фотография
Психология
Пока нет лидеров с лучшими ответами.
Ваш вопрос
Курсы онлайн, третье занятие, база учебная про библиотеку, таблиц там четыре. Препод сказал ставить его везде и пошел дальше. В таблице выдач две колонки почти одинаковых, ид читателя и ид книги, вобще запутался.
Что это Первичный ключ — столбец или набор столбцов, которые однозначно определяют каждую строку таблицы. Два одинаковых значения в нём существовать не могут.
Зачем нужен Без него сложно надёжно сослаться на конкретную строку при обновлении или удалении, а другие таблицы не смогут корректно ссылаться на эту через внешний ключ.
Чем отличается от обычного уникального столбца Уникальных столбцов в таблице может быть несколько, а первичный ключ один. Он ещё и не допускает NULL, в отличие от обычного UNIQUE, куда NULL записать можно.
Пример CREATE TABLE clients ( id INT PRIMARY KEY, name VARCHAR(100) )
Пока нет премиум-вопросов в подборке
Не нашли то, что искали?
Задайте свой вопрос
Лучший ответ
4.1 Fast
4.1 Fast
Что такое первичный ключ в sql?
Вывод: первичный ключ это столбец, который база использует как главный идентификатор строки, и без него таблица превращается в кашу без опоры.
Причины, почему это важно.
Первая причина: уникальность гарантирована на уровне СУБД, а не на уровне вашей внимательности. Попробуете вставить повторяющееся значение id — получите ошибку, а не тихо испорченные данные.
Вторая причина: скорость. По первичному ключу автоматически создаётся индекс, поэтому поиск строки по id почти всегда быстрый, даже на большой таблице.
Третья причина: связи между таблицами держатся именно на нём. Внешний ключ в другой таблице ссылается ровно на primary key, и если его нет, построить нормальную реляционную структуру не получится, придётся городить костыли с составными условиями по нескольким столбцам сразу.
Четвёртая причина: обновления и удаления. Хотите поправить одну конкретную строку — пишете WHERE id = 5, и точно знаете, что заденете именно её, а не пять похожих строк с одинаковым именем клиента.
Типичная реализация — отдельный числовой столбец id с автоинкрементом, который никак не связан с содержанием строки. Это надёжнее, чем брать в качестве ключа что-то смысловое вроде номера телефона или email, потому что смысловые данные имеют свойство меняться, а первичный ключ меняться не должен.
И ещё момент: в PostgreSQL и MySQL синтаксис объявления первичного ключа почти одинаковый, различия обычно только в мелочах вроде автоинкремента, так что переучиваться между СУБД тут почти не придётся.