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. Java基于线程池和AQS模拟高并发

    概述   <手写高并发下线程安全的单例模式>主要介绍使用枚举类实现JAVA单例模式,以及在高并发环境下验证此单例模式是线程安全的.本文借助ReentrantLock.CountDownLa ...

  2. 如何排查内存飙高-Linux top命令快速入门

      Linux系统出现了性能问题,一般我们可以通过 top.iostat.free.vmstat和ifstat等命令来初步定位问题.其中,top命令是Linux下常用的性能分析工具,用于实时监测系统资 ...

  3. netty发送socket短连接请求,自定义报文头

    package com.chinaums.japi.util; import io.netty.bootstrap.Bootstrap; import io.netty.buffer.ByteBuf; ...

  4. linux系统僵尸进程处理

    查看僵尸进程 [root@mac-25 ~]# top top - 19:04:11 up 177 days, 23:58, 2 users, load average: 15.18, 21.64, ...

  5. Java中基本数据类型和引用数据类型的存放位置

    基本数据类型存放在哪? 基本类型的变量存在栈里或者堆里不是由"大小可知,生存期可知"就能确定了.关键是上下文. 比如: void method(){ int a = 3; } 这自 ...

  6. 数栈SQL优化案例:OR条件优化

    本文整理自:袋鼠云技术荟 | SQL优化案例(2):OR条件优化 数栈是云原生-站式数据中台PaaS,我们在github上有一个有趣的开源项目:https://github.com/DTStack/f ...

  7. hot100之双指针

    移动0(283) 先看代码 class Solution { public void moveZeroes(int[] nums) { int idx0 = 0; for (int idx = 0; ...

  8. 探索 Vue.js 组件的最新特性

    引言: Vue.js 作为一款流行的前端框架,始终在不断发展和演进,为开发者带来新的特性和功能,以提升开发效率和用户体验.Vue.js 组件是构建 Vue 应用的基础,其最新特性为开发者提供了更强大的 ...

  9. vue_过渡&动画、过滤器、指令

    过度和动画 <html lang="en"> <head> <meta charset="UTF-8"> <title ...

  10. Windows 10文件夹中的一些高级搜索技巧

    搜索文件中的内容 默认的win10搜索是只针对文件名搜索的,但有的时候我们需要搜索文件中包含特定内容的文件,这时候需要设置一下搜索的选项打开搜索文件名和内容选项: 打开文件夹–查看 选择选项 打开文件 ...