如果已建好数据库,可以直接输入“psql”进入命令交互输入模式:
osdba@osdba-laptop:~$ psql psql (9.0.3) Type "help" for help. osdba=#
进入命令交互输入模式后会显示psql版本,然后出现提示符,可以在此提示符下输入标准的SQL命令,也可以输入psql工具特有的快捷命令,这些快捷命令都是以斜杠“\”开头的。
为什么不需要输入用户名和密码?安装PostgreSQL数据库时,会创建一个与初始化数据库时的操作系统用户同名的数据库用户,这个用户是数据库的超级用户,在此OS用户下登录数据库时,因为执行的是操作系统认证,所以是不需要用户名和密码的,用户也可以通过修改pg_hba.conf文件来要求用户输入密码。
当然,psql也支持直接使用命令行参数查询信息和执行SQL,这种非交互模式与使用一般的Linux命令没有区别,如使用“psql -l”命令可以查看数据库:
osdba@osdba-work:~$ psql -l Output format (format) is wrapped. Target width (columns) is 80. List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+-------+----------+-------------+-------------+------------------- osdba | osdba | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | osdba | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | osdba | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/osdba + | | | | | osdba=CTc/osdba template1 | osdba | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/osdba + | | | | | osdba=CTc/osdba (4 rows)
也可以进入psql的命令交互输入模式使用“\l”命令查看有哪些数据库,与使用上面的“psql -l”命令得到的结果是相同的,示例如下:
osdba-# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+-------+----------+-------------+-------------+------------------- osdba | osdba | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | osdba | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | osdba | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/osdba + | | | | | osdba=CTc/osdba template1 | osdba | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/osdba + | | | | | osdba=CTc/osdba (4 rows)
上面的查询结果中有一个叫“postgres”的数据库,这是默认postgreSQL安装完成后就有的一个数据库,还有两个模板数据库:template0和template1。当用户创建数据库时,默认是从模板数据库“template1”克隆来的,所以通常我们可以定制template1数据库中的内容,如向template1中添加一些表后函数,这样后续创建的数据库就会继承template1中的内容,也会拥有这些表和函数。而template0是一个最简化的模板库,如果创建数据库时明确指定从此数据库克隆,将创建出一个最简化的数据库。
下面演示交互模式下的使用方法。
使用“\d”命令查看表的示例如下:
osdba=# create table t(id int primary key,name varchar(40)); CREATE TABLE osdba=# \d List of relations Schema | Name | Type | Owner --------+------+-------+------- public | t | table | osdba (1 row)
还可以使用SQL语句“CREATE DATABASE×××”创建用户数据库,下面是创建testdb数据库的SQL语句:
osdba=# CREATE DATABASE testdb; CREATE DATABASE
然后使用“\c testdb”命令连接到testdb数据库上:
osdba=# \c testdb; You are now connected to database "testdb" as user "osdba". testdb=#
下面介绍psql连接数据库的常用的方法,命令格式如下:
psql -h <hostname or ip> -p <端口> [数据库名称] [用户名称]
示例如下:
[postgres@db1 ~]$ psql -h 192.168.56.11 -p 5432 testdb postgres psql (9.0.3) Type "help" for help. testdb=#
其中-h指定要连接的数据库所在的主机名或IP地址,-p指定连接的数据库端口,最后两个参数分别是数据库名和用户名。
这些连接参数也可以通过环境变量指定,示例如下:
export PGDATABASE=testdb export PGHOST=192.168.56.11 export PGPORT=5432 export PGUSER=postgres
然后运行psql,其运行结果与“psql -h 192.168.56.11 -p 5432 testdb postgres”的运行结果相同。