在postgresql中创建空表

时间:2015-07-09 15:32:28

标签: postgresql create-table

我想在postgresql中的数据库中创建一个简单的表。 从我有CREATE TABLE will create a new, initially empty table in the current database. The table will be owned by the user issuing the command.的文档 使用此命令

CREATE TABLE *table_name*;

我以为我得到了一个新的空表。但是psql会抛出ERROR: syntax error at or near ";"。当我使用空参数列表时,如:

CREATE TABLE *table_name*();

psql告诉我该表是通过

创建的
postgres=# create table *table_name*();
CREATE TABLE

但\ l显示未显示新创建的表。并且也无法使用psql -d table_name -U user_name 登录。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:4)

您似乎对术语数据库

感到困惑
  

但是\l没有显示新创建的表。

当然\l不会向您显示该表,因为\l会列出数据库而不是关系。要查看所有表格,您需要使用\d\dt

  

也无法使用psql -d table_name -U user_name

登录

当然这是不可能的,因为-d参数用于指定数据库,而不是

答案 1 :(得分:3)

您可以拥有一个没有列的表,甚至包含一些行:

<script type="text/javascript">
var els = document.getElementsByClassName('input-validation-error');

for(var x=0; x<els.length; x++){
    if( els[x].value == '' ){

        els[x].parentNode.parentNode.style.backgroundColor = '#f00';

    }
}
</script>

输出:

CREATE TABLE nocolumn (dummy INTEGER NOT NULL PRIMARY KEY)
    ;

INSERT INTO nocolumn(dummy) VALUES (1);

ALTER TABLE nocolumn
        DROP COLUMN dummy;

\d nocolumn

SELECT COUNT(*) FROM nocolumn;

答案 2 :(得分:1)

一小时前我建议添加至少一个这样的列:

create table tab1 (columnname varchar(42) not null)

但是,正如评论员所说,这似乎是不必要。 (我认为在这里保留错误的答案而不是删除它,以防止其他人提出相同的建议)