以下是代码:
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
答案 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;