欢迎你们前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~php
PostgreSQL是自由的对象-关系型数据库服务器,在灵活的BSD风格许可证下发行。它在其余开放源代码数据库系统和专有系统以外,为用户又提供了一种选择。 咱们仍是建议您使用云数据库进行搭建,省去数据迁移等麻烦操做,数据库详见:cloud.tencent.com/product/cdb…数据库
在本文中,咱们将讨论如何在postgreSQL接口中建立和管理表。您将学习如何正确配置表并使用它们来存储您的信息。bash
咱们将在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
复制代码
咱们如今准备了解表管理。
咱们的数据库尚未任何表格。咱们能够此命令为来验证这一点:
\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;
复制代码
除了先前定义中列出的列以外,还继承现有表中的全部列。括号内的部分分为两部分:列定义和表约束。
列定义遵循如下语法模式:
column_name data_type (optional_data_length_restriction) column_constraints
复制代码
列名应该是不言自明的。
数据类型能够是如下任何一种:
列定义还能够具备约束,这些约束为列中找到的数据类型提供规则。如下内容可用做数据类型后面的空格分隔值:
在定义列以后,能够声明表范围的约束。表范围的约束能够是UNIQUE,PRIMARY KEY,CHECK或REFERENCES。
咱们将建立一个名为“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”串行数据类型声明建立的序列。
咱们可使用如下通用语法更改表的定义:
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;
复制代码
咱们能够经过输入下面的命令来删除咱们建立的表:
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》
问答
相关阅读
此文已由做者受权腾讯云+社区发布,原文连接:https://cloud.tencent.com/developer/article/1160560?fromSource=waitui
欢迎你们前往腾讯云+社区或关注云加社区微信公众号(QcloudCommunity),第一时间获取更多海量技术实践干货哦~
海量技术实践经验,尽在云加社区!