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

想熟悉PostgreSQL?这篇就够了

括号内的部分分为两部分:列定义和表约束。...box:存储定义矩形的数据 polygon:存储定义任何封闭空间的数据 设备规格 inet:存储IP地址 macaddr:存储设备MAC地址 PostreSQL列和表约束 列定义还可以具有约束,这些约束为列中找到的数据类型提供规则...以下内容可用作数据类型后面的空格分隔值: NOT NULL:列不能具有空值 UNIQUE:任何记录的列值都不能相同。Null始终被视为唯一值 PRIMARY KEY:上述两个约束的组合。...每张表只能使用一次 CHECK:确保列中值的条件为真 REFERENCES:值必须存在于另一个表的列中 在定义列之后,可以声明表范围的约束。...要添加一个默认值,请提供以下命令: ALTER TABLE pg_equipment ALTER COLUMN functioning SET DEFAULT 'true'; 如果我们想确保该值也不为null

3.2K20

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

介绍 关系数据库管理系统是许多网站和应用程序的关键组件。它们提供了一种存储,组织和访问信息的结构化方法。 PostgreSQL或Postgres是一个关系数据库管理系统,它提供SQL查询语言的实现。...您还可以选择为每列添加表约束。...这从serial类型的设备ID开始。此数据类型是自动递增整数。您还为此列提供了约束,这意味着primary key值必须唯一且不为null。...接下来的两个命令的设备分别创建type和color,其中每一个可以不为空。之后的命令会创建一个location列并创建一个约束,该约束要求该值为八个可能值之一。...添加和删除表中的列 创建表后,您可以修改它以相对容易地添加或删除列。

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

    如何在Debian 8上安装和使用PostgreSQL 9.4

    如果您的应用程序或服务需要数据库,Debian 8和PostgreSQL的组合是城里最好的组合之一。...我们还可以选择为每列添加表约束。...我们已经为此列提供了主键的约束,这意味着值必须是唯一的而不为空。 对于我们的两个列,我们没有给出字段长度。这是因为某些列类型不需要设置长度,因为类型隐含了长度。...然后我们给出设备类型和颜色的列,每个列都不能为空。然后,我们创建一个位置列并创建一个约束,该约束要求该值为八个可能值之一。最后一列是日期列,记录我们安装设备的日期。...添加,查询和删除表中的数据 现在我们已经创建了一个表,我们可以在其中插入一些数据。 让我们添加一张幻灯片和一个swing。我们通过调用我们想要添加的表,命名列然后为每列提供数据来完成此操作。

    4.3K00

    PostgreSQL 索引类型详解

    索引是否可以有多个键列与是否可以向索引中添加列无关。...,但在约束条件应用于前导(最左边)列时效率最高。...对于多列索引,等式约束应用于前导列,并且在第一个没有等式约束的列上应用不等式约束,这些约束将限制扫描索引的部分。...自动创建唯一索引: 当为表定义唯一约束或主键时,PostgreSQL 会自动创建唯一索引。该索引覆盖构成主键或唯一约束的列(如果适用,会创建多列索引),并用于实施约束。...也可以通过创建具有限制的唯一部分索引,在列中只允许一个 null。IS NULL 例 11.4.不要使用部分索引来替代分区 在数据库中,不应该通过创建大量非重叠的部分索引来替代分区。

    9410

    探索 PostgreSQL 基础语法:开启数据库编程之旅

    PostgreSQL 作为一款功能强大、开源且高度可扩展的关系型数据库管理系统,被广泛应用于各种领域。...username 和 password 列是必填字段,email 列要求值唯一,以保证用户邮箱的唯一性。修改表结构随着项目的发展,可能需要对表结构进行修改,如添加新列、修改列的数据类型或约束等。...除了前面提到的主键约束(PRIMARY KEY)和唯一约束(UNIQUE)外,还有其他常见的约束类型。非空约束非空约束(NOT NULL)确保列中的值不能为空。...如在创建 users 表时,username 和 password 列都设置了非空约束,这意味着插入记录时这两列必须提供值。外键约束外键约束(FOREIGN KEY)用于建立表之间的关联关系。...在实际应用中,你可以根据具体的业务需求灵活运用这些语法,构建高效、可靠的数据库应用程序。不断实践和探索,你将能够更深入地掌握 PostgreSQL 的强大功能,为数据处理与管理提供有力的支持。

    11800

    PostgreSQL 教程

    本 PostgreSQL 教程可帮助您快速了解 PostgreSQL。您将通过许多实际示例快速掌握 PostgreSQL,并将这些知识应用于使用 PostgreSQL 开发应用程序。...标识列 向您展示如何使用标识列。 更改表 修改现有表的结构。 重命名表 将表的名称更改为新名称。 添加列 向您展示如何向现有表添加一列或多列。 删除列 演示如何删除表的列。...了解 PostgreSQL 约束 主题 描述 主键 说明在创建表或向现有表添加主键时如何定义主键。 外键 展示如何在创建新表时定义外键约束或为现有表添加外键约束。...检查约束 添加逻辑以基于布尔表达式检查值。 唯一约束 确保一列或一组列中的值在整个表中是唯一的。 非空约束 确保列中的值不是NULL。 第 14 节....PostgreSQL 索引 PostgreSQL 索引是增强数据库性能的有效工具。索引可以帮助数据库服务器比没有索引时更快地找到特定行。

    59210

    【数据库设计和SQL基础语法】--SQL语言概述--数据类型和约束

    主键约束的作用是确保表中的每条记录都具有唯一的主键值,同时不允许主键列包含空值(NULL)。主键约束通常在创建表时定义,可以在一个或多个列上应用。...2.6 非空约束 非空约束(NOT NULL Constraint)是一种用于确保列中的数据不为空的约束。在定义表结构时,可以通过应用非空约束来防止在插入或更新记录时将空值(NULL)插入到特定列中。...三、 数据类型和约束的综合应用 3.1 创建表时的数据类型和约束 在创建表时,通过指定每个列的数据类型和约束,可以定义表的结构和规则。...3.2 修改表结构时的数据类型和约束 在修改表结构时,可以使用ALTER TABLE语句来更改列的数据类型和应用约束。...这个例子说明了如何使用 ALTER TABLE 语句在表已存在的情况下进行结构的调整,包括添加新列和修改现有列的数据类型以及约束。在实际应用中,修改表结构时需要谨慎操作,尤其是在生产环境中。

    36910

    分布式 PostgreSQL 集群(Citus)官方示例 - 多租户应用程序实战

    这最大限度地减少了节点之间的网络开销,并允许 Citus 有效地支持所有应用程序的连接(joins)、键约束(key constraints)和事务(transactions)。...即使在单机数据库中,通过添加公司 ID 对表进行非规范化也是很有用的,无论是为了行级安全还是为了额外的索引。正如我们所看到的,额外的好处是包括额外的列也有助于多机器扩展。...到目前为止,我们创建的 schema 使用单独的 id 列作为每个表的主键。Citus 要求主键和外键约束包括分布列。...传统上,使用多租户共享模式方法的数据库采用创建固定数量的预分配“自定义”列,或具有外部“扩展表”。但是,PostgreSQL 为其非结构化列类型提供了一种更简单的方法,尤其是 JSONB。...此外,使用 Citus 企业版,应用程序在分片重新平衡期间无需停机。读取请求无缝地继续,并且写入仅在它们影响当前正在运行的分片时才被锁定。

    3.9K20

    MySQL技能完整学习列表5、数据库操作——3、索引(Indexing)——4、约束(Constraints)

    BTREE索引在数据库管理系统中广泛应用,如MySQL、Oracle和PostgreSQL等。 BTREE索引的说明: 数据结构:BTREE索引是一种树形数据结构,由根节点、分支节点和叶子节点组成。...约束(Constraints) MySQL的约束是一种规则,用于限制表中的数据以确保数据的准确性和可靠性。约束可以在创建表时定义,也可以在表创建后添加。...以下是MySQL中常用的几种约束: 1、NOT NULL 约束 sql`CREATE TABLE students ( id INT, name VARCHAR(50) NOT NULL,...2、UNIQUE 约束 sql`ALTER TABLE students ADD UNIQUE (email);` 确保某列的值是唯一的,可以有多个NULL值。...3、PRIMARY KEY 约束 sql`ALTER TABLE students ADD PRIMARY KEY (id);` 确保某列的值是唯一的并且不为空。一个表只能有一个主键。

    26110

    SqlAlchemy 2.0 中文文档(七十五)

    另请参见 可索引 ### 新选项允许显式持久化 NULL 覆盖默认值 与 PostgreSQL 中添加的新 JSON-NULL 支持相关,作为 JSON “null”在 ORM 操作中如预期般插入,当不存在时被省略的一部分...#3514 #### 新增 JSON.NULL 常量 为了确保应用程序始终可以完全控制一个 JSON、JSON、JSON 或 JSONB 列是否接收 SQL NULL 或 JSON "null" 值,添加了常量...的措辞已经有所减少;由于使用 ORM 或 Core 编译的 SQL 结构时,此消息现在应该极为罕见,因此它仅在检索使用实际上具有歧义的字符串名称的结果列时才会说明 Ambiguous column name...#3514 新增 JSON.NULL 常量 为了确保应用程序始终可以在值级别上完全控制 JSON、JSON、JSON 或 JSONB 列是否应接收 SQL NULL 或 JSON "null" 值,已添加常量...此外,当通过将表达式传递给Query.distinct()来使用 PostgreSQL DISTINCT ON 格式时,上述“添加列”逻辑将完全禁用。

    33010

    SQL NOT NULL约束

    大家好,又见面了,我是你们的朋友全栈君。 SQL NOT NULL约束 一、 说明 本文主要讲一下,SQL的NOT NULL(不为空)约束相关内容。...SQL NOT NULL约束的作用 主要规定表中的数据必须遵守一定的规则,如果存在违反约束的数据行为,行为会被约束终止(也就是无法把数据添加到该表中)。...而不为空约束则强制列不接受 NULL 值 2.添加约束 (1)约束可以在创建表时规定(通过 CREATE TABLE 语句) 语法为: CREATE TABLE 表名(列名 该列的数据类型 (约束)...,另一列名 另一列的数据类型 (另一列约束)…) 例子: 创建一个Persons表,ID列为int类型且不为空,Name列为varchar类型且不为空,Address列为varchar类型且不为空,...NOT NULL; 注意:修改约束时可能会出现以下状况 1.把某个表的某个列的默认约束改为非空约束时,若是该列中原本的数据有空值存在则无法执行成功,需先将空的数据赋值才可以执行成功。

    60910

    Citus 分布式 PostgreSQL 集群 - SQL Reference(创建和修改分布式表 DDL)

    目录 创建和分布表 引用表 分布协调器数据 共置表 从 Citus 5.x 升级 删除表 修改表 添加/修改列 添加/删除约束 使用 NOT VALID 约束 添加/删除索引 手动修改 创建和分布表...添加列或更改其默认值的工作方式与在单机 PostgreSQL 数据库中一样: ALTER TABLE https://www.postgresql.org/docs/current/static/ddl-alter.html...将它们添加到非分布列将产生错误(请参阅无法创建唯一性约束)。...ALTER TABLE ads ALTER COLUMN image_url SET NOT NULL; 使用 NOT VALID 约束 在某些情况下,对新行实施约束,同时允许现有的不符合要求的行保持不变是很有用的...Citus 使用 PostgreSQL 的 “NOT VALID” 约束指定,为 CHECK 约束和外键支持此功能。 例如,考虑将用户配置文件存储在引用表中的应用程序。

    2.8K20

    SqlAlchemy 2.0 中文文档(四十一)

    或者,当检测到循环时,sort_tables_and_constraints() 函数将自动返回外键约束的单独集合,以便可以将其分别应用于模式。...另外,当检测到循环时,sort_tables_and_constraints()函数将自动将外键约束返回到一个单独的集合中,以便可以单独应用到模式中。...支持 JSON null 与 SQL NULL 在处理 NULL 值时,JSON 类型建议使用两个特定的常量来区分一个计算为 SQL NULL 的列,例如,没有值,与 JSON 编码的字符串"null"...当使用包含特殊逻辑的JSON数据类型时,此符号可以作为参数值传递,该逻辑解释此符号表示列值应为 SQL NULL,而不是 JSON 的"null": from sqlalchemy import null...支持 JSON null 与 SQL NULL 处理 NULL 值时,JSON 类型建议使用两个特定的常量来区分一个评估为 SQL NULL 的列(例如,没有值),与 JSON 编码的字符串 "null

    30810

    MySQL 的约束和索引专题

    ❑ 表可包含多个唯一约束,但每个表只允许一个主键。 ❑ 唯一约束列可包含 NULL 值。 ❑ 唯一约束列可修改或更新。 ❑ 唯一约束列的值可重复使用。...检查约束 检查约束用来保证一列(或一组列)中的数据满足一组指定的条件。检查约束的常见用途有以下几点。 ❑ 检查最小或最大值。例如,防止 0 个物品的订单(即使 0 是合法的数)。 ❑ 指定范围。...检查约束可以在数据类型内又做了进一步的限制,这些限制极其重要,可以确保插入数据库的数据正是你想要的数据。不需要依赖于客户端应用程序或用户来保证正确获取它,DBMS 本身将会拒绝任何无效的数据。...❑ 可以在索引中定义多个列(例如,州加上城市)。这样的索引仅在以州加城市的顺序排序时有用。如果想按城市排序,则这种索引没有用处。 提示:检查索引索引的效率随表数据的增加或改变而变化。...使用 ALTER 命令删除索引 主键作用于列上(可以一个列或多个列联合主键),添加主键索引时,你需要确保该主键默认不为空(NOT NULL)。

    1.6K30

    进阶数据库系列(十三):PostgreSQL 分区分表

    比如可近日期范围分区 列表分区 分区表显示列出其所包含的列值 哈希分区 PostgreSQL11版本引入,可以根据自定义的hash规则,通过为每个分区指定模数和余数来对表进行分区。...) ); 创建的表结构如下图所示 创建子分区表 每个分区表必须继承自主表,并且正常情况下都不要为这些分区表添加任何新的列。...在执行查询时,PostgreSQL默认将会把查询条件应用到该表结构的所有分区上,因为PosgreSQL不知道这些分区表表名和表内容的关联性。...于是需要添加表约束,它会告诉数据库这些表的内容,并允许规划器根据条件去查询对应的子分区,这样在很多情况下,能极大地加快查询速度。...并且在PostgreSQL中,这些表约束是可以重叠的,但一般来说创建非重叠的表约束会更好。重叠的表约束只有在一定特定场景下有意义。

    3.4K22

    SqlAlchemy 2.0 中文文档(七十六)

    用declared_attr修饰的函数现在仅在生成基于混合的列副本之后才被调用。...对于 PostgreSQL 和 MySQL,这种逻辑有一些注意事项: PostgreSQL 当创建唯一约束时,PostgreSQL 的行为是隐式地创建一个与该约束对应的唯一索引。...另请参阅 命名 CHECK 约束 配置布尔值、枚举和其他模式类型的命名 #3299 当约束引用未附加的列时,可以在其引用的列附加到表时自动附加约束 自版本 0.8 起,Constraint至少具有根据传递的与表附加的列...此外,外键约束现在不再需要名称即可通过 ALTER 创建;仅在 DROP 操作时需要名称。在 DROP 的情况下,该功能将确保只有具有显式名称的约束实际上包含在 ALTER 语句中。...另请参阅 PostgreSQL 索引反射 MySQL / MariaDB 唯一约束和反射 #3184 PostgreSQL 当创建唯一约束时,PostgreSQL 的行为是隐式创建与该约束对应的唯一索引

    10510

    SqlAlchemy 2.0 中文文档(七十三)

    #3844 ## 新功能和改进 - 核心 新的多列命名约定标记,长名称截断 为了适应一个MetaData命名约定需要在多列约束之间消除歧义,并希望在生成的约束名中使用所有列的情况,添加了一系列新的命名约定标记...#3844 新功能和改进 - 核心 新的多列命名约定标记,长名称截断 为了适应MetaData命名约定需要区分多列约束并希望在生成的约束名称中使用所有列的情况,添加了一系列新的命名约定标记,包括column...LIFO ### 新的多列命名约定标记,长名称截断 为了适应需要通过 MetaData 命名约定消除多列约束的歧义,并希望在生成的约束名称中使用所有列的情况,添加了一系列新的命名约定标记,包括 column...#3850 ### 增加对 SQLite 约束中 ON CONFLICT 的支持 SQLite 支持一个非标准的 ON CONFLICT 子句,可以为独立约束以及一些列内约束(如 NOT NULL)指定...#3850 增加对 SQLite 约束中 ON CONFLICT 的支持 SQLite 支持一个非标准的 ON CONFLICT 子句,可以为独立约束以及一些列内约束(如 NOT NULL)指定。

    24410

    PostgreSQL基础知识整理

    删除或修改现有表中的列,也可以用来添加和删除现有表上的各种制约因素。...column; -- 现有表中更改数据类型的列 ALTER TABLE table MODIFY COLUMN column datatype; -- 现有表中一列添加NOT NULL约束 ALTER...VALUES子句或查询的值都与显式或隐式的列列表从左到右。 如果要添加表中的所有列的值,可能不需要在SQL查询中指定列(次)名称。但要确保表中是在相同的顺序的列值的顺序。...如果所有参数都是NULL那么返回NULL。它常用于在显示数据时用缺省值替换NULL。语法如下: COALESCE(value [, ...])...使用示例: SELECT COALESCE(NULL, NULL, GETDATE()); NULLIF 当且仅当value1等于value2时,NULLIF才返回null。否则它返回value1。

    3.6K10
    领券