在PostgreSQL中,约束的种类有:

  • 检查约束
  • 非空约束
  • 唯一约束
  • 主键
  • 外键

检查约束

检查约束是最常见的约束类型,形式为“CHECK(表达式)”。使用该约束后,字段的值就必须保证这个约束的表达式为真,否则无法插入数据。

 CREATE TABLE books (id int  CHECK(id>0),name varchar(20),price int
);

可以给约束起一个独立的名字,方便打印或修改约束信息,使用“CONSTRAINT 约束名 CHECK(表达式)”。

 CREATE TABLE books (id int CONSTRAINT valid_id CHECK(id>0),name varchar(20),price int
);

检查约束可以引用多个字段,此时使用“表约束”(单个字段的检查约束,也可以使用“表约束”)。

 CREATE TABLE books (id int,name varchar(20),price int,CHECK(id>0 and price>0)
);

非空约束

声明一个字段必须不能为NULL,非空约束总是被写成“字段约束”。

 CREATE TABLE books (id int NOT NULL,name varchar(20),price int
);

唯一约束

保证字段里的数据是唯一的。

 CREATE TABLE books (id int UNIQUE,name varchar(20),price int
);

唯一约束 也可以写成“表约束”的形式。

 CREATE TABLE books(id int ,name varchar(20),price int,UNIQUE(id)
);

主键

 CREATE TABLE books (id int PRIMARY KEY,name varchar(20),price int
);

外键

外键是表之间的约束,使得表的字段必须出现在另一个表的字段中,又称参照完整性约束。外键约束的形式为:REFERENCES 表名(列名)。

CREATE TABLE student (name varchar(20),bookId int REFERENCES books(id)
);

总结

一个字段可以有多个约束,一个接一个写就好,它们的顺序无所谓。

 CREATE TABLE books (id int PRIMARY KEY,name varchar(20),price int NOT NULL CHECK(price>0)
);

PostgreSQL中的约束相关推荐

  1. 本周两场直播丨PostgreSQL中的锁;数据库对象命名设计规范手册

    1.经典知识库:PostgreSQL中的锁-9月8日20:00 事务是关系型数据库实现的核心内容,它具有原子性.一致性.隔离性和持久性等特点,是数据库实现并发控制和故障恢复的基础.PostgreSQL ...

  2. PostgreSQL中生成的列

    目录 介绍 背景 PostgreSQL 12 与SQL Server计算列比较 那么,生成的列与带有DEFAULT子句的常规列有何不同? 局限性 其他注意事项 PostgreSQL 11.x及更高版本 ...

  3. PostgreSQL 中如何delete重复数据

    问题提出 时常有这样的case: DB实例运行一段时间后,发现需要给1个table中的某(些)字段加unique 约束, 但创建unique constraints(或 index)时, 报出 DET ...

  4. Postgresql杂谈 10—Postgresql中的分区表

    一.关于分区表 表分区是在大数据优化中的一种常见的分表方案,通过将大数据按照一定的规则(最常见的是按照时间)进行分表处理,将逻辑上的一个大表分割成物理上的几块表,插入数据时,数据会自动插入到不同的分区 ...

  5. PostgreSQL中的ACID特性介绍

    任何关系型数据库中,ACID 是组成数据库的重要部分,是数据库事务的一组属性,该特性目的主要确保数据库在异常情况下保证数据的有效性. 数据库ACID特性 A(Atomicity) 原子性: 事务通常由 ...

  6. postgresql支持唯一约束吗_PostgreSQL 唯一约束

    提要:在本教程中,你将学习到如何通过 PostgreSQL 的 UNIQUE 约束来确保某字段或某些字段组合的值在表里是唯一的. 有时候,需要确保某个字段或某组字段的值在整个表里是唯一的,比如:Ema ...

  7. Postgresql中的sync相关参数源码分析

    注:本专栏所有分析以函数为主线,必要数据结构会带入讲解:数据库版本为Postgresql10.16. 注:如有讨论的需要请email to jackgo73@outlook.com 一.问题 Post ...

  8. PostgreSQL中的索引—6(SP-GiST)

    目录 SP-GiST 架构 示例:四叉树 内部构件 示例:k维树 内部构件 示例:基数树 内部构件 属性 NULL 其他数据类型 我们已经介绍了Postgresql索引引擎.访问方法接口和三种方法:哈 ...

  9. Postgresql杂谈 06—Postgresql中的范围和数组类型

    本文主要介绍下Postgresql的另外两种特殊的类型Range类型(范围类型)和数组类型.两种类型,适用于不同的场景,但是最终的目的相同,就是使用传统的数据类型,建立常规的索引无法满足查询的性能要求 ...

最新文章

  1. 如何优雅的使用 Angular 表单验证
  2. mysql事务手写笔记_兴奋了!阿里技术官手写“MySQL笔记”,传授你年薪百万级干货...
  3. Xamarin.Forms教程下载安装Visual Studio 2015
  4. 【玩转 Angular】1. Angular-CLI 安装与使用
  5. python xlwt写入excel_python xlwt模块写入excel超过65536行报错问题解决方法
  6. PyTorch GPU安装指南 (Ubuntu 16.04 anaconda cuda8.0 cuDNN6.0)
  7. 知乎超高赞:都有哪些习惯值得长期坚持?
  8. 十大下班最晚城市,四个在广东
  9. proe输入数字时成双出现_什么是隔离数字输入?
  10. bool可以是java得标识符嘛_Java-标识符--修饰符--关键字
  11. 【自爆系列】浅谈我前端开发的那些糗事
  12. Perl打造溯雪拙劣仿制品
  13. 2022泰迪杯数据挖掘挑战赛C题思路及赛后总结
  14. android 游戏 平板电脑,打游戏的安卓平板电脑推荐-打游戏最适合的平板电脑排行榜...
  15. html canvas 绘制转盘,Canvas绘制转盘
  16. linux 安装Times New Roman字体
  17. DDR3 基础知识分享
  18. oracle xe 11g下载和安装教程
  19. WIN7 安装VS2005 错误1935
  20. FastAdmin input digits不能输入小数 重写nice-validator插件的digits规则

热门文章

  1. sEMG的时频域特征
  2. 【P2303】Longge的问题
  3. 程序员如何在“小公司成长”和“大公司学习”
  4. XML,XML解析,设计模式
  5. 运营人看双十一,学营销技巧
  6. 升级python3.8后宝塔面板无法打开_解决宝塔面板升级后因Python2.7与Python3.6共存启动失败...
  7. 小学计算机知识竞赛活动方案,小学生知识竞赛活动方案
  8. RFID家具生产管理系统解决方案
  9. 燃气 CAD 施工图入库 ArcGIS 系统求助
  10. Android Studio的button背景颜色都是紫色无法修改