PostgreSQL的基本使用整理

2023-10-30

1、数据库操作;

(1)创建数据库

create database mydb;

(2)查看所有数据库

\list(或\l)

(3)切换当前数据库

\c mydb

(4)删除数据库

drop database <dbname>

2、表操作:

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

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

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

名字 存储长度 描述 范围
smalint 2字节 小范围整数 -32768 到 +32767
integer 4字节 常用的整数 -2147483648 到 +2147483647
bigint 8字节 大范围整数 -9223372036854775808 到 +9223372036854775807
decimal 可变长 用户指定的精度,精确 小数点前131072位;小数点后16383位
numeric 可变长 用户指定的精度,精确 小数点前131072位;小数点后16383位
real 4字节 可变精度,不精确 6位十进制数值精度
double 8字节 可变精度,不精确 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:列出所有用户
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PostgreSQL的基本使用整理 的相关文章

随机推荐

  • 干货 :深度学习必须掌握的 13 种概率分布

    来源 深度学习前沿 本文约1400字 建议阅读5分钟 这里有一份最常见的基本概率分布教程 大多数和使用 python 库进行深度学习有关 作为机器学习从业者 你需要知道概率分布相关的知识 这里有一份最常见的基本概率分布教程 大多数和使用 p
  • ZooKeeper 节点类型

    ZooKeeper 节点是有生命周期的 这取决于节点的类型 在 ZooKeeper 中 节点类型可以分为持久节点 PERSISTENT 临时节点 EPHEMERAL 以及时序节点 SEQUENTIAL 具体在节点创建过程中 一般是组合使用
  • 在mysql中删除数据后,添加数据,id值依然从删除的位置开始增加,问题详解。

    id name age email isActive 1 王老师 32 wangwc 163 com 1 2 王老师 32 wangwc 163 com 1 3 隔壁老王
  • Windows Server 2008 R2修改远程桌面连接数

    计算机 属性 远程设置 勾选 允许运行任意版本远程桌面的计算机连接 较不安全 第一步 开启远程桌面 计算机 属性 远程设置 勾选 允许运行任意版本远程桌面的计算机连接 较不安全 第二步 设置远程桌面连接最大数量 控制面板 gt 管理工具 g
  • 2020.11.12 算法练习

    2020 11 12 算法练习 题目描述 示例 算法思路 答案 运行示例 出现的问题 题目描述 给定一个非负整数数组 A A 中一半整数是奇数 一半整数是偶数 对数组进行排序 以便当 A i 为奇数时 i 也是奇数 当 A i 为偶数时 i
  • STM32简单呼吸灯的制作

    物联网应用技术2班 李俊运 20210320018 目的 实现呼吸灯 逐渐亮 逐渐灭 准备工作 1 首先我们需要准备32的最小系统板或者开发板 2 准备一个LED灯 如果使用板子上的灯来实现则不需要 下面我是使用最小系统板上的LED灯来实现
  • Datalore 安装使用教程

    发现一个jetbrain出的好东西 使用体验完爆jupyter notebook以及jupyter lab的软件 就是安装有点复杂 官网写得有点不清楚 这里简单介绍一下 首先他只能在linux运行 其他环境暂时不支持 首先 去https w
  • vscode内网环境部署

    1 首先需要一台能连网的电脑把需要的插件拷贝到内网电脑 把vscode传到内网电脑 在安装时选择环境变量 装完之后重启 2 安装Remote SSH 去官网下载 除了下载Remote SSH之外 还需要下载两个插件 Extensions f
  • 宝塔安装nextcloud

    首先买服务器 域名 ssl证书 最好开个子域名 比如 wangpan 666 com类似的 百度搜索宝塔 安装 就这样 装好之后打开宝塔 第一次安装环境的时候用lnmp 也就是nginx 注意php用7 0及以上版本 注意php装好之后选择
  • 【ssh】pycharm链接远程服务器出现:Bad owner or permissions on C:\\Users\\用户名/.ssh/config

    一直以来是用的pycharm 最近改用了vscode登录 并配置了config文件实现了vscode自动连接远程服务器 但是回到pycharm发现terminal端口不管用了 电脑上的powershell也是链接不上远程服务器并报错Bad
  • Unity TileMap 2D 工具基础教程

    Unity TileMap 2D 工具基础教程 Unity TileMap 2D 工具基础教程 TileMap 工程创建 Sprite Editor 工具使用 TileMap 功能说明 TilePalette 调色板功能 Unity Til
  • 网站安全狗

    phpstudy安装yxcms server2012安装phpstudy和网站安全狗 创建一个网站 将文件解压到phpstudy根目录下 访问网站进入安装页面 安装成功 windows服务器安装网站安全狗 启动apache服务 进行安装 安
  • WaterView 自定义圆形水波进度

    这几天不是很忙 完成了工作 利用闲暇的时间来完成一下以前不会玩的自定义动画 自定义圆形水波进度 这个以前把我难死了 死活不会 都怪自己太菜了 那么现在来看看到底难不难 真正最简单的实现方法 先来了解下path类的基本方法 移动起点 move
  • 解读欧债危机-时寒冰

    读这本书 让我有种真的仿佛明白货币就是货币 不是所谓的钱 货币真的那样的不靠谱 应该读一读 货币战争 的 1 1931年 金融危机过后 美元才取代英镑 成为世界货币 海湾的石油全部使用美元作为结算货币 法国曾经挑战美元的权威 用美元换黄金
  • 2021年最新metasploitable3虚拟机安装教程---三分钟搞定

    网上很多教程又是packer又是vagrant的 瞎几把折腾几天也没搞定 一句命令 多处报错 而且安装起来服务器在国外以至于超级慢 超时就自己挂掉且前面安装的也没了 超级恶心 然后在官方github找到了最简洁的安装方法 1 下载ova文件
  • SpringCloud启动报错Failed to initialize DiscoveryClient

    SpringCloud启动报错Failed to initialize DiscoveryClient 1 报错 2 解决办法 参考 1 报错 Error creating bean with name scopedTarget eurek
  • 《Android开发从零开始》视频下载

    Android开发从零开始 1 Android开发环境搭建 mp4 30 64 MB Android开发从零开始 2 模拟器的使用 mp4 20 78 MB Android开发从零开始 3 第一个Android程序 mp4 45 62 MB
  • fgo显示服务器内部异常,fgo服务器数据库异常

    fgo服务器数据库异常 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 云服务器备份的备份存储库和复制存储库分为两种规格
  • Gentle Jena【2020 年 “联想杯” G题】【笛卡尔树/单调栈】

    题目链接 题意 给你N个数 b 1 b n 但是不是一开始就给出的 一开始只给出b 1 后面的都是通过前面的情况得到的 给出p x y z和b 1 p x y z都是涉及b 2 b n 怎样来的 我们定义一个B S 还有 而其中A i 是代
  • PostgreSQL的基本使用整理

    我是目录 1 数据库操作 2 表操作 3 Schema 模式 4 如何备份PG数据库 5 用户操作 6 常用命令总结 1 数据库操作 1 创建数据库 create database mydb 2 查看所有数据库 list 或 l 3 切换当