欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~
什么是PostgreSQL?
PostgreSQL 是 自由的 对象-关系型数据库 服务器,在灵活的 BSD风格许可证 下发行。它在其他开放源代码数据库系统和 专有 系统之外,为用户又提供了一种选择。 我们还是建议您使用云数据库进行搭建,省去数据迁移等麻烦操作,数据库详见: cloud.tencent.com/product/cdb…
在本文中,我们将讨论如何在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