当前位置: 首页 > news >正文

PostgreSQL 教程

## PostgreSQL 教程

### 1. PostgreSQL 概述
PostgreSQL 是一个开源的对象关系型数据库管理系统(ORDBMS),以其高扩展性和合规性闻名,支持 SQL 和 JSON 查询。

### 2. 安装与配置
- **下载与安装**:从 PostgreSQL 官方网站下载并安装 PostgreSQL。可以选择不同的平台和版本。
- **初始化数据库**:安装后使用 `initdb` 命令初始化数据库集群。
- **启动服务**:使用 `pg_ctl` 或系统服务管理器启动 PostgreSQL 服务。

### 3. 基本概念
- **数据库**:包含多个表、视图、函数等对象的集合。
- **表**:存储结构化数据的基本单位,由行和列组成。
- **模式(Schema)**:数据库中的命名空间,用于组织数据库对象。
- **视图**:基于表的虚拟表,不存储数据,仅存储查询逻辑。
- **函数**:可重复使用的 SQL 代码块,执行特定任务。

### 4. 基本操作
- **连接数据库**:
  ```sh
  psql -h localhost -U username -d databasename
  ```

- **创建数据库**:
  ```sql
  CREATE DATABASE mydatabase;
  ```

- **创建表**:
  ```sql
  CREATE TABLE employees (
      employee_id SERIAL PRIMARY KEY,
      first_name VARCHAR(50),
      last_name VARCHAR(50),
      birth_date DATE
  );
  ```

- **插入数据**:
  ```sql
  INSERT INTO employees (first_name, last_name, birth_date)
  VALUES ('John', 'Doe', '1980-01-01');
  ```

- **查询数据**:
  ```sql
  SELECT * FROM employees;
  ```

- **更新数据**:
  ```sql
  UPDATE employees
  SET first_name = 'Jane'
  WHERE employee_id = 1;
  ```

- **删除数据**:
  ```sql
  DELETE FROM employees
  WHERE employee_id = 1;
  ```

### 5. 常用函数
- **聚合函数**:`SUM()`, `AVG()`, `COUNT()`, `MAX()`, `MIN()`
  ```sql
  SELECT COUNT(*) FROM employees;
  ```

- **字符串函数**:`LENGTH()`, `SUBSTRING()`, `REPLACE()`
  ```sql
  SELECT LENGTH(first_name) FROM employees;
  ```

- **日期函数**:`CURRENT_DATE`, `AGE()`, `DATE_PART()`
  ```sql
  SELECT CURRENT_DATE;
  ```

### 6. 索引
- **创建索引**:提高查询性能
  ```sql
  CREATE INDEX idx_last_name ON employees (last_name);
  ```

- **删除索引**:
  ```sql
  DROP INDEX idx_last_name;
  ```

### 7. 视图
- **创建视图**:
  ```sql
  CREATE VIEW employee_names AS
  SELECT first_name, last_name FROM employees;
  ```

- **查询视图**:
  ```sql
  SELECT * FROM employee_names;
  ```

### 8. 函数
- **创建函数**:
  ```sql
  CREATE FUNCTION get_employee_by_id(emp_id INT) RETURNS TABLE (
      employee_id INT,
      first_name VARCHAR,
      last_name VARCHAR,
      birth_date DATE
  ) AS $$
  BEGIN
      RETURN QUERY SELECT * FROM employees WHERE employee_id = emp_id;
  END;
  $$ LANGUAGE plpgsql;
  ```

- **调用函数**:
  ```sql
  SELECT * FROM get_employee_by_id(1);
  ```

### 9. 触发器
- **创建触发器函数**:
  ```sql
  CREATE FUNCTION after_insert_employee() RETURNS TRIGGER AS $$
  BEGIN
      RAISE NOTICE 'A new row has been inserted.';
      RETURN NEW;
  END;
  $$ LANGUAGE plpgsql;
  ```

- **创建触发器**:
  ```sql
  CREATE TRIGGER trg_after_insert
  AFTER INSERT ON employees
  FOR EACH ROW
  EXECUTE FUNCTION after_insert_employee();
  ```

### 10. 事务管理
- **事务控制**:`BEGIN`, `COMMIT`, `ROLLBACK`
  ```sql
  BEGIN;
  UPDATE employees SET first_name = 'John' WHERE employee_id = 1;
  COMMIT;
  ```

### 11. 安全管理
- **用户和权限**:
  ```sql
  CREATE USER myuser WITH PASSWORD 'mypassword';
  GRANT SELECT ON employees TO myuser;
  ```

### 12. 性能优化
- **查询优化**:使用索引、避免不必要的列和表扫描、优化 SQL 语句。
- **数据库维护**:定期重建索引、更新统计信息、备份和恢复。

### 参考资料
- [PostgreSQL 官方文档](https://www.postgresql.org/docs/)
- 《PostgreSQL: Up and Running》 - Regina O. Obe, Leo S. Hsu

以上是 PostgreSQL 基础学习的一个简要教程,希望对你学习 PostgreSQL 有所帮助。

http://www.lryc.cn/news/352248.html

相关文章:

  • 《基于Jmeter的性能测试框架搭建》改进一
  • 计算机二进制表示和存储各种数据
  • 玩机社区 - 2024年最美社区源码开源
  • Linux系统——面试题分享
  • 谈恋爱没经验?那就来刷谈恋爱经验宝宝吧
  • element-ui输入框和多行文字输入框字体不一样解决
  • (Java企业 / 公司项目)配置Linux网络-导入虚拟机
  • java的unsafe
  • 起底震网病毒的来龙去脉
  • [杂项]优化AMD显卡对DX9游戏(天谕)的支持
  • 服务器没有图形界面没有显示器怎么办
  • 标准化软件实施方案(直接套用即可)
  • 云和恩墨海外首秀在吉隆坡召开的2024中国智能科技与文化展览会
  • 什么是react
  • EPIC免费领取《骑士精神2》 IGN9分神作骑士精神2限时免费领
  • 【Linux】icmp_seq=1 Destination Host Unreachable
  • java性能优化
  • Apache JMeter操作
  • el-table 划入划出方法
  • Todesk无法登录,提示服务器断开连接。(已解决)
  • NDIS小端口驱动(六)
  • postgresql insert on conflict 不存在则插入,存在则更新
  • kafka配置消费者重要参数
  • shell笔记脚本3
  • Kafka消息丢失处理方式,消息丢失与消费失败区别和分别的处理
  • AI爆文写作:标题需要什么?情绪炸裂,态度要激烈,行为要夸张!
  • Flyway SpringBoot中使用
  • 全志A133 Android10 lcd配置显示硬件参数说明
  • 景源畅信:小白做抖音运营难吗?
  • 初探 Spring Boot Starter Security:构建更安全的Spring Boot应用