如何在云服务器上创建、删除和管理 PostgreSQL 中的表格

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 如何在云服务器上创建、删除和管理 PostgreSQL 中的表格

什么是 PostgreSQL?

PostgreSQL 是一个使用 SQL 查询语言的数据库管理系统。它是一个非常稳定且功能丰富的数据库系统,可用于存储 VPS 上其他应用程序的数据。

在本文中,我们将讨论如何在 PostgreSQL 接口中创建和管理表。您将学习如何正确配置表并使用它们来存储信息。

如何在 Ubuntu 上安装并登录 PostgreSQL

在本指南中,我们将在 Ubuntu 12.04 上安装 PostgreSQL,但它应该在大多数其他发行版的默认存储库中都可以找到。

输入以下命令进行安装:

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

安装完成后,创建一个新用户来管理我们将要创建的数据库:

sudo adduser <span class="highlight">postgres_user</span>

登录到默认的 PostgreSQL 用户(称为 “postgres”)以创建一个数据库并将其分配给新用户:

sudo su - postgres
psql

您将进入 PostgreSQL 命令提示符。

创建一个与您创建的系统用户匹配的新用户。然后创建由该用户管理的数据库:

CREATE USER <span class="highlight">postgres_user</span> WITH PASSWORD '<span class="highlight">password</span>';
CREATE DATABASE <span class="highlight">my_postgres_db</span> OWNER <span class="highlight">postgres_user</span>;

使用以下命令退出接口:

\q

退出默认的 “postgres” 用户帐户,然后使用以下命令登录到您创建的用户:

exit
sudo su - <span class="highlight">postgres_user</span>

使用以下命令登录到您创建的数据库:

psql <span class="highlight">my_postgres_db</span>

现在我们已经准备好学习关于表管理的知识。

PostgreSQL 中的表创建语法

我们的数据库还没有任何表。您可以使用以下命令询问 PostgreSQL 给出可用表的列表:

\d
No relations found.

我们可以通过遵循以下语法创建新表:

CREATE TABLE new_table_name (
  table_column_title TYPE_OF_DATA column_constraints,
  next_column_title TYPE_OF_DATA column_constraints,
  table_constraint
  table_constraint
) INHERITS existing_table_to_inherit_from;

括号后面直到分号的部分是一个可选的结构,用于从现有表中继承所有列,以及在早期定义中列出的列。

括号内部分为两部分:列定义和表约束。

PostgreSQL 列和表定义

列定义遵循以下语法模式:

column_name data_type (optional_data_length_restriction) column_constraints

列名应该是不言自明的。

PostgreSQL 数据类型

