欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~

本文由angel_郁 发表于云+社区专栏

什么是PostgreSQL?

PostgreSQL自由的对象-关系型数据库服务器,在灵活的BSD风格许可证下发行。它在其他开放源代码数据库系统和专有系统之外,为用户又提供了一种选择。 我们还是建议您使用云数据库进行搭建,省去数据迁移等麻烦操作,数据库详见:https://cloud.tencent.com/product/cdb-overview

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

如何在Ubuntu上安装并登录PostgreSQL

我们将在Ubuntu上安装PostgreSQL,但它应该可以在大多数其他发行版的默认存储库中使用。

输入以下要安装的命令:

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

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

sudo adduser postgres_user

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

sudo su  -  postgres
PSQL

您将被放入PostgreSQL命令提示符。

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

CREATE USER postgres_user密码为' 密码 ';
CREATE DATABASE my_postgres_db OWNER postgres_user ;

使用以下命令退出界面:

\q

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

exit
sudo su - postgres_user

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

psql my_postgres_db

我们现在准备了解表管理。

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”或“bool”声明true或false值。
  • 字符值
    • 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地址

PostreSQL列和表约束

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

  • 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”串行数据类型声明创建的序列。

如何在PostgreSQL中更改表数据

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

ALTER TABLE table_name Action_TO_Take;

例如,我们可以通过输入以下命令在我们的“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';

如果我们想确保该值也不为null,我们可以这样做:

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,这些技能将非常有用。更多Linux教程,请持续关注腾讯云+社区的文章。


参考文献:《How To Create, Remove, & Manage Tables in PostgreSQL on a Cloud Server》

问答

PostgreSQL的隐藏特征?

相关阅读

Nginx的安装和配置疑难解答

如何备份你的MySQL数据库

MySQL 8.0 版本功能变更介绍

此文已由作者授权腾讯云+社区发布,原文链接:https://cloud.tencent.com/developer/article/1160560?fromSource=waitui

欢迎大家前往腾讯云+社区或关注云加社区微信公众号(QcloudCommunity),第一时间获取更多海量技术实践干货哦~

海量技术实践经验,尽在云加社区

想熟悉PostgreSQL?这篇就够了的更多相关文章

  1. 想了解SAW,BAW,FBAR滤波器的原理?看这篇就够了!

    想了解SAW,BAW,FBAR滤波器的原理?看这篇就够了!   很多通信系统发展到某种程度都会有小型化的趋势.一方面小型化可以让系统更加轻便和有效,另一方面,日益发展的IC**技术可以用更低的成本生产 ...

  2. 透彻掌握Promise的使用,读这篇就够了

    透彻掌握Promise的使用,读这篇就够了 Promise的重要性我认为我没有必要多讲,概括起来说就是必须得掌握,而且还要掌握透彻.这篇文章的开头,主要跟大家分析一下,为什么会有Promise出现. ...

  3. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  4. React入门看这篇就够了

    摘要: 很多值得了解的细节. 原文:React入门看这篇就够了 作者:Random Fundebug经授权转载,版权归原作者所有. React 背景介绍 React 入门实例教程 React 起源于 ...

  5. 任务21 :了解ASP.NET Core 依赖注入,看这篇就够了

    DI在.NET Core里面被提到了一个非常重要的位置, 这篇文章主要再给大家普及一下关于依赖注入的概念,身边有工作六七年的同事还个东西搞不清楚.另外再介绍一下.NET  Core的DI实现以及对实例 ...

  6. [转]React入门看这篇就够了

    摘要: 很多值得了解的细节. 原文:React入门看这篇就够了 作者:Random Fundebug经授权转载,版权归原作者所有. React 背景介绍 React 入门实例教程 React 起源于 ...

  7. 关于 Docker 镜像的操作,看完这篇就够啦 !(下)

    紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...

  8. ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了

    引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...

  9. Ajax原理一篇就够了

    Ajax原理一篇就够了 一.什么是Ajax Ajax(Asynchronous JavaScript and XML的缩写)是一种异步请求数据的web开发技术,对于改善用户的体验和页面性能很有帮助.简 ...

随机推荐

  1. Window 服务启动出错 14001

    在安装windows服务时,没有异常情况,但是在启动的过程中出现 14001错误. 错误 14001 应用程序无法启动 因为应用程序的并行配置不正确 有关详细信息 请参阅应用程序事件日志 或使用命令行 ...

  2. Word页面去除下划线(Office 2017)实现

    后面就不用说了吧设置边框无

  3. django drf viewsets和routers

    1.定义VIew from django.shortcuts import render from rest_framework.views import APIView from rest_fram ...

  4. Visual Studio 2008 SP1键盘F10单步调试超慢解决方法

    症状: 中断程序调试时,F10或者其它键盘操作都超级慢. 鼠标点击工具栏的按钮速度正常. 解决方法: 网上说的什么删掉所有断点啦,关掉几个窗口啦,重置用户设置啦,关掉某某调试选项啦,关掉防火墙啦,都是 ...

  5. [网络流24题] 最长K可重区间集问题

    题目链接:戳我 当时刷24题的时候偷了懒,没有写完,结果落下这道题没有写qwq结果今天考试T3中就有一部分要用到这个思想,蒟蒻我硬是没有想到网络流呜呜呜 最大费用流. 就是我们考虑将问题转化一下,转化 ...

  6. Vagrant更改默认的SSH端口

    Vagrant默认转发宿主的2222端口到虚拟机的22端口(默认设置,无须配置).在有多个虚拟机并存的情况下,2222端口将不好使.具体表现在: 启动第二个虚拟机的时候,会报端口占用错误: $ vag ...

  7. centos6.3 配置 smb 服务

    1.安装 samba 以及相关依赖包:yum install samba samba-client samba-swat 2.添加 smb 服务用户:smbpasswd -a user_name(之后 ...

  8. 求二叉树第K层的节点个数+求二叉树叶子节点的个数

    size_t _FindLeafSize(Node* root)     //求二叉树叶子节点的个数    {        //static size_t count = 0;        if ...

  9. jquery事件一 ---鼠标移入移出

    比较一下几个jquery事件的区别 mouseover() 鼠标进入(进入子元素也触发) mouseout() 鼠标离开(离开子元素也触发) mouseenter() 鼠标进入(进入子元素不触发) m ...

  10. exec和xargs

    参考:http://www.cnblogs.com/itxdm/p/5936907.html 一. 先复习下find命令 1. name参数 find -name tom 或 find -iname ...