PostgreSQL基本命令

  • 连接数据库
 $ psql -U user_name -d database_name -h serverhost
  • 常用操作
 \h #查看所有的sql关键字
 \? #命令行操作的帮助
 \d #查看当前schema 中所有的表
 \q #退出pg命令行
 \d #schema.table 查看表的结构
 \x #横纵显示切换 
 \dT+ #显示扩展类型相关属性及描述
 \dx #显示已安装的扩展插件
 \l #列出所有的数据库
 \timing #显示执行时间 
 \c database_name #切换数据库 
 set search to schema #切换schema 
 explain sql #解释或分析sql执行过程
  • 创建数据库
postgres=# CREATE DATABASE testdb;
CREATE DATABASE
  • 创建Schema

    PG 系统默认的 Schema 名称通常是以 pg_开头的,每个数据库都包含public 表空间,默认创建时不指定表空间,则会把对象或者表放在当前表空间下。

postgres=# CREATE SCHEMA testSchema;
CREATE SCHEMA
  • 创建指定表空间下的表
postgres=# CREATE TABLE testSchema.test(id SERIAL ,age INT,name Text);
CREATE TABLE
  • 删除表空间
DROP SCHEMA testSchema;
  • 删除该表空间下的所有对象
DROP SCHEMA testSchema CASCADE;
  • 给用户分配一个表空间

    schema_name 也可以省略,在这种情况下, schema_name 名称将会为当前用户的名称

CREATE SCHEMA schema_name AUTHORIZATION user_name;
  • SHOW search_path
testdb=# SHOW search_path;
 search_path
-------------
 $user,public
(1 行记录)

testdb=#

$user 该参数指定了 该用户查询时会查询与用户名称相同的schema ,若存在则查询结果,不存在则忽略。public 在所有用户创建时都会默认创建该 public 命名空间 ,指定任何一个用户在没有指定schema 时,查询、修改、删除等操作都会在该命名空间下执行。

  • 指定创建对象等操作到指定Schema

    在这我们省略了$user ,即我们访问表数据时 schema 没有命名空间的约束

SET search_path TO testSchema ,public;

SET search_path TO testSchema ;

这样我们就不会再访问public ,也没有其他的作用,我们也可以删除掉。

  • 授权来分配权限
REVOKE CREATE ON SCHEMA public FROM PUBLIC;

表示:为所有用户分配在 public 表空间下连接 的权限,默认用户在public 下可进行
创建和使用的权限。
第一个 public 表示 表空间 第二个 PUBLIC 表示所有人

  • $$ 理解
CREATE
FUNCTION populate() RETURNS integer AS $$
DECLARE
-- 声明段
BEGIN
PERFORM my_function();
END;
$$
LANGUAGE plpgsql;

RETURNS integer ,这个名称为 populate的FUNCTION ,返回值的数据类型是 integer 类型的。AS 意味着 后面是函数的代码部分。$$ 意思是 实际代码的开始,当遇到下一个 $$ 的时候,为代码的结束 ,最后就是 LANGUAGE plpgsql;意思是整个创建 函数的 语句结束了,数据库去编译整个代码。

  • 查看同步流状态
postgres=# SELECT * FROM PG_STAT_REPLICATION;
(0 行记录)

postgres=#
  • 从库执行
select pg_is_wal_replay_paused(); 

f 表示没有暂停,t 表示暂停

注意

上述函数在PostgreSQL 不同版本中略有差异,上述为PG 10.x版本

在pg中系统表默认都是以pg_ 开头的,以至于不会与我们自己新建的表名称冲突

配置默认创建的对象或者表放在默认的表空间下,在postgresql.conf中配置

default_tablespace = '$user'
search_path = '$user'

猜你喜欢

转载自blog.csdn.net/yaoqiancuo3276/article/details/80210004