提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和对专有系统比如 Oracle、Sybase、IBM
的 DB2 和 Microsoft SQL Server的一种选择。
# tar -zxf postgresql-8.1.4.tar.gz # cd postgresql-8.1.4 # ./configure # gmake && gmake install 默认安装到/usr/local/pgsql下 启动
# service postgresql start (start/stop/restart)
增加postgresql专用用户
posgresql为安全考虑,不允许以root用户运行,必须为它建立对应的用户和组
# useradd postgres
将自动建立对应的组(postgres)
为其配置环境变量:
# vi ~postgres/.bash_profile
PGLIB=/usr/local/pgsql/lib
PGDATA=$HOME/data
PATH=$PATH:/usr/local/pgsql/bin
MANPATH=$MANPATH:/usr/local/pgsql/man
export PGLIB PGDATA PATH MANPATH
建立数据目录
先切换用户
# su - postgres
建立数据目录
# mkdir data
初始化目录数据
# cd data
# initdb
# createdb pgd 创建数据库pgd
# psql -d pgd 进入到pgd数据库中 pgd=# \l 显示数据库列表,相当于mysql中的 show databases; pgd=#\d 显示当前数据库也就是pgd数据库下的表列表,相当于mysql中的 show tables; pgd=#\d tableName 显示tableName这张表的结构,相当于mysql中的 describe tableName; pgd=#\? 帮助命令信息 pgd=#\h 帮助命令信息 pgd=#\q 退出数据库postgresql.conf
为了使postgresql支持tcp/ip连接,要设置监听地址行
# vi /var/lib/pgsql/data/postgresql.conf
listen_addresses = '*' (原为#listen_addresses = 'localhost'):wq
重新启动服务
# service postgresql restart
附:
PostgreSQL 常用命令 \d [ table ] 列出数据库中的表,或(如果声明了)表 table 的列/字段.如果表名是用统配符 (“*”)声明的,列出所
有表和表的列/字段信息.
\da 列出所有可用聚集. \dd object 列出 pg_description 里对声明的对象的描述,对象可以是一个表,表中的列/字段,类型,操作符或聚集. 小技巧:并非所有对象在 pg_description 里有描述.此后期命令在快速获取 Postgres 内部特性时很有用. \df 列出函数. \di 只列出索引. \do 只列出操作符. \ds 只列出序列. \dS 列出系统表和索引. \dt 只列出非系统表. \dT 列出类型. \e [ filename ] 编辑当前查询缓冲或文件 filename 的内容. \E [ filename ] 编辑当前查询缓冲或文件 filename 的内容并且在编辑结束后执行之. \f [ separator ] 设置域分隔符.缺省是单个空白. \g [ { filename | |command } ] 将当前查询输入缓冲送给后端并且(可选的)将输出放到 filename 或通过管道将输出送给一个分离的Unixshell 用以执行 command.
\h [ command ] 给出声明的 SQL 命令的语法帮助.如果 command 不是一个定义的 SQL 命令(或在 psql 里没有文档),或没有声明 command ,这时 psql将列出可获得帮助的所有命令的列表.如果命令 command 是一个通配符(“*”
),则给出所有 SQL 命令的语法帮助.
\H 切换 HTML3 输出.等效于 -H 命令行选项. \i filename 从文件 filename 中读取查询到输入缓冲. \l 列出服务器上所有数据库. \m 切换老式监视器样的表输出,这时表周围有边界字符包围着.这是标准 SQL 输出.缺省时,psql 只包括列/字段间的分隔符.
\o [ { filename | |command } ] 将后面的查询结果输出到文件 filename 或通过管道将后面结果输出到一个独立的Unix shell 里执行 command.如果没有声明参数,将查询结果输出到 stdout.
\p 打印当前查询缓冲区. \q 退出 psql 程序. \r 重置(清空)查询缓冲区. \s [ filename ] 将命令行历史打印出或是存放到 filename.如果省略 filename ,将不会把后继的命令存放到历史文件中.此选项只有在 psql 配置成使用输入行时才有效.
\t 切换输出的列/字段名的信息头和行记数脚注(缺省是开). \T table_options 允许你在使用HTML 3.0 格式输出时声明放在表 table ... 中的标记选项.例如,border 将给你的表以边框.这必须和 \H 后期命令一起使用.
\x 切换扩展行格式.当打开时,每一行将在左边打印列/字段名而在右边打印列/字段值.这对于那些不能在一行输出的超长行是很有用的.HTML 行输出模式也支持这个标记.
\w filename 将当前查询缓冲区输出到文件 filename. \z 生成一个带有正确 ACL(赋予/禁止 权限)的数据库中所有表的输出列表. \! [ command ] 回到一个独立的Unix shell或执行一个Unix 命令 command. \? 获得关于反斜杠 (“\”) 命令的帮助. 一般选项\c[onnect] [数据库名|- [用户名称]]
联接到新的数据库 (当前为 "test") \cd [目录名] 改变当前的工作目录 \copyright 显示 PostgreSQL 用法和发布信息 \encoding [编码] 显示或设置客户端编码 \h [名字] SQL 命令的语法帮助, 用 * 可以看所有命令的帮助 \q 退出 psql \set [名字 [值]] 设置内部变量, 如果没有参数就列出所有 \timing 查询计时开关切换 (目前是 关闭) \unset 名字 取消(删除)内部变量 \! [命令] 在 shell 里执行命令或者开始一个交互的 shell信息选项
\d [名字] 描述表, 索引, 序列, 或者视图
\d{t|i|s|v|S} [模式] (加 "+" 获取更多信息) 列出表/索引/序列/视图/系统表 \da [模式] 列出聚集函数 \db [模式] 列出表空间 (加 "+" 获取更多的信息) \dc [模式] 列出编码转换 \dC 列出类型转换 \dd [模式] 显示目标的注释 \dD [模式] 列出域 \df [模式] 列出函数 (加 "+" 获取更多的信息) \dg [模式] 列出组 \dn [模式] 列出模式 (加 "+" 获取更多的信息) \do [名字] 列出操作符 \dl 列出大对象, 和 \lo_list 一样 \dp [模式] 列出表, 视图, 序列的访问权限 \dT [模式] 列出数据类型 (加 "+" 获取更多的信息) \du [模式] 列出用户 \l 列出所有数据库 (加 "+" 获取更多的信息) \z [模式] 列出表, 视图, 序列的访问权限 (和 \dp 一样)命令: ABORT
描述: 终止当前事务 语法: ABORT [ WORK | TRANSACTION ]命令: ALTER DATABASE
描述: 改变一个数据库 语法: ALTER DATABASE 名字 SET 参数 { TO | = } { 值 | DEFAULT } ALTER DATABASE 名字 RESET 参数 ALTER DATABASE 名字 RENAME TO 新名字 ALTER DATABASE 名字 OWNER TO 新属主 命令: ALTER GROUP 描述: 改变一个用户组 语法: ALTER GROUP 组名称 ADD USER 用户名称 [, ... ] ALTER GROUP 组名称 DROP USER 用户名称 [, ... ] ALTER GROUP 组名称 RENAME TO 新名称命令: ALTER INDEX
描述: 改变一个索引的定义 语法: ALTER INDEX 索引名称 动作 [, ... ] ALTER INDEX 索引旧名称 RENAME TO 索引新名称 动作为以下之一: OWNER TO 新属主 SET TABLESPACE indexspace_name命令: ALTER SEQUENCE
描述: 改变一个序列生成器的定义 语法: ALTER SEQUENCE 名字 [ INCREMENT [ BY ] 递增 ] [ MINVALUE 最小值 | NO MINVALUE ] [ MAXVALUE 最大值 | NO MAXVALUE ] [ RESTART [ WITH ] 开始 ] [ CACHE 缓存 ] [ [ NO ] CYCLE ]命令: ALTER TABLE
描述: 改变一个表的定义 语法: ALTER TABLE [ ONLY ] 表名 [ * ] action [, ... ] ALTER TABLE [ ONLY ] 表名 [ * ] RENAME [ COLUMN ] 字段名 TO 新字段名 ALTER TABLE 表名 RENAME TO 新表名 action 为下面的一种: ADD [ COLUMN ] 字段名 类型 [ 字段约束 [ ... ] ] DROP [ COLUMN ] 字段名 [ RESTRICT | CASCADE ] ALTER [ COLUMN ] 字段名 TYPE 类型 [ USING 表达式 ] ALTER [ COLUMN ] 字段名 SET DEFAULT 表达式 ALTER [ COLUMN ] 字段名 DROP DEFAULT ALTER [ COLUMN ] 字段名 { SET | DROP } NOT NULL ALTER [ COLUMN ] 字段名 SET STATISTICS integer ALTER [ COLUMN ] 字段名 SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN } ADD 表约束 DROP CONSTRAINT 约束名字 [ RESTRICT | CASCADE ] CLUSTER ON 索引名称 SET WITHOUT CLUSTER SET WITHOUT OIDS OWNER TO 新属主 SET TABLESPACE 表空间名字命令: ALTER TRIGGER
描述: 改变一个触发器的定义 语法: ALTER TRIGGER 名字 ON 表 RENAME TO 新名字命令: ALTER USER
描述: 改变一个数据库用户 语法: ALTER USER name [ [ WITH ] option [ ... ] ] where option can be: CREATEDB | NOCREATEDB | CREATEUSER | NOCREATEUSER | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | VALID UNTIL 'abstime' ALTER USER name RENAME TO newname ALTER USER name SET parameter { TO | = } { value | DEFAULT }命令: COPY
描述: 在一个文件和一个表之间拷贝数据 语法: COPY 表名 [ ( 字段 [, ...] ) ] FROM { '文件名' | STDIN } [ [ WITH ] [ BINARY ] [ OIDS ] [ DELIMITER [ AS ] 'delimiter' ] [ NULL [ AS ] 'null string' ] [ CSV [ QUOTE [ AS ] 'quote' ] [ ESCAPE [ AS ] 'escape' ] [ FORCE NOT NULL column [, ...] ]COPY 表名 [ ( 字段 [, ...] ) ]
TO { '文件名' | STDOUT } [ [ WITH ] [ BINARY ] [ OIDS ] [ DELIMITER [ AS ] 'delimiter' ] [ NULL [ AS ] 'null string' ] [ CSV [ QUOTE [ AS ] 'quote' ] [ ESCAPE [ AS ] 'escape' ] [ FORCE QUOTE column [, ...] ]命令: CREATE TABLE
描述: 定义一个新的表 语法: CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name ( { column_name data_type [ DEFAULT default_expr ] [ column_constraint [ ... ] ] | table_constraint | LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ] } [, ... ] ) [ INHERITS ( parent_table [, ... ] ) ] [ WITH OIDS | WITHOUT OIDS ] [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] [ TABLESPACE tablespace ]where column_constraint is:
[ CONSTRAINT constraint_name ]
{ NOT NULL | NULL | UNIQUE [ USING INDEX TABLESPACE tablespace ] | PRIMARY KEY [ USING INDEX TABLESPACE tablespace ] | CHECK (expression) | REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]and table_constraint is:
[ CONSTRAINT constraint_name ]
{ UNIQUE ( column_name [, ... ] ) [ USING INDEX TABLESPACE tablespace ] | PRIMARY KEY ( column_name [, ... ] ) [ USING INDEX TABLESPACE tablespace ] | CHECK ( expression ) | FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]