数据类型可以是以下任何一种:

  • boolean: 使用 “boolean” 或 “bool” 来声明真或假值。
  • 字符值:
  • char: 保存单个字符
  • char (#): 保存 # 个字符。空格将被插入以填充任何额外的空间。
  • varchar (#): 最多保存 # 个字符。可以包含更少。
  • 整数值:
  • smallint: -32768 到 32767 之间的整数。
  • int: -214783648 到 214783647 之间的整数。
  • serial: 自动填充的整数。
  • 浮点数值:
  • float (#): 至少具有 # 个精度点的浮点数。
  • real: 8 字节浮点数。
  • numeric (#,after_dec): 具有 # 位数和小数点后 after_dec 位数的实数。
  • 日期和时间值:
  • date: 存储日期值
  • time: 存储时间值
  • timestamp: 存储日期和时间值
  • timestamptz: 存储包括时区数据的时间戳
  • interval: 存储两个时间戳值之间的差异
  • 几何数据:
  • point: 存储定义点的一对坐标
  • line: 存储映射出一条线的一组点
  • lseg: 存储定义线段的数据
  • box: 存储定义矩形的数据
  • polygon: 存储定义任何封闭空间的数据
  • 设备规格:
  • inet: 存储 IP 地址
  • macaddr: 存储设备 MAC 地址

PostgreSQL 列和表约束

列定义还可以具有约束,为列中找到的数据类型提供规则。以下内容可以作为数据类型后面的空格分隔值使用:

  • NOT NULL: 列不能有空值
  • UNIQUE: 列值对于任何记录都不能相同。Null 始终被视为唯一值
  • PRIMARY KEY: 上述两个约束的组合。每个表只能使用一次
  • CHECK: 确保列中的值满足条件
  • REFERENCES: 值必须存在于另一个表中的列中

在定义列之后,可以声明表范围约束。表范围约束可以是 UNIQUE、PRIMARY KEY、CHECK 或 REFERENCES。

如何在 PostgreSQL 中创建表

让我们创建一个测试表进行练习。我们将创建一个名为 “pg_equipment” 的表,该表定义了各种游乐场设备。输入以下表定义:

CREATE TABLE pg_equipment (
  equip_id serial PRIMARY KEY,
  type varchar (50) NOT NULL,
  color varchar (25) NOT NULL,
  location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
  install_date date
  );
NOTICE:  CREATE TABLE will create implicit sequence "pg_equipment_equip_id_seq" for serial column "pg_equipment.equip_id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "pg_equipment_pkey" for table "pg_equipment"
CREATE TABLE

我们可以通过在提示符中键入 “\d” 来查看我们的新表:

\d
List of relations
 Schema |           Name            |   Type   |     Owner     
--------+---------------------------+----------+---------------
 public | pg_equipment              | table    | postgres_user
 public | pg_equipment_equip_id_seq | sequence | postgres_user
(2 rows)

表被列出,以及由 “equip_id” serial 数据类型声明创建的序列。

如何在 PostgreSQL 中更改表数据

我们可以使用以下一般语法更改表的定义:

ALTER TABLE table_name <em>Action_TO_Take</em>;

例如,我们可以通过输入以下命令向我们的 “pg_equipment” 表添加列:

ALTER TABLE pg_equipment ADD COLUMN functioning bool;
ALTER TABLE

我们可以通过输入以下命令查看额外的列:

\d pg_equipment
Column    |         Type          |                            Modifiers                            
--------------+-----------------------+-----------------------------------------------------------------
 equip_id     | integer               | not null default nextval('pg_equipment_equip_id_seq'::regclass)
 type         | character varying(50) | not null
 color        | character varying(25) | not null
 location     | character varying(25) | 
 install_date | date                  | 
 functioning  | boolean               |
 . . .

要添加指定 “设备应被视为工作,除非另有说明” 的默认值,执行以下命令:

ALTER TABLE pg_equipment ALTER COLUMN functioning SET DEFAULT 'true';

如果我们还想确保该值也不为空,可以执行以下命令:

ALTER TABLE pg_equipment ALTER COLUMN functioning SET NOT NULL;

要重命名列,使用以下语法:

ALTER TABLE pg_equipment RENAME COLUMN functioning TO working_order;

要删除我们刚刚创建的列,输入以下命令:

ALTER TABLE pg_equipment DROP COLUMN working_order;

我们可以使用以下命令重命名整个表:

ALTER TABLE pg_equipment RENAME TO playground_equip;

在 PostgreSQL 中删除表

我们可以通过输入以下命令删除我们创建的表:

DROP TABLE playground_equip;
DROP TABLE

如果我们对不存在的表给出该命令,将收到以下错误:

ERROR: table "playground_equip" does not exist

为了避免此错误,我们可以告诉 PostgreSQL 如果存在则删除表,并无论如何都返回成功。我们可以通过输入以下命令来实现:

DROP TABLE IF EXISTS playground_equip;
NOTICE:  table "playground_equip" does not exist, skipping
DROP TABLE

这次,它告诉我们未找到表,但继续而不是抛出错误。

结论

您现在应该已经了解足够的知识来在 PostgreSQL 中创建和管理简单的表。如果您正在管理来自其他应用程序的数据,或者正在学习如何从命令行控制 PostgreSQL,这些技能将会很有帮助。


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
6月前
|
弹性计算 关系型数据库 MySQL
快速上手阿里云RDS MySQL实例创建,轻松管理数据库
快速上手阿里云RDS MySQL实例创建,轻松管理数据库 在数字化时代,数据已成为企业的核心资产。如何高效、安全地存储和管理这些数据,成为企业在云计算时代亟待解决的问题。阿里云的RDS(关系型数据库服务)应运而生,为用户提供稳定、可靠的云上数据库解决方案。本文将详细介绍如何通过阿里云RDS管理控制台快速创建RDS MySQL实例,让您轻松上手,快速部署数据库。
406 2
|
4月前
|
分布式计算 大数据 关系型数据库
MaxCompute产品使用合集之如何实现类似mysql实例中的数据库功能
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
6月前
|
存储 关系型数据库 MySQL
AnalyticDB MySQL新购页面融合升级,提供企业版购买选项
AnalyticDB MySQL新购页面升级,现推出企业版和基础版,不再区分湖仓版和数仓版。企业版(集群模式)和基础版(单机模式)融合了弹性模式和预留模式的功能,提供资源隔离、弹性扩展及高性能查询,适合开发测试和生产环境,而基础版适用于小规模测试,不推荐用于生产环境。
AnalyticDB MySQL新购页面融合升级,提供企业版购买选项
|
NoSQL Cloud Native 关系型数据库
阿里云rds数据库简介和购买使用流程
阿里云rds数据库简介和购买使用流程
248 0
|
弹性计算 关系型数据库 MySQL
ECS服务器部署MySQL数据库无法显示数据库版本的问题
MySQL数据库无法显示数据库版本 Error:GPG check FAILED
231 1
ECS服务器部署MySQL数据库无法显示数据库版本的问题
|
存储 SQL 关系型数据库
PolarDB-X 1.0-用户指南-实例管理-实例介绍
实例介绍 PolarDB-X 1.0由计算层与存储层资源构成,计算层在物理资源上由多个计算节点所组成的分布式集群,业务数据存储在下挂的多个私有定制RDS实例中。目前售卖的PolarDB-X 1.0计算资源实例皆为专享实例,其中包括主实例和只读实例。
147 0
PolarDB-X 1.0-用户指南-实例管理-实例介绍
|
存储 关系型数据库 分布式数据库
PolarDB-X 1.0-用户指南-只读实例-管理实例
本文主要介绍如何管理PolarDB-X 1.0计算资源DRDS只读实例。
313 0
PolarDB-X 1.0-用户指南-只读实例-管理实例
|
存储 Cloud Native 关系型数据库
PolarDB-X 1.0-用户指南-只读实例-创建实例
本文主要介绍如何创建PolarDB-X 1.0计算资源DRDS实例只读实例。
181 0
PolarDB-X 1.0-用户指南-只读实例-创建实例
|
存储 Cloud Native 关系型数据库
PolarDB-X 1.0-用户指南-实例管理-释放实例
您可以根据业务需求手动释放按量付费(即后付费)的实例。 注意事项 包年包月(即预付费)实例不支持手动释放,实例到期后会自动被释放。 只有在运行状态下的实例才能被手动释放。实例被释放后,数据将无法找回,请谨慎操作。 实例释放操作本身不会主动删除PolarDB-X 1.0存储资源RDS实例上的数据,但实例释放后不可恢复,请谨慎操作。
171 0
PolarDB-X 1.0-用户指南-实例管理-释放实例
|
SQL 运维 并行计算
PolarDB-X 1.0-用户指南-只读实例-实例介绍
实例介绍 PolarDB-X 1.0计算资源DRDS只读实例是对PolarDB-X 1.0计算资源DRDS主实例的一种扩展补充,兼容主实例的SQL查询语法。
198 0
PolarDB-X 1.0-用户指南-只读实例-实例介绍