NOT NULL 约束:

默认情况下,列可以保存为 NULL 值。如果您不想某列有 NULL 值,那么需要在该列上定义此约束,指定在该列上不允许 NULL 值。

NULL 与没有数据是不一样的,它代表着未知的数据。

create table  company1(

id  int  primary  key not null,

name   text   not null,

age  int  not null,

address char(50),

salary real

);

UNIQUE 约束:

UNIQUE 约束可以设置列是唯一的,避免同一列出现重复值。

create table  company1(

id  int  primary  key not null,

name   text   not null,

age  int  not null  unique,

address char(50),

salary real);

PRIMARY KEY:

PRIMARY KEY 称为主键,是数据表中每一条记录的唯一标识。

设置 UNIQUE 的列可能有多个,但是一张表只有一列可以设置 PRIMARY KEY。

create table  company1(

id  int  primary  key not null,

name   text   not null,

age  int  not null,

address char(50),

salary real);

FOREIGN KEY 约束:

FOREIGN KEY 即外键约束,指定列(或一组列)中的值必须匹配另一个表的某一行中出现的值。

通常一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键),即维护了两个相关表之间的引用完整性

create table  company6(

id  int  primary  key not null,

name   text   not null,

age  int  not null,

address char(50),

salary real

);

下面实例创建一张 DEPARTMENT1 表,并添加 3 个字段,EMP_ID 就是外键,参照 COMPANY6 的 ID:

create table department1(

id int primary key not null,

dept  char(50) not null,

emp_id  int  references company6(id)

);

CHECK 约束:

CHECK 约束保证列中的所有值满足某一条件,即对输入一条记录要进行检查。如果条件值为 false,则记录违反了约束,且不能输入到表。

create table  company1(

id  int  primary  key not null,

name   text   not null,

age  int  not null,

address char(50),

salary real  check (salary > 0)

);

EXCLUSION 约束:

EXCLUSION 约束确保如果使用指定的运算符在指定列或表达式上比较任意两行,至少其中一个运算符比较将返回 false 或 null。

create table  company1(

id  int  primary  key not null,

name   text   not null,

age  int  not null,

address char(50),

salary real

exclude  using  gist

(name with =,

age with <>)

);

删除约束:

删除约束必须知道约束名称,已经知道名称来删除约束很简单,如果不知道名称,则需要找到系统生成的名称,使用 \d 表名 可以找到这些信息。

通用语法如下:

alter table  table_name  drop  constraint  some_name;

