我只是在学习SQL并从PostgreSQL开始。这是我想要做的:
psql postgres
CREATE DATABASE newdb;
然后我想做这样的事情(在同一个psql会话中)
CONNECT DATABASE newdb;
当然这不起作用。但在做完陈述之后,我应该能够做到这样的事情:
CREATE TABLE newtable
“newtable”应该出现在newdb数据库中。我觉得我缺少一些简单的东西。
答案 0 :(得分:3)
在shell上,您只需\c
进行连接:
\c newdb
答案 1 :(得分:2)
您遗漏了一些简单的内容:如何使用可用的文档。我建议这是因为你的问题是相当基础的,PostgreSQL有一个广泛的文档,将来会非常有用 - 它可以为你节省很多时间。
您有几个选择:
\?
以获取命令帮助虽然以下内容对执行命令没有帮助,例如\c or \connect
,这就是你需要的;对于您正在质疑SQL背后的其他命令,您可以设置ECHO_HIDDEN来显示系统查询。
例如:
psql -E <rest of your db connection>
-- then do something like "\d"
然后,您将看到Postgres如何执行查询:
postgres@ubuntu:/home/fooUser$ psql -E
postgres=# \d
********* QUERY **********
SELECT n.nspname as "Schema",
c.relname as "Name",
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as "Type",
pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','v','S','')
AND n.nspname <> 'pg_catalog'
AND n.nspname <> 'information_schema'
AND n.nspname !~ '^pg_toast'
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
**************************