创建表

  语法:

create table table_name (column_name type column_constraint,table_constraint table_constraint
) inherits existing_table_name;

  示例:

create table account(user_id serial primary key,username varchar(50) unique not null,password varchar(50) not null
);

主键约束

  主键是用于在表中唯一标识行的列或列组。从技术上讲,主键约束是非空约束和UNIQUE约束的组合。

  1.使用列级约束设置主键

create table "SysUser"(      "UserId" serial primary key,  "UserName" varchar(50), "Pwd" varchar(50)
);
--说明:只能设置一列作为主键,主键默认名称为tablename_pkey。

  2.使用表级约束设置主键

create table "SysUser"(      "UserId" serial,   "UserName" varchar(50), "Pwd" varchar(50),constraint PK_SysUser primary key("UserId")
);
--说明:使用[表]级约束设置主键,可以设置一列或多列作为主键,主键默认名称为tablename_pkey,constraint PK_SysUser可省略。

  3.通过修改表结构设置主键

--语法:alter table table_name add [constraint constraint_name] primary key(column_1, column_2);
create table "SysUser"(      "UserId" serial,   "UserName" varchar(50), "Pwd" varchar(50)
);
alter table "SysUser" add constraint PK_SysUser primary key("UserId");
--说明:通过修改表结构设置主键,可以设置一列或多列作为主键,可以指定主键名称。

  4.往已有表添加自增主键

--创建没有任何主键的表。
create table "Vendors" ("Name" varchar(255));
--往表添加数据
insert into "Vendors"("Name")values('001'),('002'),('003'),('004');
--查询
select * from "Vendors";

  数据输出

  现在,如果我们要添加一个名为id的自增主键到vendors表。

alter table "Vendors" add column "ID" serial primary key;

  数据输出

  5.删除主键

alter table table_name drop constraint pk_name;

外键约束

  外键约束维护子表和父表之间的引用完整性。

  1.使用列级约束设置外键

create table "SysUserInfo"("UserId" integer primary key references "SysUser"("UserId"),"RealName" varchar(50),"IdCard" varchar(50),"Gender" smallint
);
--说明:外键默认名称为tablename_columnname_fkey

  2.使用表级约束设置外键

create table "SysUserInfo"("UserId" integer,"RealName" varchar(50),"IdCard" varchar(50),"Gender" smallint,primary key("UserId"),foreign key("UserId") references "SysUser"("UserId")
);
--说明:外键默认名称为tablename_columnname_fkey

  3.通过修改表结构设置外键

--语法:alter table table_name add [constraint constraint_name] foreign key(column_1) references TableName(ColumnName);
create table "SysUserInfo"("UserId" integer,"RealName" varchar(50),"IdCard" varchar(50),"Gender" smallint,primary key("UserId")
);
alter table "SysUserInfo" add constraint SysUserInfo_UserId_fkey foreign key("UserId") references "SysUser"("UserId");
--说明:通过修改表结构设置外键,可以指定外键名称。

  4.删除外键约束(同删除其他约束一样,使用同一语法)

alter table table_name drop constraint fk_name;

唯一约束

  确保[列]或[列组]中的值在表中是唯一的。

  1.使用列级约束设置唯一约束

create table "Ha" ("h1" varchar(50) unique,"h2" varchar(50) unique,"h3" varchar(50)
);
--生成2个列的唯一约束Ha_h1_key 和 Ha_h2_key 

  2.使用表级约束设置唯一约束(注意以下两种方式的区别)

create table "Ha" ("h1" varchar(50),"h2" varchar(50),"h3" varchar(50),unique("h1","h2")
);
--将会生成1个列组的唯一约束Ha_h1_h2_key
create table "Ha" ("h1" varchar(50),"h2" varchar(50),"h3" varchar(50),unique("h1"),unique("h2")
);
--将会生成2个列的唯一约束Ha_h1_key和Ha_h2_key

  3.通过修改表结构设置唯一约束

create table "Ha" ("h1" varchar(50),"h2" varchar(50),"h3" varchar(50)
);
alter table "Ha" add constraint Ha_h1_h2_key unique("h1","h2")
--说明:将会生成1个列组的唯一约束Ha_h1_h2_key。如果想要2个列的唯一约束,需写两个alter table。

  4.测试列唯一约束和列组唯一约束

  列唯一约束

--首先创建一个具有唯一约束(列唯一约束)的表
create table "Ha" ("h1" varchar(50) unique
);
insert into "Ha"("h1")values('0'); --success
insert into "Ha"("h1")values('0'); --error:重复键违反唯一约束"Ha_h1_key",键值"(h1)=(0)" 已经存在。
insert into "Ha"("h1")values(null);--success:可理解为null不等于任何一个值,因为它本身就是不确定的值,所以该条数据能添加成功。
insert into "Ha"("h1")values(null);--success:该条数据也能添加成功。

  列组唯一约束

