想熟悉PostgreSQL?这篇就够了

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

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

什么是PostgreSQL?

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

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

如何在Ubuntu上安装并登陆PostgreSQL

咱们将在Ubuntu上安装PostgreSQL,但它应该能够在大多数其余发行版的默认存储库中使用。服务器

输入如下要安装的命令:微信

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
复制代码

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

sudo adduser postgres_user
复制代码

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

sudo su  -  postgres
PSQL
复制代码

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

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

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),第一时间获取更多海量技术实践干货哦~

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

相关文章
相关标签/搜索