免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1412 | 回复: 0
打印 上一主题 下一主题

PostgreSQL 常用命令(转) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-20 09:46 |只看该作者 |倒序浏览
原文 http://blogold.chinaunix.net/u/20754/showart_362807.html
这个作者 很不错!
PostgreSQL 在后台运行的是一个叫做 postmaster 的程序,缺省的 TCP/IP 端口为 5432。
在客户端可以有很多工具连接到服务器上操作数据,对于一个 Unix 下的系统管理员而言,熟练掌握 psql 环境下的数据操作是十分需要的。

在启动 psql 之前,当然要求 psql 在你的 PATH 路径上,所以我们需要指定:

$ export PATH=$PATH:/usr/local/pgsql/bin

然后我们就可以进入了:

[user@host user]$ psql testdb
Welcome to psql, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit

testdb=#

记住在 psql 后面必须跟上数据库名字,不像 mysql ,可以用 use 命令来切换数据库。

所有的 psql 相关的命令都必须以 \ 开头,如果不知道某个命令的用法,可以用 \? 来找到帮助。

\g 为执行查询语句
\q 为退出 psql 环境
\h 为帮助

booktown=# \?
\a toggle between unaligned and aligned mode
\c[onnect] [dbname|- [user]]
connect to new database (currently 'booktown')
\C <title> table title
\copy ... perform SQL COPY with data stream to the client machine
\copyright show PostgreSQL usage and distribution terms
\d <table> describe table (or view, index, sequence)
\d{t|i|s|v} list tables/indices/sequences/views
\d{p|S|l} list permissions/system tables/lobjects
\da list aggregates
\dd [object] list comment for table, type, function, or operator
\df list functions
\do list operators
\dT list data types
\e [file] edit the current query buffer or [file] with external editor
\echo <text> write text to stdout
\encoding <encoding> set client encoding
\f <sep> change field separator
\g [file] send query to backend (and results in [file] or |pipe)
\h [cmd] help on syntax of sql commands, * for all commands
\H toggle HTML mode (currently off)
\i <file> read and execute queries from <file>
\l list all databases
\lo_export, \lo_import, \lo_list, \lo_unlink
large object operations
\o [file] send all query results to [file], or |pipe
\p show the content of the current query buffer
\pset <opt> set table output <opt> = {format|border|expanded|fieldsep|
null|recordsep|tuples_only|title|tableattr|pager}
\q quit psql
\qecho <text> write text to query output stream (see \o)
\r reset (clear) the query buffer
\s [file] print history or save it in [file]
\set <var> <value> set internal variable
\t show only rows (currently off)
\T <tags> HTML table tags
\unset <var> unset (delete) internal variable
\w <file> write current query buffer to a <file>
\x toggle expanded output (currently off)
\z list table access permissions
\! [cmd] shell escape or command

因此,综合上面的说明,我们可以知道:
\dt 命令是显示表
\di 显示索引
\ds 显示序列
\dv 显示视图
\dp 显示权限
\dS 显示系统表
\dl 显示 lobjects
\d tablename 显示表的结构/索引/序列
\d indexname 显示索引的详细信息



执行过的查询语句可以用 \s \i 分别存盘和调入。

psql 中 SQL 语句的输入和 MySQL 类似,一直到分号才结束,但是不同的是,在分号结束前的换行,在 MySQL 里面是 > 符号,而在 psql 里是 -# 符号。

缓冲区的管理
在编辑查询语句缓冲之前,最好设定好你最熟悉的编辑器,例如 vi 的话:

$ set EDITOR='vi'
$ export EDITOR

\e 命令就可以进入编辑,用上你熟悉的 vi 指令来编辑了。


值得一提的是 PostgreSQL 具有子查询和视图等概念,而 MySQL 到现在还没有。

子查询的例子:
booktown=# SELECT title FROM books
booktown-# WHERE author_id = (SELECT id FROM authors
booktown(# WHERE last_name='Geisel'
booktown(# AND first_name='Theodor Seuss');

视图的例子:
CREATE VIEW recent_shipments
booktown-# AS SELECT count(*) AS num_shipped, max(ship_date), title
booktown-# FROM shipments
booktown-# JOIN editions USING (isbn)
booktown-# NATURAL JOIN books AS b (book_id)
booktown-# GROUP BY b.title
booktown-# ORDER BY num_shipped DESC;

从普通的 SQL 语句而言,应该说 PostgreSQL 和 MySQL 是很相似的。因此,PostgreSQL 在一个企业级的应用中,应该比 MySQL 更加具有优势。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP