欢迎你们前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~php
本文由 angel_郁 发表于 云+社区专栏
PostgreSQL是自由的对象-关系型数据库服务器,在灵活的BSD风格许可证下发行。它在其余开放源代码数据库系统和专有系统以外,为用户又提供了一种选择。 咱们仍是建议您使用云数据库进行搭建,省去数据迁移等麻烦操做,数据库详见:https://cloud.tencent.com/pro... sql
在本文中,咱们将讨论如何在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
建立与您建立的系统用户匹配的新用户。而后建立该用户管理的数据库:开放源代码
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/dev...
欢迎你们前往腾讯云+社区或关注云加社区微信公众号(QcloudCommunity),第一时间获取更多海量技术实践干货哦~
海量技术实践经验,尽在云加社区!