本文是PostgreSQL修炼之道这本书的学习笔记,记录下疑惑或不解的地方.
这里也列一些资源:
官方文档:http://www.postgresql.org/files/documentation/pdf/9.4/postgresql-9.4-A...
中文文档:http://www.php100.com/manual/PostgreSQL8/
阮一峰的博客:http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql...php
====html
ubuntu下安装很简单:sql
sudo apt-get install postgresql
安装完成后哦系统自动建立了一个系统用户,也是postgresql的超级用户,无需密码便可登陆到数据库.数据库
若是还想安装图形管理界面:ubuntu
sudo apt-get install pgadmin3
能够很清楚看到所建立的数据库和表,就像这样:函数
如今进入系统用户postgres下:工具
sudo su - postgres
而后链接到数据库:post
$psql
若是想建立一个新的数据库用户能够这样作:学习
sudo adduser dbuser
sudo su - postgres
$psql
在这里建立dbuser数据库用户编码
CREATE USER dbuser WITH PASSWORD 'password';
注意结尾必定要加封号';'
而后建立dbuser数据库用户的一个数据库,这里为exampledb,并指定全部者为dbuser.
CREATE DATABASE exampledb OWNER dbuser;
最后是将exampledb的全部权限都赋予dbuser,不然dbuser只能登陆控制台没有任何数据库操做权限.
GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser;
最后使用\q
退出控制台
在建立了某个系统用户的某个数据库用户的某个数据库以后.咱们如今要登陆她;
使用如下命令:
psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432
我试过了在ubuntu的不一样系统下均可以经过这种方式,登陆一个数据库.
固然若是你要登陆的额数据库就在你如今系统下,能够简单使用psql exampledb
登陆.
更简单的若是在你的用户名叫作dbuser,数据库也叫dbuser,那么在dbuser用户下就使用psql就能够一步登陆dbuser数据库.
这样几个包含关系用文字描述不太清楚,以后用图表来表示一下,先放在这里.
============
使用psql能够容许你交互地输入SQL命令,相似与ORACLE里的sqlplus同样.
sudo su - dbuser psql exampledb
效果以下:
psql -l
固然也能够在psql命令行地下使用\l
查看
$psql exampledb exampledb=>\l
exampledb=>\d
目测建立一个数据库是超级用户的权限,其余数据库用户没有这个权限.
因此先返回postgres系统用户下:
$su - postgres
进入数据库用户postgres:
$psql #CREATE DATABAE testdb OWNER dbuser;
先列出来:
\d
\dn
\db
\dg
\du
\dp
\encoding
\pset
\x
\echo
\?
4.2.1.\d命令
若是什么都不带,\d列出当前数据库中的全部表;
例如在postgres数据库中:
postgres=#\d
2.\d后面加表名
\d score
3.\d也能够显示索引信息
\d t_pkey
4.\d后面加通配符?和*
\d score* \d score?
5.\d+显示比\d更多的信息,除了以前的那些,还有与表列一切相关连的注释,以及表中出现的OID.
\d+ score
6.匹配不一样对象类型的\d命令(还没用过)
7.若是想显示SQL已执行的时间,能够用\timing命令,实例:
#\timing on #select count(*) from score;
8.列出全部schema可使用\dn
#\dn
9.显示全部表空间能够用\db命令
#\db`请输入代码`
10.列出数据库的所哟角色或用户
#\du或#\dg
11.显示表的权限分配
#\dp或\z
4.2.2指定字符集编译的命令
当客户端的字符编码与服务其的不同是,可能会显示乱码,可使用\encoding 指定客户端的字符编码,如\encoding gbk;\encoding utf-8;
4.2.3\pset命令
\pset命令用于设置输出的格式 \pset border 0:输出内容无
4.2.4\x命令
把表中的每一行数据都拆分为单行展现
#\x
4.2.5执行储存在外部文件中的SQL命令
/i<文件名>执行存储在外部文件中的sql语句或命令.以下:
#\i getrunsql
发现该书中的一个错误.
4.2.6显示信息的命令:
\echo hello world #hello world
这个命令一般在使用.sh脚本的文件中输出一些提示信息.
好比,某一个文件a.sql有一下内容:
\echo=======================
select * from xl;
\echo=======================
4.2.7更多命令
\?能够用来查询其余全部命令:
#\?
4.2.8psql的使用技巧和注意事项
历史命令补全:
连按两个Tab键
#\d <-----这里连按两个Tab键