当前位置: 首页 > news >正文

第3节-使用表格数据-DEFAULT约束

摘要:在本教程中,你将学习如何使用 PostgreSQLDEFAULT 约束为表列设置默认值。

PostgreSQL DEFAULT 约束简介

PostgreSQL 中,表的列默认值为 NULLPostgreSQL 允许您使用灵活的 DEFAULT 约束为列指定默认值,如下所示:

CREATE TABLE table_name(column1 data_type DEFAULT default_value,column2 data_type,
);

在这种语法中,你需要在列的数据类型之后指定 DEFAULT 关键字,后跟该列的默认值:

column1 data_type DEFAULT default_value

当你在不提供 column1 的值的情况下插入一行时,PostgreSQL 会使用default_value 进行插入:

INSERT INTOtable_name (column2)
VALUES(value2);

你也可以使用 DEFAULT 关键字来便捷地表示在 column1 中定义的默认值:

INSERT INTOtable_name (column1, column2)
VALUES(DEFAULT, value2);

PostgreSQL DEFAULT 约束基本示例

首先,创建表 items ,其 tax 列的默认值为 5%(或 0.05)

CREATE TABLE items (item_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,name VARCHAR(255) NOT NULL,quantity INT NOT NULL,price DEC(11, 2) NOT NULL,tax DEC(11, 2) DEFAULT 0.05
);

其次,向 items 表中插入新行,且不为 tax 列提供值:

INSERT INTOitems (name, quantity, price)
VALUES('iPhone 15 Pro', 1, 1299.99) RETURNING *;

输出:

 item_id |     name      | quantity |  price  | tax
---------+---------------+----------+---------+------1 | iPhone 15 Pro |        1 | 1299.99 | 0.05

PostgreSQL 使用默认值 0.05 插入到 tax 列中。

第三,向 items 表中插入一行新数据,并使用 DEFAULT 关键字进行插入:

INSERT INTOitems (name, quantity, price, tax)
VALUES('iPhone 16 Pro', 1, 1399.99, DEFAULT) 
RETURNING *;

输出:

 item_id |     name      | quantity |  price  | tax
---------+---------------+----------+---------+------2 | iPhone 16 Pro |        1 | 1399.99 | 0.05

由于我们在 INSERT 语句中使用了 DEFAULT 值,PostgreSQL 会使用 tax 列中定义的默认值进行插入。

最后,将一个新行插入到 items 表中,其值为 tax 列的值:

INSERT INTOitems (name, quantity, price, tax)
VALUES('iPhone 17 Pro', 1, 1499.99, 0.08) 
RETURNING *;

输出:

 item_id |     name      | quantity |  price  | tax
---------+---------------+----------+---------+------3 | iPhone 17 Pro |        1 | 1499.99 | 0.08

在这个示例中,PostgreSQL 使用提供的值 (0.08)而非默认值。

为时间戳列设置默认值

PostgreSQL 中,TIMESTAMP 数据类型用于存储日期和时间值。如果希望 TIMESTAMP 列具有默认值,可以将 DEFAULT 约束与 CURRENT_TIMESTAMP 函数一起使用。例如:

首先,创建一个名为 orders 的新表来存储客户订单:

CREATE TABLE orders (order_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,customer VARCHAR(100) NOT NULL,ship_to VARCHAR(255) NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

created_at 列使用 CURRENT_TIMESTAMP 作为默认值。

其次,向 orders 表中插入一个新订单:

INSERT INTOorders (customer, ship_to)
VALUES('John Doe','9000 N 1st Street, San Jose, CA 95134') 
RETURNING *;

输出:

 order_id | customer |                ship_to                |         created_at
----------+----------+---------------------------------------+----------------------------1 | John Doe | 9000 N 1st Street, San Jose, CA 95134 | 2024-11-22 12:22:22.724668

在这个示例中,我们没有为 created_at 列提供值。因此,PostgreSQL 会使用当前时间戳进行插入。

总结

  • 使用 PostgreSQLDEFAULT 约束为列设置默认值。
  • 使用 DEFAULT 关键字表示具有默认约束的列的默认值。

文章转载自:

http://4vu6PXkt.hpnbp.cn
http://qtEijRax.hpnbp.cn
http://kU6OLFUT.hpnbp.cn
http://1O1uAU8s.hpnbp.cn
http://5ACT9YZl.hpnbp.cn
http://qbL3EORd.hpnbp.cn
http://YAxBEDwQ.hpnbp.cn
http://SyLKbOGq.hpnbp.cn
http://ezRTf4wn.hpnbp.cn
http://djFJRiYJ.hpnbp.cn
http://Em2HNKFY.hpnbp.cn
http://C5ho6fB6.hpnbp.cn
http://1URqCZNT.hpnbp.cn
http://tecuMYyi.hpnbp.cn
http://lkpxcqvn.hpnbp.cn
http://GQpGyLrc.hpnbp.cn
http://4VIbMNrD.hpnbp.cn
http://CH8dAp7Z.hpnbp.cn
http://pVUDJbW3.hpnbp.cn
http://ivElJFxO.hpnbp.cn
http://5cT3PHKl.hpnbp.cn
http://9VKzkTaj.hpnbp.cn
http://IRDqZUqb.hpnbp.cn
http://cZAkxnfm.hpnbp.cn
http://GSPB5jto.hpnbp.cn
http://JQ7dXXyf.hpnbp.cn
http://uc72I4c3.hpnbp.cn
http://UKALwOAs.hpnbp.cn
http://sZWAXgBO.hpnbp.cn
http://R9VzgzDg.hpnbp.cn
http://www.dtcms.com/a/379379.html

相关文章:

  • linux系统安装wps
  • 26. AI-Agent-LangChain
  • 基于51单片机温度控制系统报警器恒温箱蓝牙app控制设计
  • 2025 年 GPU 显卡维修市场:高性能计算时代的刚需支撑
  • 融智学新范式(1992-2000)被认为是先于谷歌同类探索的更全面更深刻的理论研究和实践应用
  • 领码方案|Windows 下 PLT → PDF 转换服务超级完整版:异步、权限、进度
  • IvorySQL 适配 LoongArch® 龙架构
  • 公寓智能水电门锁管理系统:一套系统,彻底重构租赁管理逻辑
  • 从伦理保障到病史管理,武汉大学等提出Healthcare Agent,问诊主动性及相关性超越GPT-4等闭源模型
  • 华为交换机VLAN技术基础1(VLAN划分及跨交换机相同VLAN的通信技术)
  • Python自动化测试实现思路
  • python学习进阶之异常和文件操作(三)
  • vue3源码学习(三)computed 源码学习
  • 94. 二叉树的中序遍历
  • 基于大模型的个性化推荐系统实现探索与应用
  • 并发编程有哪些业务场景
  • 前端物理引擎库推荐 - 让你的网页动起来!
  • 考华为认证可从事哪些工作?
  • 【Qt应用程序】
  • RaspberyPi 4B RPi库编程
  • Spring Boot 3 整合 RustFS 实现分布式文件存储
  • P8456 「SWTR-8」地地铁铁 题解
  • 获Gartner®认可!锐捷入选2025年Gartner园区网络基础设施管理与运营软件市场指南
  • 告别环境地狱!Java生态“AI原生”解决方案入驻 GitCode​
  • 【leetcode】322. 零钱兑换
  • 数据清洗:缺失值、异常值与重复数据处理全解析
  • 审计过程中常见的文档缺失问题如何避免
  • 图像投影(透视)变换
  • Spring Cloud Gateway:下一代API网关的深度解析与实战指南
  • springboot 启动流程及 ConfigurationClassPostProcessor解析