PostgreSQL transforms
在 PostgreSQL 中,Transforms 是指通过定义一组规则来转换一种数据类型为另一种数据类型的机制。Transforms 在 PostgreSQL 中通常用于实现不同数据类型之间的隐式类型转换。这些规则定义了如何将一个数据类型的值转换为另一个数据类型的值。以下是关于 PostgreSQL 中 Transforms 的基本概念和用法:1. 查看所有的转换规则: SELECT * FROM pg_transform;2. 查看某个特定类型之间的转换规则: SELECT * FROM pg_transform WHERE typid = 'source_type' AND typidout = 'target_type'; 其中,'source_type' 和 'target_type' 是数据类型的 OID(Object Identifier)。3. 创建转换规则: CREATE TRANSFORM FOR 'source_type' LANGUAGE 'language_...
PostgreSQL tables
在 PostgreSQL 中,您可以使用以下 SQL 查询来查看数据库中的表信息:1. 查看所有表: \dt 或者 SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';2. 查看特定模式中的所有表: \dt schema_name. 或者 SELECT table_name FROM information_schema.tables WHERE table_schema = 'your_schema';3. 查看表的详细信息(列、类型等): \d table_name 或者 SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'your_table';4. 查看表的大小: SELECT table_name, pg_size_pretty(pg_total_relation_size(...
PostgreSQL table_privileges
在 PostgreSQL 中,表权限用于控制用户或角色对表的访问权限。以下是一些常见的表权限和相关的 SQL 示例:1. 授予 SELECT 权限给用户或角色: GRANT SELECT ON TABLE table_name TO username_or_role;2. 授予 INSERT 权限给用户或角色: GRANT INSERT ON TABLE table_name TO username_or_role;3. 授予 UPDATE 权限给用户或角色: GRANT UPDATE ON TABLE table_name TO username_or_role;4. 授予 DELETE 权限给用户或角色: GRANT DELETE ON TABLE table_name TO username_or_role;5. 授予 ALL(SELECT、INSERT、UPDATE、DELETE)权限给用户或角色: GRANT ALL ON TABLE table_name TO username_or_role;6. 收回某个权限: REVOKE SELECT ON ...
PostgreSQL table_constraints
在 PostgreSQL 中,表约束(Table Constraints)用于定义表中列的约束条件,以确保数据的完整性和一致性。以下是一些常见的表约束类型:1. 主键约束(Primary Key Constraint): 主键用于唯一标识表中的每一行,并确保表中没有重复的记录。 CREATE TABLE example_table ( id SERIAL PRIMARY KEY, name VARCHAR(50) );2. 唯一约束(Unique Constraint): 唯一约束确保列中的所有值都是唯一的,但允许空值。 CREATE TABLE unique_table ( unique_column INT UNIQUE, other_column VARCHAR(50) );3. 检查约束(Check Constraint): 检查约束用于确保列中的值符合指定的条件。 CREATE TABLE check_table ( value INT CHECK (value > 0), ...
PostgreSQL sql_sizing
在 PostgreSQL 中,确定数据库的大小涉及到查看表、索引和其他数据库对象的存储空间使用情况。以下是一些用于估算 PostgreSQL 数据库大小的 SQL 查询示例:1. 查看数据库大小: SELECT pg_size_pretty(pg_database_size(current_database())) AS database_size;2. 查看表的大小: SELECT table_name, pg_size_pretty(pg_total_relation_size(table_name)) AS table_size FROM information_schema.tables WHERE table_schema = 'public' ORDER BY pg_total_relation_size(table_name) DESC;3. 查看索引的大小: SELECT indexrelname AS index_name, pg_size_pretty(pg_total_relation_size(indexrelname))...
PostgreSQL sequences
在 PostgreSQL 中,序列(sequence)是一种生成唯一数字值的对象,通常用于生成自增的主键值。序列是一个数据库对象,它可以用于生成整数、小数或日期值,以确保这些值在一定范围内是唯一的。以下是有关 PostgreSQL 序列的一些基本概念和操作:1. 创建序列: 可以使用 CREATE SEQUENCE 语句创建一个序列。以下是一个创建序列的简单示例: CREATE SEQUENCE my_sequence; 上述语句将创建一个名为 my_sequence 的序列。2. 获取序列的下一个值: 使用 NEXTVAL 函数可以获取序列的下一个值。例如: SELECT NEXTVAL('my_sequence'); 这将返回序列 my_sequence 的下一个值,同时使序列的计数器增加。3. 设置序列的当前值: 使用 SETVAL 函数可以设置序列的当前值。例如,将序列 my_sequence 的当前值设置为 100: SELECT SETVAL('my_sequence', 100);4. 查看序列的属性: 使用 pg_se...
PostgreSQL schemata
在 PostgreSQL 中,"schemata" 是复数形式的 "schema",指的是数据库对象的命名空间。Schema 是 PostgreSQL 中用于组织和管理数据库对象(如表、视图、函数等)的容器。每个数据库都包含一个默认的公共 schema,用户可以创建额外的 schema 来组织和隔离数据库对象。以下是一些与 schema 相关的基本概念和操作:1. 默认 Schema: 每个数据库都有一个默认的公共 schema,通常称为 "public"。如果在 SQL 查询中没有指定 schema,那么 PostgreSQL 将默认使用 "public" schema。2. 创建 Schema: 用户可以创建自己的 schema,以便更好地组织和隔离数据库对象。创建 schema 的语法如下: CREATE SCHEMA schema_name;3. 使用 Schema: 在 SQL 查询中,可以通过使用 "schema_name.object_name" 的方式来引用特定 sc...
PostgreSQL routines
在 PostgreSQL 中,术语 "routines" 通常用于指代存储过程(Stored Procedure)和函数(Function)。这些存储过程和函数是由用户定义的一段可以在数据库中被调用的 SQL 代码。它们可以接受参数、执行一系列操作,然后返回结果。在 PostgreSQL 中,你可以使用以下查询获取有关存储过程和函数的信息:SELECT routine_name, routine_type, routine_schema, specific_nameFROM information_schema.routines;这个查询会返回所有存储过程和函数的名称、类型、模式和特定名称。其中: routine_name 是存储过程或函数的名称。 routine_type 表示对象的类型,可能是 'FUNCTION' 或 'PROCEDURE'。 routine_schema 是存储过程或函数所属的模式。 specific_name 是特定于函数的名称,可用于区分具有相同名称但不同参数签名的多个函数。如果你想查看特定存储过...
PostgreSQL routine_privileges
在 PostgreSQL 中,routine_privileges 是 information_schema 目录下的一张系统表,用于存储与存储过程和函数(routine)相关的权限信息。该表包含了有关角色对存储过程和函数的授权信息,包括授予权限的角色、被授予权限的角色、存储过程或函数的信息以及具体的权限类型。以下是 routine_privileges 表的一些关键列: grantor: 授予权限的角色。 grantee: 被授予权限的角色。 routine_catalog: 存储过程或函数所属的目录(通常是数据库名称)。 routine_schema: 存储过程或函数所属的模式。 routine_name: 存储过程或函数的名称。 privilege_type: 授予的权限类型,如 EXECUTE。通过查询 routine_privileges 表,你可以获取有关存储过程或函数的权限信息。以下是一个简单的查询示例,显示了给定存储过程或函数 my_function 授予的所有权限:SELECT grantor, grantee, routine_catalog, routin...
PostgreSQL role_table_grants
在 PostgreSQL 中,role_table_grants 不是标准的系统表。但是有一个 information_schema.table_privileges 表,其中包含有关角色对表的权限授予信息。以下是 information_schema.table_privileges 表的一些关键列: grantor: 授予权限的角色。 grantee: 被授予权限的角色。 table_catalog: 表所属的目录(通常是数据库名称)。 table_schema: 表所属的模式。 table_name: 表的名称。 privilege_type: 授予的权限类型,如 SELECT、INSERT、UPDATE、DELETE、REFERENCES 等。通过查询 information_schema.table_privileges 表,你可以获取有关特定表的权限信息。以下是一个简单的查询示例,显示了给定表 my_table 授予的所有权限:SELECT grantor, grantee, table_catalog, table_schema, table_name, pr...
PostgreSQL role_routine_grants
在 PostgreSQL 中,role_routine_grants 并非是标准的系统表,但是有一个 information_schema.routine_privileges 表,其中包含有关角色对存储过程和函数的权限授予信息。以下是 information_schema.routine_privileges 表的一些关键列: grantor: 授予权限的角色。 grantee: 被授予权限的角色。 routine_catalog: 存储过程或函数所属的目录(通常是数据库名称)。 routine_schema: 存储过程或函数所属的模式。 routine_name: 存储过程或函数的名称。 specific_catalog: 存储过程或函数特定的目录(通常是数据库名称)。 specific_schema: 存储过程或函数特定的模式。 specific_name: 存储过程或函数的特定名称。 privilege_type: 授予的权限类型,如 EXECUTE。通过查询 information_schema.routine_privileges 表,你可以获取有关特定存储过程或函数的权限...
PostgreSQL role_column_grants
在 PostgreSQL 中,role_column_grants 不是一个常见的系统表。然而,有一些与角色(role)和列(column)相关的系统表,其中包含有关角色对列的权限授予信息。其中之一是 information_schema.column_privileges。以下是 information_schema.column_privileges 表的一些关键列: grantor: 授予权限的角色。 grantee: 被授予权限的角色。 table_catalog: 表所属的目录(通常是数据库名称)。 table_schema: 表所属的模式。 table_name: 表的名称。 column_name: 列的名称。 privilege_type: 授予的权限类型,如 SELECT、INSERT、UPDATE、REFERENCES 等。通过查询 information_schema.column_privileges 表,你可以获取有关特定表列的权限信息。以下是一个简单的查询示例,显示了给定表 my_table 中列 my_column 授予的所有权限:SELECT gran...
PostgreSQL referential_constraints
在 PostgreSQL 中,referential_constraints 是 information_schema 目录下的一张系统表,它存储了数据库中外键约束的信息。这张表提供了关于表之间关系的元数据,特别是关于外键的信息。以下是 referential_constraints 表的一些关键列: constraint_catalog: 约束所属的目录(通常是数据库名称)。 constraint_schema: 约束所属的模式。 constraint_name: 约束的名称。 unique_constraint_catalog: 关联的唯一约束所属的目录。 unique_constraint_schema: 关联的唯一约束所属的模式。 unique_constraint_name: 关联的唯一约束的名称。 match_option: 匹配选项,表示外键与参照表的主键或唯一约束的匹配规则。 update_rule: 外键更新规则,表示在参照表的主键或唯一约束更新时,外键的行为。 delete_rule: 外键删除规则,表示在参照表的主键或唯一约束删除时,外键的行为。通过查询 refe...
PostgreSQL parameters
在 PostgreSQL 中,"parameters" 可以指代不同的概念,具体取决于上下文。以下是一些可能的解释:1. PostgreSQL Configuration Parameters: PostgreSQL有许多配置参数,它们用于调整数据库服务器的行为。这些参数存储在 postgresql.conf 文件中。一些常见的配置参数包括 max_connections(最大连接数)、shared_buffers(共享缓冲区大小)、listen_addresses(监听的网络地址)等。你可以通过编辑 postgresql.conf 文件或者使用 ALTER SYSTEM 命令来修改这些参数。 示例(通过 ALTER SYSTEM 修改参数): ALTER SYSTEM SET max_connections = 100;2. Function or Stored Procedure Parameters: 在 PostgreSQL 中,函数(Function)或存储过程(Stored Procedure)可以接受参数。这些参数允许你向函数传递值,从...
PostgreSQL key_column_usage
在 PostgreSQL 中,key_column_usage 是系统目录表之一,用于存储关于数据库表的主键和外键的信息。具体而言,key_column_usage 表记录了在数据库中定义的主键和外键约束的列信息。以下是 key_column_usage 表的一些关键列: constraint_catalog: 约束所属的目录(通常是数据库名称)。 constraint_schema: 约束所属的模式。 constraint_name: 约束的名称。 table_catalog: 表所属的目录。 table_schema: 表所属的模式。 table_name: 表的名称。 column_name: 列的名称。 ordinal_position: 列在约束中的位置。通过查询 key_column_usage 表,你可以获取有关特定表的主键和外键的详细信息。以下是一个简单的查询示例,显示了表 my_table 的主键列信息:SELECT constraint_name, column_name, ordinal_positionFROM information_schema.ke...
PostgreSQL foreign_tables
在 PostgreSQL 中,foreign_tables 是通过外部数据包装器(Foreign Data Wrapper,FDW)创建的表,它们允许你在 PostgreSQL 数据库中访问和操作来自其他数据源的数据。Foreign tables 提供了一种透明的方式,使得远程数据源的数据在 PostgreSQL 中看起来像本地表一样。以下是创建 foreign table 的基本语法:CREATE FOREIGN TABLE table_name (column1 data_type, column2 data_type, ...) SERVER server_name OPTIONS (option 'value', ...); table_name: foreign table 的名称。 (column1 data_type, column2 data_type, ...): 表的列定义。 SERVER server_name: 指定外部服务器的名称。 OPTIONS: 提供用于配置 foreign table 的选项,具体选项取决于所使用的 FDW。以下是...
PostgreSQL foreign_table_options
在 PostgreSQL 中,foreign_table_options 是一组选项,用于在创建 foreign tables 时指定关于这些表的特定配置信息。这些选项可以根据所使用的外部数据包装器(Foreign Data Wrapper,FDW)的不同而有所变化,因为不同的 FDW 可能支持不同的功能和配置。以下是一个通用的创建 foreign table 的语法,包括 foreign_table_options:CREATE FOREIGN TABLE table_name (column1 data_type, column2 data_type, ...) SERVER server_name OPTIONS (option 'value', ...)在这里,table_name 是 foreign table 的名称,column1、column2 等是表的列定义,server_name 是指定外部服务器的名称。OPTIONS 子句用于指定关于 foreign table 的配置选项。以下是一个简单的例子,演示如何创建一个连接到远程 PostgreSQ...
PostgreSQL foreign_servers
在 PostgreSQL 中,foreign_servers(外部服务器)是一种概念,它允许你通过外部数据包装器(Foreign Data Wrapper,FDW)连接到其他数据源。外部服务器是 FDW 的一部分,用于定义连接到远程数据库或其他数据存储的配置信息。通过外部服务器,你可以在 PostgreSQL 中建立对外部数据源的连接,并通过 foreign tables 在 PostgreSQL 中访问远程数据。以下是创建外部服务器的基本语法:CREATE SERVER server_name FOREIGN DATA WRAPPER wrapper_name OPTIONS (option 'value', ...); server_name: 指定外部服务器的名称。 wrapper_name: 指定使用的外部数据包装器(FDW)的名称,例如 postgres_fdw。 OPTIONS: 提供用于配置连接的选项,具体选项取决于所使用的 FDW。以下是一个简单的示例,演示如何创建一个连接到另一个 PostgreSQL 数据库的外部服务器:CREATE SERVER...
PostgreSQL foreign_server_options
在 PostgreSQL 中,foreign_server_options 是用于定义外部服务器连接参数的一组选项。这些选项允许你配置 PostgreSQL foreign data wrapper(FDW)连接到远程数据源的细节,例如主机名、端口、数据库名、用户凭证等。以下是一个关于如何在创建服务器时使用 foreign_server_options 的简单示例:-- 创建一个服务器,指定连接参数CREATE SERVER my_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS ( host 'remote_host', dbname 'remote_db', port '5432', user 'remote_user', password 'remote_password' );在上述示例中,OPTIONS 子句用于设置连接到远程 PostgreSQL 数据库所需的参数。这些参数可以因数据库系统、网络配置等因素而异。你...
PostgreSQL foreign_data_wrappers
PostgreSQL foreign data wrappers(FDW)是一种 PostgreSQL 扩展,它允许你在 PostgreSQL 数据库中访问和查询来自其他数据存储的数据,而无需将数据复制到 PostgreSQL 数据库中。FDW 允许 PostgreSQL 充当一个虚拟的数据集成引擎,可以透明地查询远程数据源。要使用 foreign data wrapper,首先需要安装并启用相应的扩展。常见的 FDW 包括 postgres_fdw(用于连接到其他 PostgreSQL 数据库)、file_fdw(用于访问文件系统中的数据)和 mysql_fdw(用于连接到 MySQL 数据库)等。以下是一个简单的例子,演示如何使用 postgres_fdw 创建一个连接到另一个 PostgreSQL 数据库的 foreign table:-- 在目标 PostgreSQL 数据库中创建一个服务器CREATE SERVER remote_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'remote_host&...