PostgreSQL

This article is extracted from the chat log with AI. Please identify it with caution.

这里整理了一份非常实用的 PostgreSQL 常用命令清单,从连接到数据库、基本操作到高级功能都涵盖了。

1. 连接与退出数据库#

  • 连接到一个特定的数据库

    psql -h <主机名> -p <端口号> -U <用户名> -d <数据库名>
    • 例如,连接本地的 mydb 数据库:psql -h localhost -p 5432 -U postgres -d mydb
    • 如果连接本地默认端口(5432)的默认数据库,可以简写为:psql -U postgres
  • 退出 psql 命令行界面

    \q

2. 数据库 (Database) 操作#

  • 查看所有数据库列表

    \l
    • 更详细的列表(包括大小、描述等):\l+
  • 创建新数据库

    CREATE DATABASE <数据库名>;
    • 例如:CREATE DATABASE mynewdb;
  • 切换/连接到另一个数据库

    \c <数据库名>
    • 例如:\c mynewdb
  • 删除数据库

    DROP DATABASE <数据库名>;
    • 注意:此操作无法撤销,请谨慎使用。不能在有活跃连接时删除数据库。

3. 表 (Table) 操作#

  • 查看当前数据库中的所有表

    \dt
    • 更详细的列表(包括大小、描述等):\dt+
  • 查看表的结构(定义)

    \d <表名>
    • 例如:\d users
  • 创建新表

    CREATE TABLE <表名> (
      <列名1> <数据类型> <约束>,
      <列名2> <数据类型> <约束>,
      ...
    );
    • 例如:
    CREATE TABLE users (
      id SERIAL PRIMARY KEY,
      name VARCHAR(100) NOT NULL,
      email VARCHAR(100) UNIQUE,
      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
  • 删除表

    DROP TABLE <表名>;
    • 注意:此操作会删除表和其中的所有数据,无法撤销。
  • 清空表(删除所有数据,但保留表结构)

    TRUNCATE TABLE <表名>;

4. 查询与数据操作#

  • 查询数据

    SELECT * FROM <表名>; -- 查询所有列
    SELECT <列名1>, <列名2> FROM <表名> WHERE <条件>; -- 条件查询指定列
  • 插入数据

    INSERT INTO <表名> (<列名1>, <列名2>, ...)
    VALUES (<1>, <2>, ...);
  • 更新数据

    UPDATE <表名>
    SET <列名1> = <新值1>, <列名2> = <新值2>
    WHERE <条件>; -- 务必小心!没有 WHERE 条件会更新所有行
  • 删除数据

    DELETE FROM <表名>
    WHERE <条件>; -- 务必小心!没有 WHERE 条件会删除所有行

5. 信息查询与元命令 (Meta-Commands)#

这些是以反斜杠 \ 开头的特殊命令,用于获取数据库的元信息。

  • 列出所有可用的命令\?

  • 查看所有角色(用户)\du\du+(查看详情)

  • 查看当前连接的信息(当前数据库、用户、端口等):\conninfo

  • 查看索引\di

  • 查看视图\dv

  • 查看函数\df

  • 显示命令历史(类似 Linux 的 history):\s

  • 执行外部文件中的 SQL\i <文件路径>

    • 例如:\i /path/to/myscript.sql

6. 用户与权限 (Role & Privilege) 管理#

  • 创建用户/角色

    CREATE ROLE <用户名> WITH LOGIN PASSWORD '你的密码';

    或者更常用的:

    CREATE USER <用户名> WITH PASSWORD '你的密码';
  • 授予权限(例如,将 mydb 的所有权限授予用户 myuser):

    GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
  • 修改用户密码

    ALTER ROLE <用户名> WITH PASSWORD '新密码';

实用技巧#

  1. 自动补全:在 psql 命令行中,按 Tab 键可以自动补全对象名(如数据库、表、列名)和关键字。
  2. 分页显示:如果结果集很长,psql 会自动使用分页器(通常是 less)。按 空格键 向下翻页,按 q 退出。
  3. 执行系统命令:在 psql 中,可以用 \! <系统命令> 来执行 shell 命令。例如 \! ls -l
  4. 编辑命令:输入命令时,可以用 \e 呼出默认编辑器(如 vim)来编辑复杂的命令或函数,保存退出后会自动执行。
本文共 1421 字,创建于 Sep 20, 2025

相关标签: Database, PostgreSQL, MySQL, ByAI