--删除原表,然后创建一个具有唯一约束(列组唯一约束)的表
create table "Ha" ("h1" varchar(50),"h2" varchar(50),unique("h1","h2")
);
insert into "Ha"("h1","h2")values('0','0');--success
insert into "Ha"("h1","h2")values('0','1');--success
insert into "Ha"("h1","h2")values('0','1');--error:重复键违反唯一约束"Ha_h1_h2_key",键值"(h1, h2)=(0, 1)" 已经存在。
insert into "Ha"("h1","h2")values(null,null);--success
insert into "Ha"("h1","h2")values(null,null);--success

检查约束

  该约束基于布尔表达式约束表中列的值。

  1.使用列级约束设置检查约束

create table "Ha" (income numeric CHECK(salary > 0));

  2.使用表级约束设置检查约束

create table "Ha" (salary numeric,CHECK(salary > 0)
);

  3.通过修改表结构设置检查约束

create table "Ha" (salary numeric
);
alter table "Ha" add constraint Ha_salary_check check(salary > 0);

转载于:https://www.cnblogs.com/yuyuefly/p/9698111.html

PostgreSQL创建表及约束相关推荐

  1. [Nhibernate]SchemaExport工具的使用(二)——创建表及其约束、存储过程、视图

    目录 写在前面 文档与系列文章 表及其约束 存储过程 视图 总结 写在前面 由于一直在山西出差,有几天没更新博客了.昨晚回到家,将博客园最近三天更新的文章搜集了一下,花费了半天的时间,看了看,有些文章 ...

  2. Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间

    alter table userInfo add(msn varchar2(20)); 1.建表 create table userInfo ( id number(6), name varchar2 ...

  3. postgresql创建表

    create table "public"."stock" ( seqid SERIAL, "stockname" VARCHAR(50) ...

  4. Day19 Oracle 数据库 创建表 约束 JDBC BaseDAO

    一   创建表 1.创建表(不加约束) (1)创建新表(不加约束) 创建表 create table tb_user(        userid number(5),        username ...

  5. 数据库SQL语句 创建一个数据库,创建表,并添加约束

    USE master Go 进入master模式 创建数据库 USE master GOCREATE DATABASE TestData ON PRIMARY (Name = 'TestData',F ...

  6. Oracle创建表空间和表

    创建表空间和表 ORACLE物理上是由磁盘上的以下几种文件:数据文件和控制文件和LOGFILE构成的 oracle中的表就是一张存储数据的表.表空间是逻辑上的划分.方便管理的. 数据表空间 (Tabl ...

  7. comment on 视图_使用PostgreSQL为表或视图创建备注的操作

    使用PostgreSQL为表或视图创建备注的操作,备注,字段,我是,类型,视图 使用PostgreSQL为表或视图创建备注的操作 易采站长站,站长之家为您整理了使用PostgreSQL为表或视图创建备 ...

  8. MySQL如何创建表时指定约束

    一.MySQL中的约束类型 非空约束(not null): 唯一性约束(unique): 主键约束(primary key)PK: 外键约束(foreign key)FK: (检查约束(目前 ...

  9. MySql之DDL操作创建表(添加主键, 外键约束以及基本的数据类型)

    1.创建表基本语句 CREATE TABLE users( username VARCHAR(50) PRIMARY KEY, userpwd VARCHAR(50) NOT NULL, userag ...

最新文章

  1. 【java】巨菜博主安装jdk为什么每次都失败?
  2. python monkey_解决python调用monkeyrunner的各种各样问题
  3. 图解weblogic安装
  4. 初探swift语言的学习笔记十(block)
  5. C语言程序设计 | 结构体,枚举,联合
  6. iOS学习之基本概念
  7. java上机实验报告_javaweb上机实验报告(学生管理系统)
  8. linux - 查看是否安装 apache 以及 apache 版本
  9. 搜狐校园“情感分析×推荐排序“算法大赛 AutoX方案 转载poteman
  10. C语言编译器之四,Turbo C等
  11. H5实现打印电子面单(淘宝菜鸟物流)
  12. H5模板代码一键生成器
  13. 微软拼音开启小鹤双拼
  14. 华为云notebook在线解压压缩包问题
  15. PRCS-1011 PRCS-1014
  16. UEBA案例分析系列之数据泄露检测
  17. Android - 屏幕适配
  18. Armijo条件,Wolfe条件,Goldstein条件
  19. 基于C#的机器学习--c# .NET中直观的深度学习
  20. 笔记本电脑相关知识大全

热门文章

  1. [011量化交易] python根据收盘价计算涨跌百分比
  2. 29岁了还一事无成也许是人生的常态
  3. 最强Android教程!怒斩获了30家互联网公司offer,赶紧收藏!
  4. 如何推送PLC报警消息至微信
  5. System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d
  6. 【每日一读】Sampling Multiple Nodes in Large Networks: Beyond Random Walks
  7. lms算法的verilog实现_LMS verilog实现的LMS的算法,另外有tb文件可以测试 代码正确 VHDL-FPGA- 252万源代码下载- www.pudn.com...
  8. Artetxe2018CoNLL_Uncovering divergent linguistic information in word embeddings...
  9. 儒家、道家、佛家不同思想文化!
  10. reduce函数详解以及自己实现一个reduce函数