安装:直接到官网,有命令
su - postgres
psql
su - postgres 切换到postgres用户
psql 是postgreSQL的客户端工具

\l 是列出所有数据库的命令,是字母l 不是数字1
\q 是退出psql命令
\d 显示数据库中有哪些表
\d score 可以显示这张表的定义情况
查看表、视图和序列的访问权限(\dp)
\c 连接相应的数据库

wal日志:wal日志即write ahead log预写式日志,简称wal日志。wal日志可以说是PostgreSQL中十分重要的部分,相当于oracle中的redo日志。
当数据库中数据发生变更时:
change发生时:先要将变更后内容计入wal buffer中,再将变更后的数据写入data buffer;
commit发生时:wal buffer中数据刷新到磁盘;
checkpoint发生时:将所有data buffer刷新的磁盘。

psql登录数据库
\l
默认postgres数据库,还有2个模板数据库template0 template1,当用户在建数据库时,默认是从模板数据库template1克隆出来的,所以可以
定制template1的内容。
\c xxx 连接数据库

psql -h <hostname or ip > -p <端口> [数据库名称] [用户名称]

\d 什么都不带,将列出当前数据库中所有的表

\d 表名: 表示显示这个表的解构定义
\d 索引:也可以看索引信息

oid:这里表明了 oid 是内部使用,并作为系统表的主键 ,相当于mysql中如果没有创建主键,相当于自动创建4k 的rowid做主键

\d+ t :可以看任何与表的关联的注释,以及表中出现的oid
\dn:列出所有的schema
\db:显示所有的表空间
postgreSQL中的表空间就是对应一个目录,放在这个表空间的表,就是把表的数据文件放到这个表空间下

\du或者\dg:列出数据库中所有角色或用户,两个命令等价,因为postgresSQL中用户和角色不分

\dp 或者\z :显示表的权限分配情况

字符集:
当客户端的字符编码不一样时,会显示乱码,可以使用\encoding gbk; \encoding utf8

\pest:用于设置输出的格式

\pest border 0:表示输出内容无边框
\pest border 1:表示边框只在内部
\pest border 2:表示内外都有边框

\x:可以把表中每一行的每列数据都拆分为单行展示,相当于mysql的\G

执行存储在外部文件中的sql命令
\i xx.sql

\echo :用于输出一行信息

\? 显示更多命令

\ 两个tab可以显示补全

psql中事务是自动提交的,如果不想自动提交,运行begin ,命令 或者\set AUTOCOMMIT off ,AUTOCOMMIT要大写,不能小写,如果使用小写
虽然不会报错,但是关闭自动提交会不生效