资讯专栏INFORMATION COLUMN

想熟悉PostgreSQL?这篇就够了

DTeam / 1424人阅读

摘要:它在其他开放源代码数据库系统和专有系统之外,为用户又提供了一种选择。将插入空间以填补任何额外的空间。始终被视为唯一值上述两个约束的组合。表范围的约束可以是,,或。如何在中创建表我们将创建一个名为的表,它定义了各种游乐场设备。

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

本文由angel_郁  发表于云+社区专栏
什么是PostgreSQL?

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

在本文中,我们将讨论如何在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/dev...

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39001.html

相关文章

  • 熟悉PostgreSQL这篇够了

    摘要:它在其他开放源代码数据库系统和专有系统之外,为用户又提供了一种选择。将插入空间以填补任何额外的空间。始终被视为唯一值上述两个约束的组合。表范围的约束可以是,,或。如何在中创建表我们将创建一个名为的表,它定义了各种游乐场设备。 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由angel_郁 发表于云+社区专栏 什么是PostgreSQL? PostgreSQL是自由...

    wupengyu 评论0 收藏0
  • JavaScript闭包,只学这篇够了

    摘要:当在中调用匿名函数时,它们用的都是同一个闭包,而且在这个闭包中使用了和的当前值的值为因为循环已经结束,的值为。最好将闭包当作是一个函数的入口创建的,而局部变量是被添加进这个闭包的。 闭包不是魔法 这篇文章使用一些简单的代码例子来解释JavaScript闭包的概念,即使新手也可以轻松参透闭包的含义。 其实只要理解了核心概念,闭包并不是那么的难于理解。但是,网上充斥了太多学术性的文章,对于...

    CoderBear 评论0 收藏0
  • 虚拟机网络模型详解,看这篇够了(图文并茂)

    摘要:所以,桥接网络一般也只适用于桌面虚拟机或者小规模网络这种简单的形式。总结虚拟机的四种网络模型桥接主机和内网模型。 本文首发于我的公众号 cloud_dev,专注于干货分享,号内有大量书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。 01 从物理网络到虚拟网络 著名的「六度分隔定理」说到,世界上任何两个互不相识的人,只需要最多六个人就能够建立起联系。这个定理...

    UsherChen 评论0 收藏0
  • 虚拟机网络模型详解,看这篇够了(图文并茂)

    摘要:所以,桥接网络一般也只适用于桌面虚拟机或者小规模网络这种简单的形式。总结虚拟机的四种网络模型桥接主机和内网模型。 本文首发于我的公众号 cloud_dev,专注于干货分享,号内有大量书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。 01 从物理网络到虚拟网络 著名的「六度分隔定理」说到,世界上任何两个互不相识的人,只需要最多六个人就能够建立起联系。这个定理...

    frontoldman 评论0 收藏0
  • 分享一波关于做Kaggle比赛,Jdata,天池的经验,看完我这篇够了

    摘要:但是不能完成的是做成一个可以轻易复用到各种比赛的框架。因为每个比赛的数据大不相同。没什么道理性的,有时候行,有时不行找比赛,这个就是钻空子吧。 @Author : Jasperyang@School : BUPT 这篇文章同时在知乎里放着~ 写在前面 Kaggle的数据挖掘比赛近年来很火,以至于中国兴起了很多很多类似的比赛,做了两个这种类型的比赛了,Jdata用户商品购买预测和用户位置...

    tomlingtm 评论0 收藏0

发表评论

0条评论

DTeam

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<