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

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
1月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
502 2
|
4月前
|
安全 生物认证 网络安全
windows10无法设置默认保存位置怎么办?显示错误代码0x80070002怎么解决?
Win10系统下载文件时,默认会保存在特定位置,但用户可自行修改。若更改后仍无效,可通过删除目标磁盘中的特定文件夹、修改注册表权限、“干净启动”排除干扰软件或使用第三方修复工具等方式解决此问题。
1098 0
|
20天前
|
数据采集 监控 数据可视化
Python因果分析选哪个?六个贝叶斯推断库实测对比(含代码示例)
本文对比了Python中六大常用因果推断库:Bnlearn、Pgmpy、CausalNex、DoWhy、PyAgrum和CausalImpact,涵盖贝叶斯网络建模、因果结构学习与效应评估。基于Census Income数据集,分析各库在因果发现、可解释性与工程实践中的优劣,助你根据项目需求选择合适工具。
244 6
Python因果分析选哪个?六个贝叶斯推断库实测对比(含代码示例)
|
1月前
|
存储 安全 固态存储
c盘满了怎么办
c盘满了怎么办
|
6月前
|
SQL 关系型数据库 MySQL
MySQL下载安装全攻略!小白也能轻松上手,从此数据库不再难搞!
这是一份详细的MySQL安装与配置教程,适合初学者快速上手。内容涵盖从下载到安装的每一步操作,包括选择版本、设置路径、配置端口及密码等。同时提供基础操作指南,如数据库管理、数据表增删改查、用户权限设置等。还介绍了备份恢复、图形化工具使用和性能优化技巧,帮助用户全面掌握MySQL的使用方法。附带常见问题解决方法,保姆级教学让你无忧入门!
1068 21
MySQL下载安装全攻略!小白也能轻松上手,从此数据库不再难搞!
|
10月前
Dataphin免费试用指南
为您提供Dataphin快速上手操作指南,一起轻松构建数据
633 67
|
11月前
|
安全 API 数据安全/隐私保护
自学记录HarmonyOS Next DRM API 13:构建安全的数字内容保护系统
在完成HarmonyOS Camera API开发后,我深入研究了数字版权管理(DRM)技术。最新DRM API 13提供了强大的工具,用于保护数字内容的安全传输和使用。通过学习该API的核心功能,如获取许可证、解密内容和管理权限,我实现了一个简单的数字视频保护系统。该系统包括初始化DRM模块、获取许可证、解密视频并播放。此外,我还配置了开发环境并实现了界面布局。未来,随着数字版权保护需求的增加,DRM技术将更加重要。如果你对这一领域感兴趣,欢迎一起探索和进步。
318 18
|
10月前
|
存储 编解码 数据处理
云端问道第4期实践教学——多媒体数据存储与分发方案部署演示
该文档详细介绍了阿里云一键部署和手动部署多媒体数据存储与分发方案的步骤。一键部署通过资源编排服务(ROS)实现自动化,涵盖注册账号、开通服务、创建OSS Bucket、配置CDN加速及绑定IMM等功能,简化了复杂操作。手动部署则更细致地展示了每个配置环节,包括网络规划、资源创建、域名绑定、CDN配置、证书加密及最终的验证与清理,确保用户对整个流程有清晰理解。两种方式均以OSS为核心,支持数据上传、转码处理和加速分发,保障高效稳定的用户体验。
445 4
|
机器学习/深度学习 数据可视化 Linux
Seaborn可视化学习笔记(一):可视化神经网络权重分布情况
这篇文章是关于如何使用Seaborn库来可视化神经网络权重分布的教程,包括函数信息、测试代码和实际应用示例。
319 0
|
Java 测试技术 Spring