1. 安装PostgreSQL

1.1 在Ubuntu上安装PostgreSQL

  1. 更新包列表:

    sudo apt-get update
    
  2. 安装PostgreSQL:

    sudo apt-get install postgresql
    
  3. 配置PostgreSQL(可选,根据需要配置)。

  4. 启动PostgreSQL服务:

    sudo systemctl start postgresql
    
  5. 设置开机自启:

    sudo systemctl enable postgresql
    

1.2 在Debian上安装PostgreSQL

  1. 导入PostgreSQL的GPG密钥:

    wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    
  2. 添加PostgreSQL的apt仓库:

    echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
    
  3. 更新包列表:

    sudo apt-get update
    
  4. 安装PostgreSQL:

    sudo apt-get install postgresql-12  # 根据需要选择版本
    
  5. 配置PostgreSQL(同Ubuntu)。

  6. 启动和设置开机自启(同Ubuntu)。

1.3 使用Docker容器安装PostgreSQL

  1. 拉取PostgreSQL的Docker镜像:

    docker pull postgres
    
  2. 运行PostgreSQL容器:

    docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
    
  3. 连接到PostgreSQL容器:

    docker exec -it some-postgres psql -U postgres
    

2. PostgreSQL基础语法

2.1 创建数据库

CREATE DATABASE mydatabase;

2.2 创建表

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100) UNIQUE
);

2.3 插入数据

INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');

2.4 查询数据

SELECT * FROM users;

2.5 更新数据

UPDATE users SET email = 'newemail@example.com' WHERE id = 1;

2.6 删除数据

DELETE FROM users WHERE id = 1;

3. PostgreSQL精通

3.1 索引

创建索引以提高查询效率:

CREATE INDEX idx_users_email ON users USING btree (email);

3.2 视图

创建视图简化复杂查询:

CREATE VIEW user_emails AS
SELECT name, email FROM users;

3.3 存储过程

创建存储过程封装常用操作:

CREATE OR REPLACE FUNCTION insert_user(name VARCHAR, email VARCHAR)
RETURNS VOID AS $$
BEGIN
    INSERT INTO users (name, email) VALUES (name, email);
END;
$$ LANGUAGE plpgsql;

3.4 触发器

创建触发器自动执行特定操作:

CREATE TRIGGER trigger_after_insert
AFTER INSERT ON users
FOR EACH ROW
EXECUTE FUNCTION log_insert();

3.5 事务

使用事务保证数据一致性:

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
COMMIT;  -- 或 ROLLBACK;

3.6 性能调优

  • 使用EXPLAIN​分析查询计划

  • 根据实际使用情况调整配置文件postgresql.conf​

  • 定期进行数据库维护,如VACUUM​和ANALYZE​

3.7 安全性

  • 限制访问权限

  • 使用SSL连接

  • 定期备份数据库

这份教程提供了PostgreSQL的安装、基础语法和一些进阶使用技巧。掌握这些内容将有助于您更有效地使用PostgreSQL数据库。