PostgreSQL如何创建表以及相关的约束?

创建表

最简单的建表语句:

CREATE TABLE table_name(
    col01_name data_type,
    col02_name data_type,
    col03_name data_type,
    col04_name data_type
);

示例:

create table test01(id int,note varchar(20));

主键

一般的表都有主键,如果表的主键只是由一个字段组成的,则可以通过直接在字段定义后面加上“PRIMARY KEY”关键字来指定,示例如下:

create table test01(id int primary key,note varchar(20));

如果主键由两个及以上的字段组成(称为复合主键),这时就不能使用上面的语法了,而需要使用约束子句的语法,指定复合主键的约束子句语法如下

CONSTRAINT constraint_name PRIMARY KEY (col1_name,col2_name,...);
create table test02(id1 int,id2 int,note varchar(20),CONSTRAINT pk_test02 primary key (id1,id2));

唯一键

建表的时候也可以指定唯一键,唯一键也是约束的一种,唯一键的约束子句语法如下:

CONSTRAINT constraint_name UNIQUE(col1_name,col2_name,...);
create table test03(
    id1 int,
    id2 int,
    id3 int,
    note varchar(20),
    CONSTRAINT pk_test03 primary key(id1,id2),
    CONSTRAINT uk_test03_id3 UNIQUE(id3)
);

check约束

check也是一种约束,用于定义某些字段的值必须满足某种要求,语法如下:

CONSTRAINT constraint_name CHECK(expression);

例如年龄字段(age)不能大于18岁:

create table child(
    name varchar(20),
    age int,
    note text,
    CONSTRAINT ck_child_age CHECK(age<18)
);

使用模板创建表

create table baby (LIKE child);

此处创建表没有把源表上的约束复制过来,如果想完全复制源表列上的约束和其他信息,需要加上“INCLUDING”关键字,可用的“INCLUDES”选项如下:

  • INCLUDING DEFAULTS
  • INCLUDING CONSTRAINTS
  • INCLUDING INDEXES
  • INCLUDING STORAGE
  • INCLUDING COMMENTS
  • INCLUDING ALL

其中INCLUDING ALL是把所有的属性全部复制过去,示例如下:

create table baby2(LIKE child INCLUDING ALL);

也可以使用“CREATE TABLE…AS”来创建表,示例如下:

create table baby2 as select * from child with no data;

你可能感兴趣的:(PostgreSQL,postgresql,数据库,java)