jamie=# create table users ("user" text, "password" text);
CREATE TABLE
jamie=# insert into users values ('bob', 'whatever');
INSERT 0 1
jamie=# select user, password from users;
user | password
-------+----------
jamie | whatever
(1 row)
Is because the name /user/ is a pseudo-function keyword, and is an alias for /current_user/
test=# select "user", "password" from users;
user | password
------+----------
bob | whatever
(1 row)
Newer versions of PostgreSQL make this more clear:
test=# select user, password from users;
current_user | password
--------------+----------
postgres | whatever
(1 row)
Here is a full list of keywords:
https://www.postgresql.org/docs/current/sql-keywords-appendi...