首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PostgreSQL 教程

排序 指导您如何对查询返回的结果集进行排序。 去重查询 为您提供一个删除结果集中重复行的子句。 第 2 节. 过滤数据 主题 描述 WHERE 根据指定条件过滤行。...连接多个表 主题 描述 连接 向您展示 PostgreSQL 中连接的简要概述。 表别名 描述如何在查询中使用表别名。 内连接 从一个表中选择在其他表中具有相应行的行。...左连接 从一个表中选择行,这些行在其他表中可能有也可能没有对应的行。 自连接 通过将表与自身进行比较来将表与其自身连接。 完全外连接 使用完全连接查找一个表中在另一个表中没有匹配行的行。...交叉连接 生成两个或多个表中的行的笛卡尔积。 自然连接 根据连接表中的公共列名称,使用隐式连接条件连接两个或多个表。 第 4 节....连接删除 根据另一个表中的值删除表中的行。 UPSERT 如果新行已存在于表中,则插入或更新数据。 第 10 节.

59010

MySQL-多表操作

判断指定的条件是否在子查询语句返回的结果集中。 然后根据比较结果完成相关需求的操作。 行子查询 当子查询的结果是一条包含多个字段的记录(一行多列)时,称为行子查询。...外键约束 添加外键约束 外键指的是-一个表中引用另一个表中的一列或多列,被引用的列应该具有主键约束或唯一性约束, 从而保证数据的一-致性 和完整性。 ➢被引用的表称为主表。...ON DELETE与ON UPDATE用于设置主表中的数据被删除或修改时,从表对应数据的处理办法。 ? 关联表操作 实体之间具有一对一、一对多和多对多的联系。...➢具有关联的表中的数据,可以通过连接查询的方式获取,并且在没有添加外键约束时,关联表中的数据插入、更新和删除操作互不影响。...➢对于添加了外键约束的关联表而言,数据的插入、更新和删除操作就会受到一定的约束。 一个具有外键约束的丛表在插入数据时,外键字段的值会受主表数据的约束,保证从表插入的数据必须符合约束规范的要求。

