首先,使用 psql
命令行工具连接到数据库。如果是本地连接,命令格式如下:
psql -U postgres -d <数据库名称> -h <主机地址>
其中:
-U postgres
:表示以 postgres
用户身份登录。-d <数据库名称>
:指定要连接的数据库。-h <主机地址>
:指定数据库服务器的主机地址(如果是本地,localhost
或 127.0.0.1
)。如果没有指定数据库,psql
会默认连接到 postgres
数据库。
创建一个新的数据库可以使用以下 SQL 语句:
CREATE DATABASE <数据库名称>;
例如:
CREATE DATABASE testdb;
使用 \c
或 \connect
命令查看或切换当前连接的数据库:
\c <数据库名称>
例如,切换到 testdb
数据库:
\c testdb
要查看当前 PostgreSQL 服务器中所有数据库,可以使用以下命令:
\l
或者:
\list
使用以下命令查看当前数据库中所有表:
\dt
创建表时,定义表的字段及其类型。例如:
CREATE TABLE students (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
age INT
);
上面的语句创建了一个名为 students
的表,其中包含 id
、name
和 age
字段。
查看表的结构,可以使用 \d
命令后接表名:
\d students
这将显示 students
表的结构和字段类型。
插入数据时使用 INSERT INTO
语句。假设我们要向 students
表中插入一条记录:
INSERT INTO students (name, age) VALUES ('Alice', 20);
如果你要插入多条记录,可以使用以下语法:
INSERT INTO students (name, age) VALUES
('Bob', 22),
('Charlie', 23),
('David', 21);
查询数据时使用 SELECT
语句。要查询表中的所有记录:
SELECT * FROM students;
查询指定条件的数据:
SELECT * FROM students WHERE age > 21;
查询特定字段:
SELECT name, age FROM students;
更新数据时使用 UPDATE
语句。比如,将 Alice
的年龄改为 21:
UPDATE students SET age = 21 WHERE name = 'Alice';
更新多条记录:
UPDATE students SET age = age + 1 WHERE age < 25;
删除数据时使用 DELETE
语句。比如删除 name
为 Bob
的记录:
DELETE FROM students WHERE name = 'Bob';
如果你想删除所有数据(但保留表结构):
DELETE FROM students;
如果你希望彻底删除表结构及其数据,可以使用 DROP TABLE
:
DROP TABLE students;
查看当前连接的会话信息:
\conninfo
这将显示当前连接的数据库、用户名、主机等信息。
查看数据库的状态或运行信息,使用以下命令:
SELECT pg_stat_activity;
这将显示当前连接到数据库的会话信息,包括每个连接的状态、查询等。
查看某个表所占用的存储空间大小:
SELECT pg_size_pretty(pg_total_relation_size('students'));
如果你要查看所有表的大小,可以使用:
SELECT table_name, pg_size_pretty(pg_total_relation_size(table_name))
FROM information_schema.tables
WHERE table_schema = 'public';
查看数据库本身的大小:
SELECT pg_size_pretty(pg_database_size('testdb'));
你可以替换 testdb
为任何你要查询的数据库名称。
查看某个表的索引:
\di
或者:
SELECT * FROM pg_indexes WHERE tablename = 'students';
为了提高查询效率,可以在表中创建索引。例如,为 students
表的 name
列创建索引:
CREATE INDEX idx_name ON students (name);
使用 pg_dump
命令进行数据库备份。备份到一个文件:(进入数据库)
pg_dump -U postgres -d testdb -f backup.sql
使用 psql
恢复备份的数据:
psql -U postgres -d testdb -f backup.sql
退出 psql
连接:
\q