您的位置:

postgresql创建表详解

一、基本概念

PostgreSQL是一种开放源代码的对象关系数据库管理系统(ORDBMS)。它使用和扩展了SQL语言,并支持大多数SQL语言的特性,同时也具有许多高级功能。创建表是数据库设计中的关键步骤之一,它定义了数据存储的结构和规则。在postgresql中,每个表都有一组列和每一列都有一个数据类型,这有助于确保数据的完整性和一致性。

二、创建表的基本语法

CREATE TABLE table_name (
    column1 datatype1,
    column2 datatype2,
    column3 datatype3,
   .....
);

上述语法中,CREATE TABLE是创建一个新表的关键字,table_name是新表的名称,datatype是列的数据类型,column是列的名称。

三、基本数据类型

postgresql中支持的基本数据类型包括整数、浮点数、字符、日期、布尔等,下面列举几个基本数据类型的示例。

1、整数类型

CREATE TABLE example (
    id serial PRIMARY KEY,
    age integer
);

上述示例中,id列是主键且自动递增的,age列是整型。

2、浮点数类型

CREATE TABLE example (
    id serial PRIMARY KEY,
    price numeric(10,2)
);

上述示例中,id列是主键且自动递增的,price列是数字类型,精确到小数点后两位。

3、字符类型

CREATE TABLE example (
    id serial PRIMARY KEY,
    name varchar(50)
);

上述示例中,id列是主键且自动递增的,name列是可变长度的字符串类型,最多50个字符。

4、日期类型

CREATE TABLE example (
    id serial PRIMARY KEY,
    create_at date
);

上述示例中,id列是主键且自动递增的,create_at列是日期类型。

四、添加约束

除了数据类型,约束也是关系型数据库设计中的重要概念。它们可以确保表中的数据满足某些规则或条件。postgresql支持多种约束,例如主键、唯一性、非空、检查等。

1、添加主键

CREATE TABLE example (
    id serial PRIMARY KEY,
    name varchar(50),
    age integer
);

上述示例中,id列是主键且自动递增的,它可以确保每行数据的唯一性。

2、添加唯一性约束

CREATE TABLE example (
    id serial PRIMARY KEY,
    email varchar(50) UNIQUE,
    name varchar(50)
);

上述示例中,email列是唯一的,确保了每个值都不重复。

3、添加非空约束

CREATE TABLE example (
    id serial PRIMARY KEY,
    name varchar(50) NOT NULL,
    age integer
);

上述示例中,name列不允许为空,确保了该列不会缺少任何数据。

4、添加检查约束

CREATE TABLE example (
    id serial PRIMARY KEY,
    age integer CHECK (age > 0),
    name varchar(50)
);

上述示例中,age列的值必须大于0,确保了数据的准确性。

五、创建索引

在处理大量数据时,索引是postgresql非常重要的一项特性,它可以提高查询的速度。postgresql支持多种索引类型,例如B-tree、哈希、GiST等。

1、创建B-tree索引

CREATE INDEX index_name ON table_name (column_name);

上述示例中,index_name是索引的名称,table_name是表的名称,column_name是要索引的列。

六、使用ALTER TABLE修改表结构

对于已存在的表结构,可以使用ALTER TABLE语句进行修改。例如可以添加、删除列、添加约束、修改列数据类型等。

1、添加列

ALTER TABLE table_name ADD COLUMN column_name datatype;

上述示例中,table_name是表的名称,column_name是要添加的列的名称,datatype是列的数据类型。

2、删除列

ALTER TABLE table_name DROP COLUMN column_name;

上述示例中,table_name是表的名称,column_name是要删除的列的名称。

3、添加约束

ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column_name);

上述示例中,table_name是表的名称,constraint_name是约束的名称,column_name是要约束的列的名称。

4、修改列数据类型

ALTER TABLE table_name ALTER COLUMN column_name SET DATA TYPE datatype;

上述示例中,table_name是表的名称,column_name是要修改的列的名称,datatype是列的新数据类型。