购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.2 psql的简单使用

如果已建好数据库,可以直接输入“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”的运行结果相同。 cyq0g7elFx36/CgyDP/aLDaxtiBboUNUnkbvGR4YBdyCagqiB1NUGxqFX1wZUhEj

点击中间区域
呼出菜单
上一章
目录
下一章
×