PostgreSQL入门教程

PG介绍

PostgreSQL是一个免费的对象-关系数据库

PG号称是“开源界的Oracle”

postgresql官网

PostgreSQL: The world's most advanced open source database

全球数据库排行榜

DB-Engines Ranking - popularity ranking of database management systems

国产数据库排行

中国数据库排行 - 墨天轮

很多都是基于PGSQL开发的,“信创”趋势

学习本课程的前置知识

  1. 会docker
  2. 会mysql

PG与Mysql的区别

相对于mysql的优势

  1. 在SQL实现上要比Mysql完善
  2. 对表连接支持较完整,支持索引类型很多,复杂查询能力较强
  3. PG主表采用堆表存放,Mysql采用索引组织表,能够支持比Mysql更大的数据量
  4. PG的主备复制属于物理复制,相当于Mysql的基于binlog的逻辑复制,数据的一致性更加可靠,复制性能更高
  5. 支持JSON和其他NoSQL功能
  6. 完全免费,如果你把PGSQL改一改,然后再拿去卖钱,也没有人管你,这一点很重要

安装

使用docker安装

docker pull postgres:12-alpine3.20
docker run --name pgsql --restart=always -d -p 5432:5432 -v /opt/pgsql/data:/var/lib/postgresql/data --shm-size=10g -e POSTGRES_USER=root  -e POSTGRES_PASSWORD=mysecretpassword postgres:12-alpine3.20

docker run --name p1 --restart=always -d --shm-size=10g   -e POSTGRES_PASSWORD=mysecretpassword postgres:12-alpine3.20


docker run --name p2 --restart=always -d --shm-size=10g -e POSTGRES_USER=root   -e POSTGRES_PASSWORD=mysecretpassword postgres:12-alpine3.20

  • POSTGRES_USER:设置 PostgreSQL 的超级用户名(默认为 postgres)。
  • POSTGRES_PASSWORD:设置 PostgreSQL 的超级用户密码。
  • POSTGRES_DB:设置默认数据库名(如果未设置,默认创建与用户同名的数据库)。

方便起见,可以进容器之后,创建用户postgres的用户,后面就会方便一点

docker exec -it pgsql bash
adduser postgres
su postgres


PGSQL的基本使用

本课程是建立在会了mysql之后

使用类比的方式去学习

登录 连接数据库,默认用户和数据库都是postgres

如果用postgres用户连接数据库,是不用输入密码的

psql -U user -d db_name -h 127.0.0.1 -p 5432

数据库操作

# 建库
create database db;
# 查看数据库列表
\l
# 切换数据库
\c
# 删除数据库  需要当前会话不在当前库
drop database db1;

# 在shell中直接建库
createdb -U postgres mydb


数据表的相关操作

PG支持的数据类型很多

# 建表
create table test(id serial primary key, name varchar(16) not null);

# 插入数据
insert into test(name) values('枫枫');

# 查记录
select * from test;

# 查看当前库下的所有表
\d

# 看表结构
\d test


Schema

在mysql中,Schema就是库

但是在pg中,Schema不太一样,可以理解为命名空间,在库的下面又套了一层

使用模式(Schema)的优势:

  • 允许多个用户使用一个数据库并且不会互相干扰
  • 命名空间
  • 将数据库对象组织成逻辑组以便更容易管理
  • 第三方应用的对象可以放在独立的模式中,这样他们就不会与其他对象的名称发生冲突
# 创建模式
CREATE SCHEMA schema_name;
# 创建表到指定模式
CREATE TABLE schema_name.table_name (
    column_name data_type
);
# 切换模式
SET search_path TO schema_name;
# 查看模式列表
\dn;
# 删除模式
DROP SCHEMA schema_name CASCADE;

备份数据库

# 导出数据
pq_dump -U postgres db_name > dbname.sql
# 恢复数据  需要先创建数据库
psql -f xx.sql -U postgres db

用户操作

# 创建用户并设置密码
create user u1 password 'pwd';

# 创建一个创建用户
create user u2  superuser  password 'pwd';

# 创建一个可以建库的用户
create user u3 createdb password 'pwd';

# 查看用户列表
\du

# 赋予权限  赋予 用户对 xx 数据库中 public 模式的所有权限:
GRANT ALL PRIVILEGES ON DATABASE db_name TO username;

# 取消权限
REVOKE ALL PRIVILEGES ON DATABASE db_name  FROM username;

# 删除用户
DROP USER username;

数据类型

json和jsonb

参考文档

schema使用 PostgreSQL基本使用(3)Schema_postgresql schema-优快云博客

PostgreSQL 中的模式是什么 PostgreSQL 中的模式是什么_pg数据库默认模式是啥-优快云博客

给pgsql添加用户 给PGSQL添加用户_pgsql 创建用户-优快云博客

pgsql删除用户 【PostgreSQL】入门篇——如何创建、删除和管理数据库及其用户,包括权限设置和角色管理_postgresql 创建数据库-优快云博客

pgsql基本数据类型 PostgreSQL数据类型及基本操作_pgsql数据类型-优快云博客

pgsql权限 PostgreSQL 数据库权限、角色总结 - 误会馋 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值