Это уникальный идентификатор строки. Обычно это одна колонка (простой ключ), значения в которой уникальны. Ей обычно назначают имя вроде «id» или «tablename_id». Возможны также составные ключи, когда комбинация значений нескольких колонок выступают идентификатором строки.
Использование простых первичных ключей упрощает создание внешних ключей. Для составных же первичных ключей, любая таблица, чтобы ссылаться на строчку этой таблицы, должна содержать столько же колонок, сколько входит в составной первичный ключ. Это очень редко используют, т.к. неудобно. Обычно можно обойтись простым ключом и ограничением уникальности какого-то набора колонок. Кроме того, ORM-фреймворки обычно заточены под простые первичные ключи.
Хоть в теории, первичный ключ — это просто ограничение уникальности с особым статусом, на практике в СУБД это может быть уникальный индекс. Это касается и составных ключей. Например, PostgreSQL
автоматически создаёт индекс B-tree для любого ограничения UNIQUE или первичного ключа, чтобы доступ к строке по ключу был быстрым.