PostgreSQL 约束的更多相关文章

  1. 第六章 Odoo 12开发之模型 - 结构化应用数据

    在本系列文章第三篇Odoo 12 开发之创建第一个 Odoo 应用中,我们概览了创建 Odoo 应用所需的所有组件.本文及接下来的一篇我们将深入到组成应用的每一层:模型层.视图层和业务逻辑层. 本文中 ...

  2. PGSQL基础语句汇总

    一.pgsql里面的数据类型不再介绍:https://www.runoob.com/postgresql/postgresql-data-type.html 二.常用基本语句 2.1.CREATE D ...

  3. postgresql数据库primary key约束/not null约束/unique约束及default值的添加与删除、列的新增/删除/重命名/数据类型的更改

    如果在建表时没有加primary key约束.not null约束.unique约束.default值,而是创建完表之后在某个字段添加的话 1.primary key约束的添加与删除 给red_pac ...

  4. 从头开始学习数据库及ADO.NET之PostgreSql字段约束——竹子整理

    约束数据表列执行的规则.这些是用来防止无效的数据被输入到数据库中..这确保数据库中的数据的准确性和可靠性. 约束可以是列级或表级.仅适用于表级约束被应用到整个表的列级约束.为列定义的数据类型,本身是一 ...

  5. PostgreSQL的约束

    约束类型:检查约束.非空约束.唯一约束.主键.外键 1.  检查约束 设置某个字段里的数值必须满足约束表达式的条件. 例:限制人的年龄在0~120之间,语句如下: create table perso ...

  6. 外键的约束(Mysql、PostgreSQL)

    关于外键是什么,具体不再详述,可以自行百度. 讲一下关于外键的 On Delete和On Update的使用 最近在项目的表中看到这些,不懂顺便查了查: ONSTRAINT "c_clust ...

  7. PostgreSQL创建表及约束

    创建表 语法: create table table_name ( column_name type column_constraint, table_constraint table_constra ...

  8. postgresql 用 like 可以 复制结构包括主键约束

    create tabletablename ( like tablename INCLUDING INDEXES INCLUDING COMMENTS); PostgreSQL 动态表复制(CREAT ...

  9. postgresql 唯一约束增强

    http://blog.chinaunix.net/uid-15145533-id-2775821.html

  10. PostgreSQL介绍以及如何开发框架中使用PostgreSQL数据库

    最近准备下PostgreSQL数据库开发的相关知识,本文把总结的PPT内容通过博客记录分享,本随笔的主要内容是介绍PostgreSQL数据库的基础信息,以及如何在我们的开发框架中使用PostgreSQ ...

随机推荐

  1. python批量写入MongoDB数据库

    需要批量操作时候,节省网络连接交互次数,可以使用 bulk_write. 方法一:批量插入insert_many arr = [] # 初始化一个空列表 for line in mmap_lines( ...

  2. AD 横向移动-TGS-REP Kerberoasting 攻击

    本文通过 Google 翻译 AD Escalation – Kerberoasting Attacks 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充. 导航 0 前 ...

  3. Qt图像处理技术七:轮廓提取

    Qt图像处理技术七:轮廓提取 效果图 原理 图像先二值化让rgb数值相同,只有(0,0,0)或者(255,255,255) 取每个点的周围8个点,如果周围8个点与该点rgb值相同,则需要将该点描黑为( ...

  4. PHP数据结构当中的栈

    本文由 ChatMoney团队出品 栈(Stack)是一种后进先出(Last In First Out, LIFO)的数据结构,它只允许在一端(称为栈顶)进行插入和删除操作.栈的应用非常广泛,例如在编 ...

  5. Session的妙用

    Session 就是浏览器从开启到关闭(或者是到Session过期)的整个过程 我们可以通过Session对象来拿到我们之前已经输入过的东西 默认设置Session过期的时间:这是真实业务的需求: & ...

  6. Axios 禁用缓存

    Disable cache for Axios1. set headers.Cache-Control = 'no cache' // not work for 0.19.x or later?2. ...

  7. ArchSummit2021年全球架构师峰会将于4月25号-26号在上海举办,袋鼠云数栈技术专家受邀分享

    一.大会介绍 ArchSummit全球架构师峰会是极客邦科技旗下InfoQ中国团队推出的重点面向高端技术管理者.架构师的技术会议,54%参会者拥有8年以上工作经验.会议聚焦业界强大的技术成果,秉承&q ...

  8. 分布式可视化 DAG 任务调度系统 Taier 的整体流程分析

    Taier 作为袋鼠云的开源项目之一,是一个分布式可视化的 DAG 任务调度系统.旨在降低 ETL 开发成本,提高大数据平台稳定性,让大数据开发人员可以在 Taier 直接进行业务逻辑的开发,而不用关 ...

  9. 保姆级教程!玩转 ChunJun 详细指南

    ChunJun是一款稳定.易用.高效.批流一体的数据集成框架,⽀持海量数据的同步与计算.ChunJun 既可以采集静态的数据,比如 MySQL,HDFS 等,也可以采集实时变化的数据,比如 binlo ...

  10. DTALK直播预约 | 12月8日开播:后疫情时代,制造企业如何实现数字化转型?

    我国制造业拥有31个大类.179个中类和609个小类,是全球产业门类最齐全.产业体系最完整的制造业.二十大报告中强调:"坚持把发展经济的着力点放在实体经济上""推动制造业 ...