关系型数据库(PostgreSQL)

应用分类:

一款功能强大的开源关系型数据库系统,以其可扩展性、可靠性和对 SQL 标准的兼容性而闻名。

原价为:1.00¥。当前价格为:0.00¥。

关系型数据库 PostgreSQL介绍

一、PostgreSQL 的主要特点及核心功能

PostgreSQL,也被称为 Postgres,是一款强大、开源的关系型数据库管理系统 (RDBMS)。它以其可靠性、数据完整性、广泛的功能集、可扩展性和对 SQL 标准的高度兼容性而闻名。

主要特点:

  • ACID 兼容: PostgreSQL 完全符合 ACID (原子性、一致性、隔离性、持久性) 属性,保证事务的可靠执行和数据的完整性。
  • 高级数据类型: 除了标准的 SQL 数据类型外,PostgreSQL 还支持数组、JSON/JSONB、XML、几何类型、网络地址类型、范围类型等丰富的数据类型,能够处理各种复杂的数据结构。
  • 强大的扩展性: PostgreSQL 拥有强大的扩展机制,允许用户通过扩展添加新的数据类型、函数、索引类型、存储过程等,满足特定的应用需求。
  • 丰富的特性: PostgreSQL 提供了诸如事务、存储过程、触发器、视图、外键、复杂查询等高级 SQL 特性。
  • 全文搜索 (Full-Text Search): 内建了强大的全文搜索功能,支持自然语言查询和相关性排序。
  • 并发控制 (Concurrency Control): 使用多版本并发控制 (MVCC) 实现高并发读写性能,避免了读写锁带来的阻塞。
  • 可靠性和高可用性: PostgreSQL 拥有成熟的事务日志 (WAL) 机制,支持数据备份、恢复、复制 (replication) 和故障转移 (failover) 等高可用性方案。
  • 安全性: 提供完善的身份验证、授权和数据加密功能,保障数据的安全性。
  • 社区支持: 拥有庞大而活跃的开源社区,提供及时的支持和丰富的文档资源。
  • 与标准的高度兼容: 遵循 SQL 标准,方便应用程序的移植和开发。

核心功能:

  • 数据存储和管理: 安全可靠地存储和管理结构化数据。
  • SQL 查询: 支持复杂的 SQL 查询,包括连接、子查询、聚合等。
  • 事务处理: 支持原子性的事务操作,保证数据的一致性。
  • **并发控制:**允许多个用户同时访问和修改数据,并保证数据的一致性。
  • 数据完整性约束: 支持主键、外键、唯一约束、检查约束等,维护数据的完整性。

二、PostgreSQL 的基础使用流程

本部分描述在 PostgreSQL 服务已经运行的前提下,用户进行基本数据库操作的流程。

  1. 连接到 PostgreSQL 服务器: 使用 PostgreSQL 提供的客户端工具 psql 连接到服务器。您需要指定服务器地址、端口、数据库名称、用户名等信息。

    psql -h <服务器地址> -p <端口号> -d <数据库名称> -U <用户名>
    

    例如,连接到本地服务器上的 mydatabase 数据库,使用用户 myuser

    psql -h localhost -p 5432 -d mydatabase -U myuser
    

    系统可能会提示您输入密码。

  2. 创建数据库 (如果需要): 如果您需要操作的数据库不存在,可以使用 CREATE DATABASE 命令创建。

    CREATE DATABASE mynewdatabase;
    
  3. 创建表 (Create Table): 使用 CREATE TABLE 命令定义表的结构,包括列名、数据类型、约束等。

    CREATE TABLE users (
        id SERIAL PRIMARY KEY,
        username VARCHAR(50) UNIQUE NOT NULL,
        email VARCHAR(100) NOT NULL,
        created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
    );
    
  4. 插入数据 (Insert Data): 使用 INSERT INTO 命令向表中插入新的数据行。

    INSERT INTO users (username, email) VALUES ('john_doe', 'john.doe@example.com');
    INSERT INTO users (username, email) VALUES ('jane_doe', 'jane.doe@example.com');
    
  5. 查询数据 (Select Data): 使用 SELECT 命令从表中检索数据。可以指定要查询的列、使用 WHERE 子句进行条件过滤、使用 ORDER BY 子句进行排序等。

    SELECT * FROM users;
    SELECT username, email FROM users WHERE id = 1;
    SELECT * FROM users ORDER BY created_at DESC;
    
  6. 更新数据 (Update Data): 使用 UPDATE 命令修改表中已有的数据。通常需要使用 WHERE 子句指定要更新的行。

    UPDATE users SET email = 'john.new@example.com' WHERE username = 'john_doe';
    
  7. 删除数据 (Delete Data): 使用 DELETE FROM 命令从表中删除数据行。务必谨慎使用,通常需要使用 WHERE 子句指定要删除的行。

    DELETE FROM users WHERE id = 2;
    
  8. 修改表结构 (Alter Table): 使用 ALTER TABLE 命令修改表的结构,例如添加列、删除列、修改列的数据类型、添加约束等。

    ALTER TABLE users ADD COLUMN full_name VARCHAR(100);
    ALTER TABLE users ALTER COLUMN email TYPE VARCHAR(120);
    ALTER TABLE users ADD CONSTRAINT email_unique UNIQUE (email);
    
  9. 删除表 (Drop Table): 使用 DROP TABLE 命令删除整个表。请谨慎使用,删除后数据将无法恢复。

    DROP TABLE users;
    
  10. 断开连接:psql 交互式界面中,可以使用 \q 命令或按下 Ctrl + D 断开与 PostgreSQL 服务器的连接。

三、简单使用实例

假设我们已经连接到名为 mydatabase 的 PostgreSQL 数据库。

  1. 创建 products 表:

    CREATE TABLE products (
        id SERIAL PRIMARY KEY,
        name VARCHAR(100) NOT NULL,
        price DECIMAL(10, 2) NOT NULL,
        stock_quantity INTEGER DEFAULT 0
    );
    
  2. 插入一些产品数据:

    INSERT INTO products (name, price, stock_quantity) VALUES ('Laptop', 1200.50, 10);
    INSERT INTO products (name, price, stock_quantity) VALUES ('Mouse', 25.99, 50);
    INSERT INTO products (name, price, stock_quantity) VALUES ('Keyboard', 75.00, 25);
    
  3. 查询所有价格大于 50 的产品名称和价格:

    SELECT name, price FROM products WHERE price > 50.00;
    

    预期输出:

       name   |  price
    ----------+---------
     Laptop   | 1200.50
     Keyboard |   75.00
    (2 rows)
    
  4. 将名为 ‘Mouse’ 的产品的库存增加 10:

    UPDATE products SET stock_quantity = stock_quantity + 10 WHERE name = 'Mouse';
    
  5. 查询更新后的 ‘Mouse’ 的库存:

    SELECT name, stock_quantity FROM products WHERE name = 'Mouse';
    

    预期输出:

    name  | stock_quantity
    -------+----------------
    Mouse |             60
    (1 row)
    
  6. 查询库存数量小于 20 的产品名称和库存:

    SELECT name, stock_quantity FROM products WHERE stock_quantity < 20;
    

    预期输出:

      name   | stock_quantity
    ---------+----------------
     Laptop  |             10
    (1 row)
    

这个简单的实例演示了如何在 PostgreSQL 中创建表、插入数据、查询数据、更新数据等基本操作。在实际应用中,您会使用更复杂的 SQL 查询、事务处理、索引优化等高级功能。