前言
PostgreSql常被称为Postgres
,简称PG
,后文中以PG称呼。是当今非常流行的一种数据库。
为什么使用PG
在分析这个问题之前,我认为有必要说一说Oracle和MySql这两家数据库。
Oracle
Oracle作为占有率最高的数据库,由Oracle公司开发,提供商业支持,其流行的原因在于其强大的性能和较为完善的数据库设计,然而,Oracle是一家商业公司,使用其产品是有一定风险的,更何况是数据库这么重要的东西。
目前很多公司都有去Oracle的趋势。
MySql
MySql是商业开源的,但是MySql前两年就已经被Oracle收购。现在依然非常流行。由于被Oracle收购,其创始人开发了分支版本MariaDB,以GPL2.0协议开源。
https://github.com/MariaDB/server
PG
- 开源,商业友好协议
PG使用的开源协议接近于BSD协议,是对商业使用非常友好的一种协议。
https://github.com/postgres/postgres
PG不仅开源,还拥有一个非常强大的社区。使用商业友好的开源协议意味着风险更低,不会有哪天掐着你的脖子要钱。
- 广泛的数据类型
我印象最深刻的是数组类型,因为MySql中是不支持数组的,只能通过存json来模拟数组。
JSONB,在存放json时以二进制方式存储,提高性能。
全文搜索类型,允许你在文本字段上执行复杂的搜索查询
- 并发性能更强
使用
登录
-U指定用户,-d指定数据库名称
psql -U postgres -d postgres
列出全部数据库
\l
列出当前数据库所有表
\dt
查看某个表的表结构
\d xxx
增删改查
和其他数据库基本一致,没什么不同。
退出登录
\q
备份数据库
这个是用命令,不是psql内。
下面是powershell终端,执行非path内的命令时不能省略./
powershell可以使用正斜杠和反斜杠来作为路径分隔符。
# cd到pg的bin目录
cd 'C:\Program Files\PostgreSQL\16\bin'
./pg_dump -U postgres -d postgres -f C:/Users/acer/Desktop/backup.sql
恢复数据库
我们进入psql,删除数据库
重建数据库
create database postgres;
到命令页面(不是psql内部)执行psql命令恢复数据库
./psql -U postgres -d postgres -f C:/Users/acer/Desktop/backup.sql
数据库回来了
注意
- psql内部使用sql命令,必须以;结尾,如果没有分号,则没有任何提示(而oracle中不以;结尾是可以执行的)。我查了半天为什么没反应。
- 如果有一个无效的命令(不以\开头),psql里面不会报错,只是什么反应都没有。