探索 PostgreSQL 数据类型
在这一步中,我们将探索 PostgreSQL 中可用的一些基本数据类型。理解数据类型对于定义表结构和确保数据完整性至关重要。我们将介绍常见的类型,如整数、文本、日期和布尔值。
首先,让我们连接到 PostgreSQL 数据库。打开一个终端,并使用 psql
命令以 postgres
用户身份连接到 postgres
数据库。由于 postgres
用户是默认的超级用户,你可能需要先使用 sudo
切换到该用户。
sudo -u postgres psql
现在你应该在 PostgreSQL 交互式终端中。你将看到一个类似 postgres=#
的提示符。
现在,让我们探索一些基本的数据类型。
1. 整数类型(Integer Types):
PostgreSQL 提供了几种具有不同范围的整数类型。最常见的是 INTEGER
(或 INT
)和 SMALLINT
。
INTEGER
:对于大多数整数值来说,这是一个典型的选择。
SMALLINT
:用于较小的整数值,以节省空间。
让我们创建一个简单的表来演示这些类型:
CREATE TABLE integer_example (
id SERIAL PRIMARY KEY,
quantity INTEGER,
small_quantity SMALLINT
);
在这里,SERIAL
是一种特殊的类型,它可以自动生成一个整数序列,使其适合作为主键。
现在,插入一些数据:
INSERT INTO integer_example (quantity, small_quantity) VALUES (100, 10);
INSERT INTO integer_example (quantity, small_quantity) VALUES (2000000, 32767);
你可以使用以下命令查看数据:
SELECT * FROM integer_example;
输出:
id | quantity | small_quantity
----+----------+----------------
1 | 100 | 10
2 | 2000000 | 32767
(2 rows)
2. 文本类型(Text Types):
PostgreSQL 提供了 TEXT
、VARCHAR(n)
和 CHAR(n)
用于存储文本。
TEXT
:存储无限长度的可变长度字符串。
VARCHAR(n)
:存储最大长度为 n
的可变长度字符串。
CHAR(n)
:存储长度为 n
的固定长度字符串。如果字符串较短,则用空格填充。
让我们创建另一个表:
CREATE TABLE text_example (
id SERIAL PRIMARY KEY,
name TEXT,
short_name VARCHAR(50),
code CHAR(5)
);
插入一些数据:
INSERT INTO text_example (name, short_name, code) VALUES ('PostgreSQL Database', 'PostgreSQL', 'PG001');
INSERT INTO text_example (name, short_name, code) VALUES ('Another Database', 'Another', 'AD002');
查看数据:
SELECT * FROM text_example;
输出:
id | name | short_name | code
----+--------------------+------------+-------
1 | PostgreSQL Database | PostgreSQL | PG001
2 | Another Database | Another | AD002
(2 rows)
3. 日期和时间类型(Date and Time Types):
PostgreSQL 提供了 DATE
、TIME
、TIMESTAMP
和 TIMESTAMPTZ
用于处理日期和时间值。
DATE
:仅存储日期(年、月、日)。
TIME
:仅存储时间(时、分、秒)。
TIMESTAMP
:存储日期和时间,不包含时区信息。
TIMESTAMPTZ
:存储日期和时间,包含时区信息。
创建表:
CREATE TABLE datetime_example (
id SERIAL PRIMARY KEY,
event_date DATE,
event_time TIME,
event_timestamp TIMESTAMP,
event_timestamptz TIMESTAMPTZ
);
插入数据:
INSERT INTO datetime_example (event_date, event_time, event_timestamp, event_timestamptz)
VALUES ('2023-10-27', '10:30:00', '2023-10-27 10:30:00', '2023-10-27 10:30:00+00');
查看数据:
SELECT * FROM datetime_example;
输出:
id | event_date | event_time | event_timestamp | event_timestamptz
----+------------+------------+---------------------+----------------------------
1 | 2023-10-27 | 10:30:00 | 2023-10-27 10:30:00 | 2023-10-27 10:30:00+00
(1 row)
4. 布尔类型(Boolean Type):
BOOLEAN
类型存储真/假值。
创建表:
CREATE TABLE boolean_example (
id SERIAL PRIMARY KEY,
is_active BOOLEAN
);
插入数据:
INSERT INTO boolean_example (is_active) VALUES (TRUE);
INSERT INTO boolean_example (is_active) VALUES (FALSE);
查看数据:
SELECT * FROM boolean_example;
输出:
id | is_active
----+-----------
1 | t
2 | f
(2 rows)
最后,退出 psql
终端:
\q
你现在已经探索了 PostgreSQL 中的一些基本数据类型。这些数据类型构成了创建健壮且定义良好的数据库模式的基础。