PostgreSQL的基本使用整理

Posted 小乔不掉发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL的基本使用整理相关的知识,希望对你有一定的参考价值。

我是目录:

1、数据库操作;

(1)创建数据库

create database mydb;

(2)查看所有数据库

\\list(或\\l)

(3)切换当前数据库

\\c mydb

(4)删除数据库

drop database <dbname>

2、表操作:

创建数据库时每列都必须使用数据类型。PostgreSQL主要有三类数据类型:

  • 数值数据类型
  • 字符串数据类型
  • 日期/时间数据类型

数值 常见的数据类型包括:

名字存储长度描述范围
smalint2字节小范围整数-32768 到 +32767
integer4字节常用的整数-2147483648 到 +2147483647
bigint8字节大范围整数-9223372036854775808 到 +9223372036854775807
decimal可变长用户指定的精度,精确小数点前131072位;小数点后16383位
numeric可变长用户指定的精度,精确小数点前131072位;小数点后16383位
real4字节可变精度,不精确6位十进制数值精度
double8字节可变精度,不精确15位十进制数字精度

字符串 类型包括:

  • char(size),character(size):固定长度字符串,size 规定了需存储的字符数,由右边的空格补齐;
  • varchar(size),character varying(size):可变长度字符串,size 规定了需存储的字符数;
  • text:可变长度字符串。

日期/时间 的数据类型有:

  • timestamp:日期和时间;
  • data:日期,无时间;
  • time:时间;

其他数据类型还有 布尔值boolean(true或false),货币数额money 和 几何数据等。


(1)创建表:
create table test(
    id int,
    body varchar(100) 
);

(2)在表中插入数据:

insert into test(id,body) values(1,'hello');

(3)查看当前数据库下所有表:

\\d

(4)查看表结构,相当于desc:

\\d test

(5)修改表名:

alter table test rename to t2;

(6)删除表 [如果存在]:

drop table [if exists] test;

(7)主键约束:

id varchar(20) primary key 
primary key(id)

(8)外键约束:

create table tb_user(
   userid varchar(20),
   classid varchar(20),
   foreign key(classid) references class(classid)
);

(9)唯一约束;

name varchar(20) unique

(10)非空约束:

name varchar(20) not null

(11)默认值:

name varchar(20) default '帅哥'

3、Schema(模式):

PostgreSQL模式(schema)可以看着是一个 表的集合
一个模式可以包含视图、索引、数据结构、函数和操作符等。
相同的对象名称可以被用于不同的模式中而不会出现冲突。

使用模式的优势:

  • 允许多个用户使用一个数据库并且不会互相干扰
  • 将数据库对象组织成逻辑组以便更容易管理
  • 第三方应用的对象可以放在独立的模式中,这样他们就不会被其他对象的名称发生冲突。

(模式类似于操作系统层的目录,但是模式不能嵌套)

# 创建 schema:
create schema myschema;

create table myschema.company(
  id int not null,
  name varchar(20) not null,
  age int 
);

# 删除schema:
drop schema myschema;

# 删除一个模式以及其中包含的所有对象:
drop schema myschema cascade;

4、如何备份PG数据库:

(1)单数据库:pg_dump、psql
(必须对要备份的数据库具有读取权限的用户身份允许此命令)

以 postgres 用户身份登录:

sudo su - postgres

通过运行以下命令将数据库的内容存储到文件中。替换 dbname 为要备份的数据库名称。

pg_dump dbname > dbname.bak

生成的备份文件 dbname.bak 可以用 scp 传输到另一台主机,也可以存储在本地。
使用 psql 恢复数据库:

psql test < dbname.bak

备份文件有几种选择:

  • *.bak:压缩二进制格式
  • *.sql:明文转储
  • *.tar:tarball

(2)所有数据库

由于 pg_dump 一次只创建一个数据库的备份,因此它不会存储有关数据库角色或其他群集范围配置的信息。要存储此信息并同时备份所有数据库,使用 pg_dumpa11

创建备份文件:

pg_dumpa11 > pg_backup.bak

从备份还原所有数据库:

psql -f pg_backup.bak postgres

5、用户操作:

(1)创建用户并设置密码:(用户:test 密码:test)

create user test with password 'test';

(2)修改用户密码:

alter user test with password '123';

(3)数据库授权:

将数据库 mydb 权限授予 test

grant all privileges on database mydb to test;

但此时用户还是没有读写权限,需要继续授权表:(该语句必须在所要操作的数据库里执行)

grant all privileges on all tables in schema public to xxx;

(4)移除指定账户指定数据库所有权限

revoke all privileges on database mydb from test;

(5)删除用户:

drop user test;

(6)查看用户:

/du

6、常用命令总结:

  • \\password(设置密码)
  • \\q(退出)
  • \\h:查看SQL命令的解释,比如 \\h select
  • \\?:查看psql列表
  • \\l:列出所有数据库
  • \\c [database_name]:切换其他数据库
  • \\d:列出当前数据库的所有表格
  • \\d [table_name]:列出某一张表的结构
  • \\du:列出所有用户

以上是关于PostgreSQL的基本使用整理的主要内容,如果未能解决你的问题,请参考以下文章

获取我的 RAM 的制造商名称(WMI 没有获得此信息)

postgresql 按大小列出和排序表

在字符串中的 Y 索引处查找 X 字符并使用此信息过滤数组

如何在引导程序中验证至少标记了一个复选框并将此信息传递给 php?

如何将此信息存储在qt中?数组列表?

在 ClickHouse、JOIN 与重复信息中查询此信息的最佳方式