postgres:查询'select * from user'究竟在做什么?

时间:2012-01-25 21:33:37

标签: sql postgresql

在psql中,如果有人输入'select * from user',你会得到类似下面的内容:

 current_user 
--------------
 postgres

此背景下的用户是什么?

3 个答案:

答案 0 :(得分:18)

在此上下文中,user是一个保留的内部Postgres函数,表示登录到数据库的当前用户。

此查询也可以写为:

SELECT user;

哪个应该产生相同的东西。请注意,如果您想要实际引用或创建名为user的表,则必须使用引号,或完全限定其所在的架构。例如:

CREATE TABLE "user"
(
  id int2 not null
);

会起作用但是:

CREATE TABLE user
(
  id int2 not null
);

会产生错误。

以下是其他系统信息功能的参考:

http://www.postgresql.org/docs/9.0/static/functions-info.html

答案 1 :(得分:3)

请参阅system functions上的Postgresql文档。

基本上“select * from user”是Postgresql特定的查找当前用户的方法之一。它在功能上与使用current_user函数相同,例如:“select current_user()”。

可在查询中用作表的其他特殊功能包括:

current_catalog
current_schema

答案 2 :(得分:1)

如果您正在寻找我应该在pg_user表中寻找的用户列表; SELECT * FROM pg_user;

您的查询从名为user的特殊功能的结果中获取所有数据。该函数返回current_user的用户名。