说明
PG在使用中,常常和MySQL以及 Oracle进行比较使用。了解基本的情况,用于对相应的技术有个大概认识
PG基本情况
查看pg_catalog.pg_namespace来查看当前数据库中全部的Schema
select oid,* from pg_catalog.pg_namespace;
SHOW search_path;
select * FROM information_schema.tables;
select catalog_name,schema_name from information_schema.schemata ;
information_schema.columns
系统Schema: information_schema 与 pg_catalog
pg_catalog 模式,它包含系统表和所有内置数据类型、函数、操作符。
pg_catalog 总是搜索路径中的一部分。如果它没有明确出现在路径中,那么它隐含地在所有路径之前搜索
pg_catalog 是系统Schema,包含了系统的自带函数/数据类型定义等,pg_catalog是保障postgres正常运转的重要基石。
information_schema是方便用户查看表/视图/函数信息提供的,它大多是视图,MySQL,SQL Server同样有information_schema这个schema。
查询
SELECT tablename FROM pg_tables;
SELECT viewname FROM pg_views WHERE schemaname =‘public‘ ;
查看表结构
SELECT table_name,column_name,data_type,character_maximum_length
FROM information_schema.columns
WHERE table_schema=‘testpg‘ and TABLE_NAME =‘t_test_conution‘;
查看表数据
select * from "testpg"."t_test_conution" limit 2;
分布式数据库来说,动态扩缩容
Citus 以插件的方式扩展到postgresql中,独立于postgresql内核
database.schema.TABLE
有声明任何模式名字就创建了表。缺省时,这样的表(以及其它对象)都自动放到一个叫做"public"的模式中去
修改主库,开启归档,将日志归档到从库: archive_mode = on
数据类型
character varying(n), varchar(n) 变长,有长度限制
character(n), char(n) 定长,不足补空白
varchar(n) 和 char(n) 分别是 character varying(n) 和 character(n)的别名,
如果没有声明长度的 character 等于 character(1) ;
如果不带长度说明词使用 character varying,那么该类型接受任何长度的字符串。后者是 PostgreSQL 的扩展。
decimal numeric
bigint integer
执行的操作
索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构
PostgreSQL中的默认索引类型是B-Tree
散列:与具有固有排序的B-Tree索引不同
GIN:GIN是一个反向索引,它基本上允许单个键的多个值
BRIN:如果您的数据具有特定的自然顺序
事务
BEGIN TRANSACTION:开始一个事务。
COMMIT:事务确认,或者可以使用 END TRANSACTION 命令。
ROLLBACK:事务回滚
事务可以使用 BEGIN TRANSACTION 命令或简单的 BEGIN 命令来启动。此类事务通常会持续执行下去,
直到遇到下一个 COMMIT 或 ROLLBACK 命令。不过在数据库关闭或发生错误时,事务处理也会回滚
plsq 元命令
PostgresQL 常用的元命令 PostgreSQL中也有一个类似的命令行工具,就是plsq,它允许你交互地键入SQL或命令
PostgresQL 命令的格式是用反斜线后面直接跟上一个命令动词,然后是一些参数。
在使用前可以使用“\?”来获取帮助信息,了解可以使用的命令清单
进入psql psql -h <hostname or ip> -p <端口> [数据库名称] [用户名称]
表的清理和删除
PostgreSQL 中 DELETE 语句删除数据的通用语法: 删除 PostgreSQL 表中的数据
DELETE FROM table_name WHERE [condition];
如果没有指定 WHERE 子句,PostgreSQL 表中的所有记录将被删除。
PostgreSQL 中 TRUNCATE TABLE 用于删除表的数据,但不删除表结构。
PostgreSQL 中 DELETE 语句删除数据
truncate table 在功能上与不带 WHERE 子句的 delete语句相同:二者均删除表中的全部行
PostgreSQL 中 DROP TABLE 删除表, 这个命令会连表的结构一起删除
分区表
分区表:
PostgreSQL本身支持基于从一个或多个列值计算的分区键值将表分片到多个子表中
参考:
postgreSQL psql工具使用详解 https://www.cnblogs.com/nanshanjushi/p/11324607.html
数据存储_PostgreSQL基本内容