有两种方式,一是直接在系统shell下执行psql命令;而是先进入psql环境,然后再连接数据库。下面分别给出实例:
(1)直接登录
执行命令:psql -h 172.16.35.179 -U username -d dbname ,其中username为数据库用户名,dbname为要连接的数据库名,执行后提示输入密码如下:
Password for user username: (在此输入密码)
输入密码后即可进入psql环境了。
(2)切换数据库
有时候需要在psql环境下切换数据库,此时执行如下psql命令:
\c dbname username serverIP port
其中除了数据库名外,其他的参数都是可选的,如果使用默认值可以使用-作为占位符
执行这个命令后,也是提示输入密码。
2 查看帮助
psql提供了很好的在线帮助文档,总入口命令是help,输入这个命令就可以看到
vsb9=# **help**
You are using psql, the command-line interface to PostgreSQL.
Type: \copyright for distribution terms
\g or terminate with semicolon to execute query
\q to quit
\h:查看SQL命令的解释,比如\h select
\?:查看psql命令列表
\l:列出所有数据库
\c [database_name]:连接其他数据库
\d:列出当前数据库的所有表格
\d+:列出当前数据库的所有表格 + Size + Description
\d [table_name]:列出某一张表格的结构
\d+ [table_name]:列出某一张表格的结构 + Storage + Stats target + Description
\du:列出所有用户
\e:打开文本编辑器
\conninfo:列出当前数据库和连接的信息
可以看到,标准SQL命令的帮助和psql特有命令的帮助是分开的。输入\?查看psql命令,会发现所有的psql命令都是以\开头,这就很容易和标准的SQL命令进行区分开来。
3 常用命令
为了便于记忆,这里把对应的mysql命令也列出来了。
(1)列出所有的数据库
mysql: show databases
psql: \l或\list
(2)切换数据库
mysql: use dbname
psql: \c dbname
(3)列出当前数据库下的数据表
mysql: show tables
psql: \d
psql: \d * 模糊匹配
(4)列出指定表的所有字段
mysql: show columns from table name
psql: \d tablename
(5)查看指定表的基本情况
mysql: describe tablename
psql: \d+ tablename
(6)退出登录
mysql: quit 或者\q
psql:\q
4 SQL命令
PostgreSQL 建表和删除表和mysql保持一样
1) add/delete/update/select
# 创建新表
CREATE TABLE user_tbl(name VARCHAR(20), signup_date DATE);
# 插入数据
INSERT INTO user_tbl(name, signup_date) VALUES('张三', '2013-12-22');
# 选择记录
SELECT * FROM user_tbl;
# 更新数据
UPDATE user_tbl set name = '李四' WHERE name = '张三';
# 删除记录
DELETE FROM user_tbl WHERE name = '李四' ;
# 添加栏位
ALTER TABLE user_tbl ADD email VARCHAR(40);
# 更新结构
ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL;
# 更名栏位
ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup;
# 删除栏位
ALTER TABLE user_tbl DROP COLUMN email;
# 表格更名
ALTER TABLE user_tbl RENAME TO backup_tbl;
# 删除表格
DROP TABLE IF EXISTS backup_tbl;
2) formatted output
# if you want to change separator when you select some data, you need to set up \a and change \f xxx(xxx is the separator what you need)
# such as( for example)
testdb=# select * from user_tbl;
name | signup_date
------+-------------
张三 | 2013-12-22
李四 | 2013-12-23
(2 rows)
testdb=# \a \f ','
Output format is unaligned.
Field separator is ",".
testdb=# select * from user_tbl;
name,signup_date
张三,2013-12-22
李四,2013-12-23
(2 rows)
参考地址:
PostgreSql新手入门命令: http://blog.csdn.net/smstong/article/details/17138355
PostgreSQL新手入门: http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html