it编程 > 数据库 > MsSqlserver

PostgreSQL数据库从入门到精通实战

26人参与 2026-01-12 MsSqlserver

这是一份详细的 postgresql 数据库使用指南,涵盖核心概念、操作、管理和优化实践。

1. 介绍与安装

1.1 什么是 postgresql?

postgresql 是一个功能强大、开源的对象关系型数据库管理系统 (ordbms)。它以其高度的 sql 标准兼容性、强大的功能集(如 json 支持、地理空间数据处理、全文搜索)、可扩展性(通过扩展)以及可靠性(acid 事务支持)而闻名。

1.2 安装 postgresql

2. 基本概念与操作

2.1 连接数据库

2.2 创建数据库

create database mydatabase;
-- 指定所有者
create database mydatabase owner myuser;
-- 指定编码 (推荐 utf8)
create database mydatabase encoding 'utf8';

2.3 创建用户/角色

在 postgresql 中,"角色"(role)可以代表用户(user)或用户组(group)。

-- 创建登录角色 (用户)
create role myuser with login password 'mypassword';
-- 创建超级用户
create role adminuser with login password 'adminpass' superuser;
-- 修改密码
alter role myuser with password 'newpassword';

2.4 创建表

create table employees (
    id serial primary key, -- serial 通常用于自动递增主键
    first_name varchar(50) not null,
    last_name varchar(50) not null,
    email varchar(100) unique,
    hire_date date not null,
    salary numeric(10, 2) check (salary > 0),
    department_id integer references departments(id) -- 外键约束
);

常见数据类型:

2.5 crud 操作 (创建、读取、更新、删除)

插入数据 (create):

insert into employees (first_name, last_name, email, hire_date, salary, department_id)
values ('john', 'doe', 'john.doe@example.com', '2023-01-15', 60000.00, 1);
-- 插入多条
insert into employees (...) values (...), (...), (...);

查询数据 (read):

-- 基本查询
select * from employees;
-- 选择特定列
select first_name, last_name, salary from employees;
-- 条件过滤 (where)
select * from employees where salary > 50000;
select * from employees where hire_date between '2022-01-01' and '2023-12-31';
select * from employees where last_name like 'sm%'; -- 模糊匹配
-- 排序 (order by)
select * from employees order by salary desc;
-- 限制结果集 (limit, offset)
select * from employees order by hire_date desc limit 10 offset 20; -- 分页
-- 聚合函数 (count, sum, avg, min, max)
select count(*) from employees;
select department_id, avg(salary) as avg_salary from employees group by department_id;
select department_id, avg(salary) from employees group by department_id having avg(salary) > 50000; -- having 过滤分组
-- 连接查询 (join)
select e.first_name, e.last_name, d.name as department_name
from employees e
inner join departments d on e.department_id = d.id;
-- 子查询
select * from employees where salary > (select avg(salary) from employees);

更新数据 (update):

update employees set salary = salary * 1.05 where department_id = 3; -- 给部门3的员工涨薪5%
update employees set email = 'new.email@example.com' where id = 42;

删除数据 (delete):

delete from employees where id = 100; -- 删除特定行
delete from employees; -- 删除所有行 (危险!通常用 truncate 更快)
truncate table employees; -- 快速清空表,重置序列 (如果有),但无法触发 delete 触发器
truncate table employees restart identity; -- 同时重置关联的序列

3. 高级功能

3.1 索引

索引是加速查询的关键。

3.2 事务 (transactions)

postgresql 使用 mvcc (多版本并发控制) 来管理并发访问。

3.3 视图 (views)

视图是基于一个或多个表的查询结果的虚拟表。

-- 创建视图
create view employee_summary as
select e.id, e.first_name, e.last_name, d.name as department, e.salary
from employees e
join departments d on e.department_id = d.id;
-- 查询视图
select * from employee_summary where department = 'engineering';
-- 更新视图 (有限制条件,需满足特定规则)
create or replace view ... -- 修改视图定义
drop view employee_summary; -- 删除视图

3.4 存储过程与函数 (pl/pgsql)

postgresql 支持多种过程语言,最常用的是 pl/pgsql。

-- 简单函数示例
create or replace function get_employee_count(dept_id integer)
returns integer as $$
declare
    emp_count integer;
begin
    select count(*) into emp_count
    from employees
    where department_id = dept_id;
    return emp_count;
end;
$$ language plpgsql;
-- 调用函数
select get_employee_count(1);

3.5 触发器 (triggers)

触发器在特定事件(insert, update, delete)发生时自动执行一个函数。

-- 创建触发器函数 (记录员工薪资变更)
create or replace function log_salary_change()
returns trigger as $$
begin
    if new.salary <> old.salary then
        insert into salary_history (employee_id, old_salary, new_salary, change_time)
        values (old.id, old.salary, new.salary, now());
    end if;
    return new;
end;
$$ language plpgsql;
-- 创建触发器
create trigger track_salary_change
after update of salary on employees -- 仅当 salary 列更新时触发
for each row
execute function log_salary_change();

3.6 扩展 (extensions)

postgresql 的功能可以通过扩展来增强。

4. 管理与维护

4.1 配置 (postgresql.conf)

主要配置文件,控制数据库行为(内存、连接、日志、复制等)。位置通常在数据目录下。

4.2 用户与权限管理

4.3 备份与恢复

4.4 性能调优

4.5 日常维护

5. 安全

6. 复制与高可用

postgresql 支持多种复制方案以实现高可用性和读写分离。

附录

这份指南提供了 postgresql 的全面概览和核心实践。请务必查阅官方文档以获取最准确和最新的信息,并根据您的具体需求和应用场景进行深入学习和配置调整。

到此这篇关于postgresql数据库全攻略:从入门到精通的文章就介绍到这了,更多相关postgresql从入门到精通内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

PostgreSQL 分区表的实现示例

01-13

Mac OS上安装PostgreSQL完整图文教程

01-11

如何使用 SQL Server Management Studio还原 .bak 备份文件

01-16

SQLGlot库全面解析

01-11

PostgreSQL如何选择合适的数据类型

01-19

PostgreSQL高效处理上亿级图片URL与MD5映射关系的设计方案

01-19

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论