3.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    GreenPlum管理数据库

    它们使用一种多版本模型来维护数据一致性,即多版本并发控制(MVCC)。MVCC为每一个数据库会话实现了事务隔离,并且每一个查询事务会看到一个数据的快照。...2.2.插入行 使用INSERT命令在一个表中创建行。这个命令要求该表的名称和表中每一个列的值,可以选择性地以任意顺序指定列名。如果没有指定列名,以那些列在表中的顺序列出数据值,用逗号分隔它们。...2.5.截断一个表 使用TRUNCATE命令可以快速地移除一个表中的所有行。例如: TRUNCATE mytable; 这个命令在一次操作中清空一个表的所有行。...如果其他并发事务在同一个事务中后续的SELECT查询开始前提交更改,这些查询能够看到不同的数据。UPDATE和DELETE命令只找在该命令开始前提交的行。...中列出所有的系统字典:\dtS 在psql中列出所有的系统视图:\dvS

    34730

    分布式 PostgreSQL 集群(Citus),官方快速入门教程

    目录 多租户应用程序 数据模型和示例数据 创建表 分布表和加载数据 运行查询 实时应用程序分析 数据模型和样本数据 创建表 分布表和加载数据 运行查询 多租户应用程序 在本教程中,我们将使用示例广告分析数据集来演示如何使用...这样的应用程序具有典型的多租户系统的良好特性。来自不同租户的数据存储在一个中央数据库中,每个租户都有自己数据的独立视图。...Citus 支持标准的 INSERT、UPDATE 和 DELETE 命令,用于在分布式表中插入和修改行,这是面向用户的应用程序的典型交互方式。...公司运营的一个有趣查询是查看有关其具有最大预算的活动的详细信息。...该应用程序将插入大量事件数据,并以亚秒级延迟对这些数据进行分析查询。在我们的示例中,我们将使用 Github 事件数据集。

    4.3K20

    在 Kubernetes 上快速测试 Citus 分布式 PostgreSQL 集群(分布式表,共置,引用表,列存储)

    目录 准备工作 创建分布式表 使用共置(Co-location)创建分布式表 创建引用表 使用列式存储创建表 准备工作 这里假设,你已经在 k8s 上部署好了基于 Citus 扩展的分布式 PostgreSQL...SELECT create_distributed_table('events', 'device_id'); 执行此操作后,对特定设备 ID 的查询将有效地路由到单个工作节点,而跨设备 ID 的查询将在集群中并行化...当您需要不包含分布列的快速 join 或外键时,您可以使用 create_reference_table 在集群中的所有节点之间复制表。...压缩了几十倍,效果非常的惊人,大大节省了存储空间。 您可以单独使用列存储,也可以在分布式表中使用,以结合压缩和分布式查询引擎的优势。...但是,您可以使用分区表,其中较新的分区使用基于行的存储,而较旧的分区使用列存储进行压缩。

    2.5K20

    数据库 PostgreSQL 常用命令

    **行:**一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。 主键:主键是唯一的。一个数据表中只能包含一个主键。...索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。...多版本并发控制:PostgreSQL使用多版本并发控制(MVCC,Multiversion concurrency control)系统进行并发控制,该系统向每个用户提供了一个数据库的"快照",用户在事务内所作的每个修改...规则:规则(RULE)允许一个查询能被重写,通常用来实现对视图(VIEW)的操作,如插入(INSERT)、更新(UPDATE)、删除(DELETE)。...在表中插入数据 update [表名] set [目标字段名]=[目标值] where [该行特征] 修改表中的某行某列的数据 delete from [表名] where [该行特征]; delete

    2.2K40

    数据库 PostgreSQL 常用命令

    **行:**一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。 主键:主键是唯一的。一个数据表中只能包含一个主键。...索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。...多版本并发控制:PostgreSQL使用多版本并发控制(MVCC,Multiversion concurrency control)系统进行并发控制,该系统向每个用户提供了一个数据库的"快照",用户在事务内所作的每个修改...规则:规则(RULE)允许一个查询能被重写,通常用来实现对视图(VIEW)的操作,如插入(INSERT)、更新(UPDATE)、删除(DELETE)。...在表中插入数据 update [表名] set [目标字段名]=[目标值] where [该行特征] 修改表中的某行某列的数据 delete from [表名] where [该行特征]; delete

    2.3K30

    PostgreSQL与PostGIS的基础入门

    PostGIS提供简单的空间分析函数(如Area和Length)同时也提供其他一些具有复杂分析功能的函数,比如Distance。...PostgreSQL 3.1.1 psql登陆 # 切换用户 su postgres # 执行psql命令 psql 默认连接postgres数据库,会出现“postgres=#”的字符串,执行效果如下图所示...3.1.10 批量插入数据 批量插入数据有两种常用的方式: 多values方式 INSERT INTO location_city VALUES ('San Francisco', '(-194.0,...tmp创建一个文件location_city.csv,插入如下数据,其中第一行的内容为空: "Denver","(123,34)" "Fort Worth","(-23,21)" "上海","(45,66...中可以直接查看文件编码 :set fileencoding 3.1.11 查询数据 查询location_city表中name与position字段的所有数据: SELECT * FROM location_city

    5.8K31

    《深入浅出SQL》问答录

    A:外键约束能确保引用完整性(换句话说,如果表中的某行有外键,约束能确保该行通过外键与另一张表中的某一行一一对应)。...插入外键列的值必须已经存在与父表的来源中,这是引用完整性。 创建外键作为表的约束提供了明确的优势,如果违反了规则,约束会阻止我们破坏表。 外键不一定要是父表的主键,但是要具有唯一性。 ?...数据模式:一对多 A表的某一条记录可以对应到B表的多条记录,但B表中的一条记录只能对应A表中的某一条记录。 ? 连接线应该带有黑色箭头来表示一对多的连接关系。 ? 数据模式:多对多 ?...创建别名真的很简单,在查询软件中首次使用原始列名的地方后接一个AS并设定要采用的别名,告诉软件现在开始要以另一个名称引用my_contacs表的profession列,这样可以让查询更容易被我们理解。...---- 左外联接 LEFT OUTER JOIN 会匹配左表中的每一行及右表中符合条件的行。 当左表与右表具有一对多关系时,左外联接特别有用。

    2.9K50

    Greenplum 实时数据仓库实践(9)——Greenplum监控与运维

    如果以单行错误隔离模式运行COPY,将跳过含有错误格式的行,装载具有正确格式的行。...选择性越强的条件应该越早被使用,从而使得在计划树中向上传递的记录越少。如果执行计划在选择性评估方面没有对查询条件作出正确的判断,可能需要在相关表的某些字段上收集统计信息。...日志文件在pg_log目录中创建,以逗号分隔值(CSV)格式写入。某些日志条目不包含所有日志字段的值,例如,只有与查询工作进程关联的日志条目才会具有slice_id。...对于具有索引的表列,由于需要同时更新索引,某些操作(如批量更新或表插入)的执行速度可能会较慢。要提高具有索引的表上批处理性能,可以先删除索引,执行批量操作,然后再重新创建索引。...数据本地化情况、为查询分配的段数量对查询性能具有直接影响。同很多数据库系统类似,EXPLAIN用于语句输出查询执行计划。学会读懂EXPLAIN的信息,对于排查性能问题十分有用。

    3.9K32

    聊聊PostgreSQL表膨胀

    PostgreSQL Basic PG中的MVCC(多版本并发)设计目的是读不阻塞写。...当一个事务T1读取表的block B中A行数据时候,第二个事务T2去更新这个表中Block B中A行数据;为了确保read事务不阻塞write事务,T2的write事务把更新后的A这一行数据写到新的空闲空间...,而A这行数据依然在Block B中,这个就是dead tuple.所以在PG中,如果有非常多的update和delete,会产生非常多的dead tuples,这些dead tuples的集合就是PG...PG中的隐藏列设计是为了MVCC功能设计,一个事务中的查询如何找到这个事务开启时候应该读取数据的版本。...ID,xmax隐藏列表示数据删除/更改时候的事务ID.这次模拟是在会话A中初始化插入数据->会话B中更新数据->在回到会话A中查询数据来观察数据表是如何膨胀的。

    1.8K11

    PostgreSQL 13.0-13.15 功能更新和bug fixed列表

    psql的\password命令默认为为CURRENT_USER设置密码,而不是连接的原始用户名 PG13.7 版本号 BUG FIXED/功能更新 PG13.7 停止对引用普通表的整行变量的列使用查询提供的列别名...PG13.7 避免对不包含列的VALUES子句进行内核转储 PG13.7 修正引用外部查询级别的GROUPING()结构所导致的计划错误 PG13.7 修复在同时具有可返回列和不可返回列的索引上进行索引仅扫描的计划生成...PG13.8 在psql的 \watch 命令中,在用Ctrl-C取消后回显一个换行符 PG13.8 修复了contrib/pg_stat_statements在32位平台上处理非常大的查询文本文件时可能出现的问题...PG13.11 在EvalPlanQual检查后重新计算生成的列,在READ COMMITTED隔离模式下,一个行更新的影响可能需要重新应用到比查询最初发现的行版本更新的版本。...PG13.14 修复在 PlaceHolderVars 中错误包装子查询输出表达式的问题,此修复解决了在子查询位于外连接下方且其输出列横向引用了外连接范围外的内容时产生错误结果的问题。

    14010

    【数据库系列】使用psql命令行工具

    psql 命令行工具psql是 PostgreSQL 自带的一个交互式命令行工具,允许用户直接与数据库进行交互。它提供了一个强大的接口,用于执行 SQL 命令、管理数据库和进行数据查询。...输入 psql 命令:在终端中输入上述命令,替换username和databasename为你的实际数据库用户名和数据库名称。输入密码:如果你的数据库设置了密码,系统会提示你输入密码。...插入数据INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2');这条命令将向your_table表中插入一行新数据。...更新数据UPDATE your_table SET column1 = 'new_value' WHERE condition;这条命令将更新满足特定条件的行中的column1列的值。...你可以使用以下命令来管理事务:BEGIN; -- 开始事务-- 执行一系列SQL命令COMMIT; -- 提交事务或者在遇到错误时:ROLLBACK; -- 回滚事务索引创建索引可以显著提高查询性能,尤其是在大型数据库中

    10300

    Greenplum 监控与运维

    如果使用多列筛选器的扫描产生的行数超过估计数,将gp_selectivity_damping_factor服务器配置参数设置为2或更高,然后重新测试查询。 ....在系统没有用户的停机期间,每个月在每个数据库中运行。对识别出来的问题执行修复脚本(gpcheckcat -g生成)。...对识别出来的问题执行修复脚本(gpcheckcat -g生成)。 gpcheckcat -R namespace (4)检查约束和随机分布表。在系统没有用户的停机期间,每个月在每个数据库中运行。...在系统没有用户的停机期间,每个月在每个数据库中运行。对识别出来的问题执行修复脚本(gpcheckcat -g生成)。 gpcheckcat -R dependency 5....数据库维护 (1)标记堆表中已删除的行,以便它们占用的空间可以重用。每天执行一次。 vacuum ; (2)更新表的统计信息。在加载数据后和查询之前执行。

    3.4K31

    进阶数据库系列(十四):PostgreSQL 事务与并发控制

    当一个事务运行在这个隔离级别时,一个select查询只能看到查询开始之前已提交的数据,而无法看到未提交的数据或者在查询执行期间其他事务已经提交的数据。...如果第一个事务进行提交,系统将重新计算查询条件,符合条件后第二个事务继续进行更新操作;如果第一个事务进行更新回滚,那么他的作业将被忽略,第二个事务将继续更新最初发现的行。...在psql中手动的打开自动提交的方法是执行以下命令: postgres=# set AUTOCOMMIT on postgres-# postgres-# set AUTOCOMMIT off postgres...基于多版本的并发控制(MVCC) MVCC通过把数据项的旧值保存在系统中, 来保证并发事务的正确性。 一般把 基于锁的并发控制 称为 悲观机制; 把 MVCC 称为 乐观机制....PostgreSQL 内部数据结构中, 每个元组(行记录) 有 4 个与事务可见性相关的 隐藏列: xmin, 创建该行数据的 xid; xmax, 删除改行的xid; cmin, 插入该元组的命令在事务中的命令序列号

    1.9K30

    如何在Ubuntu 16.04上安装和使用PostgreSQL

    在不切换帐户的情况下访问Postgres提示 您也可以直接使用有sudo权限的postgres帐户运行您想要的命令。 例如,在最后一个示例中,我们只想进入Postgres提示符。...----------+-------+------- public | playground | table | sammy (1 row) 在表中添加,查询和删除数据 现在我们有了一个表,我们可以在其中插入一些数据...首先,请记住不应引用列名,但是您输入的列值确实需要引号。 要记住的另一件事是我们不输入equip_id列的值。这是因为只要创建表中的新行,就会自动生成此项。...如果操场上的幻灯片断开并且我们必须将其删除,我们还可以通过键入以下内容从表中删除行: DELETE FROM playground WHERE type = 'slide'; 如果我们再次查询我们的表格...您可以通过查询所需的记录并将列设置为您要使用的值来更新现有条目的值。我们可以查询“swing”记录(这将匹配我们表中的每个 swing)并将其颜色更改为“red”。

    5.3K10

    FAQ系列之Phoenix

    CSV 可以使用名为 psql 的内置实用程序批量加载 CSV 数据。典型的 upsert 速率是每秒 20K - 50K 行(取决于行的宽度)。...) include (col2) Upsert 这个测试表中的行,Phoenix 查询优化器会选择正确的索引来使用。...请注意,这也适用于在连接上完成的查询 - 例如,上面 myTable 上的查询不会看到它刚刚插入的数据,因为它只能看到在其 CurrentSCN 属性之前创建的数据。...请注意,您可以在“pk2”和“pk3”列上添加二级索引,这将导致对第一个查询(通过索引表)进行范围扫描。 DEGENERATE SCAN 意味着查询不可能返回任何行。...您可能知道,数据作为 KeyValues 存储在 HBase 中,这意味着为每个列值存储完整的行键。这也意味着除非存储了至少一列,否则根本不存储行键。

    3.2K30

    Clustering a Table - Bruce Momjian(译)

    用户数据行存储在文件系统的堆文件中,这些行以不确定的顺序存储。如果表最初是按insert/copy顺序加载的,以后的插入、更新和删除将导致在堆文件中以不可预测的顺序添加行。...其次,与索引组织表不同(Postgres 不支持,因为它们有严重的缺点),堆不会保持聚簇的状态——稍后的插入和更新操作会将行以不确定的顺序放置在堆中,导致随着时间推移堆变得不那么有序——需要在以后继续执行...在下面的示例中,行由于它们的插入顺序而自动排序,并且对pg_stats和pg_statistic 的查询验证相关性为1: -- 使用二列,因此不会使用仅索引扫描,因此该行具有典型长度 CREATE TABLE...,因为统计信息指明了匹配的行随机存储在堆中。...但是,如果有很多更新/删除,插入和更新的行会被放置在表中任何未使用的空间中,因此相关性会很低。

    85130
    领券