中文翻译网址:文档目录/Document Index: 世界上功能最强大的开源数据库...
官网下载地址:Community DL Page
Windows 10 安装忽略(第三方及图形可视化工具选择安装)
一、开始使用
1、启动postgreSQL 服务
进入服务安装位置/bin下,执行cmd命令,通过命令启动服务
pg_ctl.exe -D "D:\Program Files\PostgreSQL\12\data" start
#说明: D:\Program Files\PostgreSQL\12\data 替换为安装时实际/data存储目录
执行出现以下结果,则启动成功!
启动异常,解决方案:
1、删除已存在/data目录
2、重新初始化/data存储文件,执行
initdb.exe -D "data存储位置" -E UTF-8 --locale=chs -U postgres -W
例:C:\Program Files\PostgreSQL\12\data #此为默认位置
2、本地连接数据库及创建测试库和表 本次使用 Navicat Premium 15 版本连接
创建测试数据库——test_db
创建测试数据表——test 设置表自增主键
(1)、创建测试数据表
CREATE TABLE "public"."test" ( "id" int4 NOT NULL, "name" varchar(255) COLLATE "pg_catalog"."default", "create_time" timestamp(6), CONSTRAINT "test_pkey" PRIMARY KEY ("id") ) ; ALTER TABLE "public"."test" OWNER TO "postgres"; COMMENT ON COLUMN "public"."test"."id" IS '主键'; COMMENT ON COLUMN "public"."test"."name" IS '姓名'; COMMENT ON COLUMN "public"."test"."create_time" IS '时间';
(2)、创建主键自增序列(选中表—>其他—>新建序列)
(3)、主键列关联序列设置
nextval('序列名称'::regclass)
(4)、支持数据类型说明
名字 |
别名 |
描述 |
bigint |
int8 |
有符号的8字节整数 |
bigserial |
serial8 |
自动增长的8字节整数 |
bit [ (n) ] |
定长位串 |
|
bit varying [ (n) ] |
varbit [ (n) ] |
变长位串 |
boolean |
bool |
逻辑布尔值(真/假) |
box |
平面上的普通方框 |
|
bytea |
二进制数据( “字节数组” ) |
|
character [ (n) ] |
char [ (n) ] |
定长字符串 |
character varying [ (n) ] |
varchar [ (n) ] |
变长字符串 |
cidr |
IPv4或IPv6网络地址 |
|
circle |
平面上的圆 |
|
date |
日历日期(年、月、日) |
|
double precision |
float8 |
双精度浮点数(8字节) |
inet |
IPv4或IPv6主机地址 |
|
integer |
int int4 int8 |
-32768~ +32767 -21474836478 ~ 2147483647 -9223372036854775808 ~ +9223372036854775807 |
interval [ fields ] [ (p) ] |
时间段 |
|
json |
文本 JSON 数据 |
|
jsonb |
二进制 JSON 数据,已分解 |
|
line |
平面上的无限长的线 |
|
lseg |
平面上的线段 |
|
macaddr |
MAC(Media Access Control)地址 |
|
macaddr8 |
MAC(Media Access Control)地址(EUI-64格式) |
|
money |
货币数量 |
|
numeric [ (p, s) ] |
decimal [ (p, s) ] |
可选择精度的精确数字 |
path |
平面上的几何路径 |
|
pg_lsn |
PostgreSQL 日志序列号 |
|
point |
平面上的几何点 |
|
polygon |
平面上的封闭几何路径 |
|
real |
float4 |
单精度浮点数(4字节) |
smallint |
int2 |
有符号2字节整数 |
smallserial |
serial2 |
自动增长的2字节整数 |
serial |
serial4 |
自动增长的4字节整数 |
text |
变长字符串 |
|
time [ (p) ] [ without time zone ] |
一天中的时间(无时区) |
|
time [ (p) ] with time zone |
timetz |
一天中的时间,包括时区 |
timestamp [ (p) ] [ without time zone ] |
日期和时间(无时区) |
|
timestamp [ (p) ] with time zone |
timestamptz |
日期和时间,包括时区 |
tsquery |
文本搜索查询 |
|
tsvector |
文本搜索文档 |
|
txid_snapshot |
用户级别事务ID快照 |
|
uuid |
通用唯一标识码 |
|
xml |
XML数据 |
(5)、事务说明
在PostgreSQL中,开启一个事务需要将SQL命令用BEGIN和COMMIT命令包围起来。事务提交
BEGIN; UPDATE accounts SET balance = balance - 100.00 WHERE name = 'Alice'; -- etc etc COMMIT;
记住那个银行数据库,假设我们从Alice的账户扣款100美元,然后存款到Bob的账户,结果直到最后才发现我们应该存到Wally的账户。我们可以通过使用保存点来做这件事:
事务回退 SAVEPOINT和 ROLLBACK
BEGIN; UPDATE accounts SET balance = balance - 100.00 WHERE name = 'Alice'; SAVEPOINT my_savepoint; UPDATE accounts SET balance = balance + 100.00 WHERE name = 'Bob'; -- oops ... forget that and use Wally's account ROLLBACK TO my_savepoint; UPDATE accounts SET balance = balance + 100.00 WHERE name = 'Wally'; COMMIT;
(6)、索引说明
Btree索引
Btree索引使用Btree数据结构来存储索引数据,可用于处理等值查询和范围查询,包括<、<=、=、>=、>等运算符,以及BETWEEN、IN、IS NULL、IS NOT NULL 等条件。
Btree索引可用于模式匹配查询,如“col LIKE′foo%′”或“col~′^foo′”,但是不能用于“col LIKE′%bar′”之类的后缀模糊匹配查询。Btree索引还可以用于查询结果集排序,如ORDER BY排序。
Hash索引
Hash索引根据每一行数据的索引字段计算哈希码,并维护哈希码、记录指针对应关系。对于哈希码相同的数据来说,可以采用链表来解决冲突。Hash索引的查询速度很快。
GiST索引
GiST(Generalized Search Tree)是一种平衡的树型结构访问方法,可作为一种基础模板来实现任意索引模式。B-tree索引和许多其他的索引模式都可以用GiST索引来实现。GiST 索引适用于多维数据类型和集合数据类型。GiST 多列索引支持在查询条件中包含索引字段的子集。PostgreSQL包含了全文检索、几何数据类型等多个用GiST实现的索引方法。
SP-GiST索引
SP-GiST索引与GiST索引类似,可作为一种基础模板来实现多种搜索方法。SP-GiST索引主要实现非平衡的基于硬盘的数据结构,如四叉树、k-d树和radix树。
GIN索引
GIN索引是一种通用倒排索引(GIN stands for generalized inverted indexes),可以处理包含多个键值,如 hstore, array,jsonb, 和 range 类型。用它来全文搜索或JSON键值的效率很高。GIN 允许用户开发自定义访问方法的数据类型索引,可以支持多种不同用户定义的索引策略。
BRIN索引
BRIN索引BRIN表示块范围索引。BRIN索引存储连续相邻的数据块统计信息,可以大大缩小索引占用空间。对于数据量比较大的表来说,BRIN索引比B-Tree索引插入数据的速度要快,两者的范围查询效率相当。BRIN索引通常用于线性顺序排列的列,如订单表的创建日期。
布尔过滤索引
Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省。
以下场景不建议使用索引:
数据量小的表不要使用索引
频繁大批量插入、更新操作的表不要索引
列上有大量null值,不应该建索引
列值被频繁维护,不应该建索引