Postgres: что делает запрос "select * from user" на самом деле?
В psql, если один из них "выбирает * от пользователя", вы получите что-то вроде следующего:
current_user
--------------
postgres
Что такое пользователь в этом контексте?
Ответ 1
В этом контексте user представляет собой зарезервированную внутреннюю функцию Postgres, которая представляет текущего пользователя, зарегистрированного в базе данных.
Этот запрос также может быть записан как:
SELECT user;
Что должно дать то же самое. Обратите внимание: если вы хотите на самом деле ссылаться или создавать таблицу с именем user, вам придется использовать кавычки или полностью квалифицировать схему, в которой он живет. Например:
CREATE TABLE "user"
(
id int2 not null
);
будет работать, но:
CREATE TABLE user
(
id int2 not null
);
Выдает ошибку.
Здесь приведена ссылка для других функций системной информации:
В принципе "select * from user" является одним из способов поиска текущего пользователя в Postgresql. Он функционально аналогичен использованию функции current_user, например: "select current_user()".
Другие специальные функции, которые могут использоваться в качестве таблиц в запросах, включают в себя:
current_catalog
current_schema
Ответ 3
Если вы ищете список пользователей, которых я должен искать в таблице pg_user;
SELECT * FROM pg_user;
Ваш запрос получает все данные из результата специальной функции с именем user. Эта функция возвращает имя пользователя current_user.