一、基本概念
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是列的新数据类型。