初识PostgreSQL(一)

中文翻译网址:文档目录/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值,不应该建索引

列值被频繁维护,不应该建索引

猜你喜欢

转载自blog.csdn.net/qq_42697946/article/details/130343769