首页 > 技术文章 > postgres使用记录

Zhanxueyou 2022-01-17 13:04 原文

常用概念

 

1、postgres中的schema

schema是处于数据库和表之间的一层结构,可以理解为命名空间,可以翻译成模式或者架构

数据库-schema-表,所以表示建立在schema中的

schema不能嵌套,同一schema下不能有重复的对象名字

create table user12(a int);

select schemaname from pg_catalog.pg_tables where tablename = 'user12';   # 系统视图中查找表对应的schema

\dt user12  # 查看表的属性
\dn # 查看库中所有的schema

如果创建表时没有显式指定schema,新创建的表会放在public schema中,其他对象也是一样的;

有两种方式查看表是属于哪个schema的,1 查看系统目录视图,2 使用psql命令

注意:

"select * from user"  # 这个查询的user表,和public.user不一样,user是定义在数据库实例中,不在数据库中

一个数据库集群中可以有一个或多个命名的数据库;

一个数据库包含一个或多个命名的模式;

使用模式的好处:

  • 一个数据库中可以有多个用户使用多个模式,互不干扰

  • 第三方应用可以放在不同的模式中,防止对象的名字冲突

如果不写特定的模式名,都会默认添加到默认的模式中,根据搜索路径顺序添加的

搜索路径:

show search_path;
默认值为:
"$user", public

可以修改这个搜索路径,将第一个值设置成我们需要的模式,然后默认数据添加就添加到对应的模式了;不需要在指定模式名了

SET search_path TO myschema,public;
还原search_path:
set search_path TO "$user",public;
set search_path = "$user",public;

 

2、角色和用户

角色role和用户user是两个相同的对象,唯一的区别是创建的时候;

默认创建的角色是没有登录权限,而创建的用户有登录权限

create role zhanzhan password '895544';
-- 删除角色
drop role zhanzhan;

-- 创建和删除用户
create user zhanzhan1 password '895544';
-- 删除用户
drop user zhanhan1;

 

 

3、表空间

表空间是用来规定数据库的存放位置;

所以创建数据库时可以指定数据库的表空间;

4、数据库的权限

http://www.freeoa.net/osuport/db/the-postgres-privileges_3112.html

 

命令行

http://www.freeoa.net/osuport/db/postgresql-comm-used-cmd-refer_3072.html

启动命令:

psql -U postgres -d postgres

创建模式

CREATE SCHEMA freeoa AUTHORIZATION postgres;

查看数据库版本号

select version();

 

 

 

常见问题记录

 

 

1、mac系统异常关机之后点击sql shell 打不开了

启动sql shell的脚本位置:

/Library/PostgreSQL/13/scripts/runpsql.sh

mac异常关机后打不开了,

尝试手动启动sql:

psql -U postgres -d postgres -h 127.0.0.1

 

如果连接不上了,尝试删除/usr/local/var/postgres/postmaster.pid,然后重试

推荐阅读