已创建架构,但无法显示其中的表

时间:2015-08-11 13:40:05

标签: sql postgresql psql

以下是代码:

testdb=# create schema myschema1;
CREATE SCHEMA
testdb=# \d
          List of relations
 Schema |    Name    | Type  | Owner
--------+------------+-------+--------
 public | company    | table | kaiyin
 public | department | table | kaiyin
(2 rows)

testdb=#
testdb=# create table myschema1.company1(
testdb(#    ID   INT              NOT NULL,
testdb(#    NAME VARCHAR (20)     NOT NULL,
testdb(#    AGE  INT              NOT NULL,
testdb(#    ADDRESS  CHAR (25) ,
testdb(#    SALARY   DECIMAL (18, 2),
testdb(#    PRIMARY KEY (ID)
testdb(#    );
CREATE TABLE
testdb=# \d
          List of relations
 Schema |    Name    | Type  | Owner
--------+------------+-------+--------
 public | company    | table | kaiyin
 public | department | table | kaiyin
(2 rows)

testdb=# select * from myschema1.company1

什么都没有出现。也许是因为桌子是空的?

testdb=# insert into myschema1.company1 values (1, joyce, 23, amsterdam, 60000, 1)
testdb-# select * from myschema1.company1
testdb-#

仍然没有。为什么呢?

OS X,postgresql 9.4.4

2 个答案:

答案 0 :(得分:3)

psql中的\d命令使用当前的模式搜索列表,默认情况下为public。您需要告诉它搜索您的架构:\d myschema1.*

答案 1 :(得分:1)

您需要使用;

终止声明

正如所写,你实际上在写一个多行语句。这就是为什么您的提示从testdb=#转到testdb-#,这意味着您仍在编写您的声明。 (对于大括号也是如此,如果你仍然在一个支撑块内,它会提示testdb(#。)

<ctrl>-<c>取消当前的对帐单,然后按以下方式尝试。

insert into myschema1.company1 values (1, joyce, 23, amsterdam, 60000, 1);
select * from myschema1.company1;