Ubuntu 下安装使用PostgreSQL(一)

2014-11-24 18:34:53 · 作者: · 浏览: 1

1


http://www.postgresql.org/download/ 下载PostgreSQL,我的版本是9.1-rc1




2.


安装PostgreSQL的时候可能会提示:


configure: error: readline library not found


If you have readline already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable readline support.


表示需要安装readline库(readline的作用是使得可以在命令行回滚历史命令,编辑命令。):


sudo sudo apt-get install libreadline6-dev




3.


./configure --prefix=/usr/local/pgsql






4.


make -j 2




5.


sudo make install




6


创建用户组和用户(由于PostgreSQL需要一个专门的用户才能使用,因此这里我们新建了一个用户(用户名随意),以后使用PostgreSQL时就切换到这个用户就可以了) :
sudo groupadd postgresql
sudo useradd -g postgres postgresql


注意,同时要给postgresql账户设置一个密码,并启用。






7.


创建数据库库文件存储目录、给postgres赋予权限:


mkdir /usr/local/pgsql/data
cd /usr/local/pgsql
sudo chown -R postgresql.postgresql data






8.


初始化数据库目录:
切换用户 :
su postgresql


初始化数据库 :


/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data




注意:数据库初始化后,才可以启动postgresql数据库的后台服务!




启动数据库
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data


之后终端会有如下输出:


LOG: database system was shut down at 2011-10-21 00:40:50 CST
LOG: database system is ready to accept connections
LOG: autovacuum launcher started




之后终端一直没有返回,不过看提示,说明数据库已经启动起来啦~~






下面介绍如何使用PostgreSQL:


PostgreSQL的大部分命令在pgsql的bin下,为了以后方便,我们先给它们做一个链接:


sudo ln -s /usr/local/pgsql/bin/* /usr/bin






由于PostgreSQL需要一个专门的用户名才能使用,因此每次使用时要先切换到这个用户:


su postgresql


启动PostgreSQL Server 后台服务


cd /usr/local/pgsql/data


pg_ctl -D /usr/local/pgsql/data -l logfile start




首先创建一个数据库,假设名字是abc:


createdb abc


然后进入数据库abc:


psql abc


终端提示:


psql (9.1rc1)
Type "help" for help.


abc=#


说明我们已经进去啦,




然后创建一个score表:


CREATE TABLE score (id int, name varchar(20), score real);
如果看到"CREATE TABLE"的字样就说明表已经建好了。


注意,PostgreSQL的所有语句都要以;结尾,否则PostgreSQL会换一行等待你继续输入;




下面我们插入一条记录:


INSERT INTO score VALUES (1, 'JOHN', 90);


如果看到"INSERT 0 1"的字样就说明记录已经插进去了。




查询score表:


SELECT * FROM score;


显示:


id | name | score
----+------+-------
1 | JOHN | 90
(1 row)






查看score表的表结构信息:


\d score


显示如下:


Table "public.score"
Column | Type | Modifiers
-----------+--------------------------------+-----------
id | integer |
name | character varying(20) |
score | real |








在score表的id列上建一个索引id_score


create index id_score on score(id);
如果看到“CREATE INDEX"的字样就说明索引已经建好了。


这个时候再 \d score 查看表结构时输出如下:


Table "public.score"
Column | Type | Modifiers
-----------+--------------------------------+-----------
id | integer |
name | character varying(20) |
score | real |

Indexes:
"id_score" btree (id)


然后显示现有的索引:


\di


如果显示No relations found.表示目前的数据库中还没有索引。






删除score表:


DROP TABLE score;
如果看到"DROP TABLE"的字样就说明score表已经被删除了。






退出PostgreSQL:


\q


以下还有一些PostgreSQL的常用命令:


\l 列出已有数据库的Owner,Encoding等信息


\c 切换数据库(切换数据库表示其后进行的操作,如insert等都将作用在切换后的数据库上


比如目前提示符是:abc=#, 那么输入 \c mydb 后,提示符变成了mydb=#,表示切换到了mydb数据库。


\dt 查看当前数据库中已有的表






下面介绍如何备份数据库:


首先在abc数据库中创建一个price表,并插入一些数据:


\c abc; #切换到abc数据库


CREATE TABLE price (id int, name varchar(100), price real);


INSERT INTO price VALUES (1, 'apple', 10);


INSERT INTO priceVALUES (2, 'orange', 5);


INSERT INTO price VALUES (3, 'banana', 20);


INSERT INTO price VALUES (4, 'peach', 15);


INSERT INTO price VALUES (5, 'pear', 8);


然后退出PostgreSQL:\q


在终端输入:


pg_dump abc >abc