文章目录
- 一.PostgreSQL数据库
- 1.PostgreSQL数据库的概念
- 1.1 PostgreSQL 的核心概念
- 2.PostgreSQL特点
- 3.PostgreSQL的作用
- 4.PostgreSQL的应用场景
- 5.PostgreSQL、mysql、oracle的对比
- 二.Linux系统安装PostgresSQL(Centos7)
- 1.更新yun源
- 2.安装PostgreSQL
- 2.1 安装rpm文件
- 2.2 安装客户端
- 2.3 安装服务器
- 2.4 设置自启动postgresql服务
- 3. 创建用户和数据
- 3.1 登录postgresql数据库
- 3.2 创建用户和数据库并授权
- 3.2.1 直接修改postgres密码(推荐使用)
- 3.2.2 创建其他数据库
- 4.退出psql
- 三.PostgreSQL的相关命令
- 1.连接 PostgreSQL 数据库
- 2.创建一个新的数据库:
- 3.删除一个已经存在的数据库:
- 4.展示创建的postgresgl数据库
- 5.创建表
- 6.给表中添加列
- 7.给表的列添加数据
- 8.查看表中信息
- 9.向表中插入信息
- 10.添加表的列
- 11. 修改表的列
- 11.1 修改表列的数据类型
- 11.2 修改列的名称
- 11.3 添加约束
- 11.4 删除列
- 12.更新数据库表中已有的数据
- 12.1 更新特定行的数据
- 12.2 批量更新符合条件的行的数据:
- 12.3 更新多个列的数据
- 四.PostgreSQL的优化(什么情况下优化)
- 1.优化的作用
- 2.需要优化的情况及优化方式
- 总
- PostgreSQL相比较突出的优点:
- mysql相比较突出的优点:
- oracle相比较突出的优点:
一.PostgreSQL数据库
1.PostgreSQL数据库的概念
(1)PostgreSQL 是一种开源的面向对象的关系型数据库管理系统(RDBMS),是一种高度可扩展的、高性能的数据库服务器,可在 Windows、Linux、UNIX 和 macOS 等操作系统上运行。
(2)它支持 SQL 语言的完整标准和 ACID 事务,能够处理复杂的数据结构和查询,具有良好的扩展性和可编程性。
(3)PostgreSQL 提供了诸如完整的事务支持、多版本并发控制(MVCC)、复制服务、支持 SQL-92 标准的 SQL 解析器、批量插入和查询、可编程 SQL 等功能。
(4)它也是 MySQL 等其他开源数据库系统中没有的功能和特性,比如逻辑复制、表空间、分区表、外部表等。
(5)PostgreSQL 还提供了丰富的扩展 API 和插件机制,使得它可以应用于各种不同的场景和应用领域。
总:PostgreSQL 是一种功能强大、可靠稳定的数据库管理系统,它具有很多高级特性和强大的扩展性,被广泛应用于企业、大型组织和开发者社区中的各种数据存储和数据处理场景。
1.1 PostgreSQL 的核心概念
- 数据库对象:PostgreSQL 管理多种不同类型的数据库对象,包括数据库(database)、模式(schema)、表(table)、序列(sequence)、视图(view)、索引(index)和函数等等。每个数据库对象都可以由 SQL 语句或者客户端工具进行创建、修改和删除操作。
- 数据类型:PostgreSQL 支持多种标准SQL类型,例如:整数、浮点数、字符、日期/时间等,同时还支持一些非标准的数据类型,如数组、枚举、范围、JSON 等等。
- 查询语言:PostgreSQL 支持 SQL 标准,并且实现了 SQL-92、SQL-99、SQL-2003 等标准中的许多特性,同时具备非常强大的查询能力,能够完成复杂的数据查询任务。
- 事务和锁定:在 PostgreSQL 中,每个数据库连接都可以运行在独立的事务中,这些事务可以保证ACID属性。同时,PostgreSQL 还提供了多种锁保护机制,如行级锁、页级锁、表级锁等,以保证数据的隔离性和完整性。
- 安全性和权限控制:PostgreSQL 具有安全性高、子网安全性高、用户/角色管理等特性。可以通过 PostgreSQL 的权限管理机制来授予每个连接不同级别的权限,它的权限体系相对复杂,同时支持细粒度控制。
- 备份和恢复:PostgreSQL 提供了几种备份机制,以确保数据的可靠性和持久性。例如,通过二进制日志归档、基于时间点的恢复等技术,可以对数据进行备份和恢复,以保障数据的高可用和可靠性。
总:以上这些核心概念是使用 PostgreSQL 的必备知识,它们是 PostgreSQL 的基础架构和核心特性。
2.PostgreSQL特点
- 开源免费:PostgreSQL 是一款免费且开源的数据库,没有任何专利问题和额外的许可费用,这使得它成为开发者和企业的首选数据库。
- 可扩展性:PostgreSQL 具有很强的可扩展性和可定制性,用户可以通过编写存储过程、触发器、自定义数据类型等来实现个性化的功能和处理方式,同时还支持扩展API和插件机制。
- 功能丰富:PostgreSQL 支持标准 SQL 和许多非标准的数据类型,如数组、JSON、XML 等,同时实现了 SQL-92、SQL-99、SQL-2003 等多个标准,支持多种数据处理和查询任务,如分组、过滤、联合查询、窗口函数、递归查询、地理信息处理等等。
- 高性能:PostgreSQL 通过使用 MVCC、写前日志(Write-ahead logging,WAL)、自适应查询优化器等技术,能够提供高性能的数据访问速度和并发控制,同时支持多个索引和高效的数据处理能力。
- 可靠性和安全性:PostgreSQL 通过提供ACID事务的支持、异地备份和恢复等机制,能够保证数据的持久性和可靠性。同时,它通过自带的加密和用户和角色权限机制等方式,保证数据的安全性。
- 社区支持:PostgreSQL 拥有强大的社区支持,并且在活跃的开发和维护中,这使得它有许多开发者,可靠的资料和文档。
总之,PostgreSQL 是一款成熟的、功能强大的、安全可靠的数据库管理系统。通过使用 PostgreSQL,开发者和企业可以获得高性能、高可用和高度可扩展性的数据处理和存储能力。
3.PostgreSQL的作用
PostgreSQL 的作用主要是提供一个可靠、高性能、可扩展的关系型数据库管理系统,用于存储、管理和处理各种类型的数据。具体来说,PostgreSQL 可以实现以下主要功能和应用:
(1)数据存储和访问:PostgreSQL 可以实现关系型数据的存储和访问,支持多种标准 SQL 数据类型,如整数、浮点数、字符、日期/时间等,同时还支持非标准的数据类型,如数组、JSON 等。
(2)数据保护和可靠性:PostgreSQL 提供了各种数据保护机制,包括事务、MVCC、ACID 属性、WAL 日志归档、异地备份等,从而尽可能地确保数据的安全性和可靠性。
(3)数据处理和分析:PostgreSQL 的高级查询分析器和支持复杂查询的计算引擎,以及许多第三方扩展,可以帮助用户快速高效地对数据进行分析和查询,支持复杂的数据处理,如分组、过滤、联合查询、递归查询等。
(4)应用开发和支持:PostgreSQL 提供了丰富的编程接口和许多扩展和插件机制,提供了各种不同的开发工具,使得开发人员能够更方便地开发和管理 PostgreSQL 数据库和应用程序。
总:PostgreSQL 在数据存储、数据分析、数据处理、应用开发等各个方面都具有非常广泛的应用和重要作用,是一款非常出色的关系型数据库管理系统。
4.PostgreSQL的应用场景
PostgreSQL 的应用场景非常广泛,可以满足不同领域、不同规模的数据存储和数据处理需求。以下是一些常见的 PostgreSQL 应用场景:
- 企业级应用:PostgreSQL 通过提供事务支持、ACID 特性、高可靠性和可扩展性等功能,成为许多企业级应用程序的首选数据库,并已成为一些重要企业 IT 系统的背后支持。
- 大数据和数据仓库:PostgreSQL 提供了复杂的查询和分析支持,同时也容易扩展至支持分布式架构,成为处理大数据和构建数据仓库的有效工具。
- Web 应用程序:PostgreSQL 提供了丰富的编程接口和扩展,如 PL/pgSQL、pgAdmin 等工具,能够方便地服务于 Web 应用程序的需求。
- 地理信息系统(GIS):PostGIS 是一款基于 Postgres 的自由的、开源的 GIS 扩展,使用 PostGIS 扩展可以在 PostgreSQL 中轻松的进行空间数据存储和处理。
- 金融和保险:PostgreSQL 可以通过事务控制来保证金融和保险应用数据的一致性和正确性,因此被广泛应用于金融和保险等行业。
总:PostgreSQL 具有丰富的功能、高可靠性和可扩展性,是一个功能强大的开源数据库管理系统,能够满足许多不同应用场景和数据处理需求。
5.PostgreSQL、mysql、oracle的对比
PostgreSQL、MySQL、Oracle 是三款主流的关系型数据库管理系统,在不同的场景和应用需求下,这些数据库具有不同的特点和优势,下面是它们的对比分析:
(1)数据安全和可靠性:Oracle 是提供完善数据安全和可靠性的管理系统之一。在一些企业应用等严格要求数据安全性、数据可靠性和事务完整性的场景下, Oracle 更有竞争力。
(2)可扩展性和性能:PostgreSQL 提供高性能和高度可扩展性的架构,可以处理大量数据存储和处理需求,其分布式处理架构提供优秀的处理效率和可扩展性。PostgreSQL 也具有可编程性和灵活性。MySQL 虽然提供了可扩展性的良好支持,但相对于 PostgreSQL 和 Oracle,可能在性能、安全性以及可靠性方面有些差距。
(3)开源免费性:PostgreSQL、MySQL 是免费的开源数据库管理系统,没有专利问题和许可费用,Oracle 是一款商业的数据库管理系统,需要购买许可证。
(4)使用场景:Oracle 数据库在大型企业应用中应用较多,MySQL 则一般用于小型应用、Web 应用程序、商业系统和简单的数据管理需求,PostgreSQL 则更多的应用于数据分析和处理领域,而且在 GIS 空间数据处理和开发领域有很好的支持。
(5)开发接口:PostgreSQL 提供了丰富的编程接口和很多扩展机制,MySQL 也提供了许多编程接口和外部库连接的支持,Oracle 支持丰富的编程语言如 Java、C++、C# 等,并且提供较为完善的相关开发文档和开发支持友好。
总:PostgreSQL、MySQL、Oracle 在不同的场景中各有优劣。在选择数据库时,需要根据实际应用需求和预算等因素进行权衡决策。如果需要高安全性、高可靠性和高扩展性豪华奢侈品,Oracle 可能是最好的选择,如果需要高度可编程的数据库系统,可以选择 PostgreSQL,如果需要易用、性能高、成本低,那么 MySQL 则更适合。
二.Linux系统安装PostgresSQL(Centos7)
1.更新yun源
#在执行“yum upgrade”后如果有下载失败的,重新执行一遍“yum upgrade”
yum clean all
yum upgrade
2.安装PostgreSQL
2.1 安装rpm文件
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
2.2 安装客户端
yum install postgresql11
2.3 安装服务器
yum install postgresql11-server
2.4 设置自启动postgresql服务
systemctl enable postgresql-11
systemctl start postgresql-11
3. 创建用户和数据
3.1 登录postgresql数据库
使用postgres用户登录(PostgresSQL安装后会自动创建postgres用户,无密码)
su - postgres
-bash-4.2$
#登录postgresql数据库,输入:psql
psql
3.2 创建用户和数据库并授权
3.2.1 直接修改postgres密码(推荐使用)
(1)格式
#修改密码
alter user postgres with password 'xxx';
(2)示例
alter user postgres with password '000000';
ALTER ROLE
3.2.2 创建其他数据库
(1)格式
#创建用户
create user 用户名 with password 'xxx';
(2)示例
create user test_user with password 'abc123';
#创建数据库
create database test_db owner test_user;
#授权管理
grant all privileges on database test_db to test_user;
4.退出psql
退出psql(输入 \q 再按回车键即可)
三.PostgreSQL的相关命令
1.连接 PostgreSQL 数据库
(1)格式
psql -h hostname -d dbname -U username
-h hostname
: 这是要连接的 PostgreSQL 服务器的主机名或 IP 地址。-d dbname
: 这是要连接的数据库的名称。-U username
: 这是用于连接数据库的用户名。
请将 hostname
替换为实际的主机名或 IP 地址,dbname
替换为实际的数据库名称,username
替换为实际的用户名。请注意,在这个示例中,没有提供密码参数 -p
,所以你可能还需要提供密码以完成连接。
(2)示例
psql -h 192.168.198.12 -d test_db -U test_user
2.创建一个新的数据库:
(1)格式
CREATE DATABASE数据库名;
(2)示例
CREATE DATABASE txbb;
3.删除一个已经存在的数据库:
(1)格式
drop database 数据库名;
(2)示例
drop database txbb1;
4.展示创建的postgresgl数据库
\l
5.创建表
CREATE TABLE employees (id SERIAL PRIMARY KEY,name VARCHAR(100),age INT,salary NUMERIC(10, 2));
6.给表中添加列
ALTER TABLE employees ADD COLUMN salary NUMERIC(10, 2);
7.给表的列添加数据
UPDATE employees SET salary = '5000' WHERE id = 1;
8.查看表中信息
select * from employees;
9.向表中插入信息
INSERT INTO employees (name, age, salary)
VALUES ('John Doe', 28, 50000.00);
插入多条信息
INSERT INTO employees (name, age, salary)
VALUES ('Jane Smith', 32, 60000.00),
('Bob Johnson', 45, 70000.00),
('Alice Williams', 27, 55000.00);
10.添加表的列
#添加了新列 ok,并为该列设置了默认值为 true。
ALTER TABLE employees ADD COLUMN ok BOOLEAN DEFAULT true;
11. 修改表的列
11.1 修改表列的数据类型
#将 employees 表中的 name 列的数据类型修改为 VARCHAR(150)。
ALTER TABLE employees
ALTER COLUMN name TYPE VARCHAR(150);
11.2 修改列的名称
#将 employees 表中的 age 列重命名为 employee_age。
ALTER TABLE employees
RENAME COLUMN age TO employee_age;
11.3 添加约束
#将在 employees 表中为 employee_age 列添加一个约束条件,确保所有的年龄值大于等于18。
ALTER TABLE employees
ADD CONSTRAINT age_check CHECK (employee_age >= 18);
11.4 删除列
#将从 employees 表中删除 salary 列。
ALTER TABLE employees
DROP COLUMN salary;
12.更新数据库表中已有的数据
12.1 更新特定行的数据
#将id为1的员工的工资更新为5000
UPDATE employees SET salary = 8000 WHERE id = 1;
12.2 批量更新符合条件的行的数据:
#将选择 employee_age 小于 30 的员工,并将他们的 salary 更新为 5000
UPDATE employees SET salary = 5000 WHERE employee_age < 30;
12.3 更新多个列的数据
#将选择 employee_age 小于 30 的员工,并将他们的 salary 更新为 5000,ok 列更新为 false
UPDATE employees SET salary = 5000, ok = false WHERE employee_age < 30;
四.PostgreSQL的优化(什么情况下优化)
1.优化的作用
提升数据库的性能和响应时间
2.需要优化的情况及优化方式
(1)查询性能缓慢:如果查询的响应时间较长,可以通过优化查询来提高性能。这包括创建适当的索引、合理的查询设计和使用查询优化器来改进执行计划等。
(2)大规模数据处理:当处理大量数据时,如批量导入或删除数据,可以考虑使用并行处理、分区表或批处理操作来提高性能。
(3)内存管理:合理配置数据库的内存参数,如共享缓冲区(shared_buffers
)和工作内存(work_mem
),以优化内存使用和查询性能。
(4)硬件优化:根据数据库的负载和需求,选择合适的硬件配置,如磁盘、CPU 和内存等,以满足性能需求。
(5)查询日志和监视:使用查询日志和性能监视工具,识别慢查询和瓶颈,并根据结果进行优化。
(6)正确的索引使用:根据查询的特点和数据访问模式,创建适当的索引以提高查询性能。然而,过多或不必要的索引可能会导致性能下降,因此需要进行权衡和优化。
(7)规范化和反规范化:在设计数据库模式时,考虑表的规范化程度和反规范化的优化技巧,以提高查询性能。
(8)查询重写和重构:对于复杂或低效的查询,考虑优化查询语句的结构和逻辑,以减少开销并提高性能。
(9)并发控制:在高并发的环境中,使用适当的事务隔离级别和锁定策略,以避免并发问题和提高性能。
(work_mem
),以优化内存使用和查询性能。
(4)硬件优化:根据数据库的负载和需求,选择合适的硬件配置,如磁盘、CPU 和内存等,以满足性能需求。
(5)查询日志和监视:使用查询日志和性能监视工具,识别慢查询和瓶颈,并根据结果进行优化。
(6)正确的索引使用:根据查询的特点和数据访问模式,创建适当的索引以提高查询性能。然而,过多或不必要的索引可能会导致性能下降,因此需要进行权衡和优化。
(7)规范化和反规范化:在设计数据库模式时,考虑表的规范化程度和反规范化的优化技巧,以提高查询性能。
(8)查询重写和重构:对于复杂或低效的查询,考虑优化查询语句的结构和逻辑,以减少开销并提高性能。
(9)并发控制:在高并发的环境中,使用适当的事务隔离级别和锁定策略,以避免并发问题和提高性能。
请注意,具体的优化策略会根据你的数据库架构、应用需求和数据特征而有所不同。优化是一个持续的过程,需要通过测试和监控来评估效果,并根据需要进行调整。
总
PostgreSQL相比较突出的优点:
- 可扩展性和性能
- 免费的开源数据库管理系统,没有专利问题和许可费用
- 应用于数据分析和处理领域,而且在 GIS 空间数据处理和开发领域有很好的支持。
- 提供了丰富的编程接口和很多扩展机制
- 需要高度可编程的数据库系统,可以选择 PostgreSQL
mysql相比较突出的优点:
- 免费的开源数据库管理系统,没有专利问题和许可费用
- MySQL 则一般用于小型应用、Web 应用程序、商业系统和简单的数据管理需求
- 提供了许多编程接口和外部库连接的支持
- 需要易用、性能高、成本低,那么 MySQL 则更适合。
oracle相比较突出的优点:
- 数据安全和可靠性
- Oracle 数据库在大型企业应用中应用较多
- 支持丰富的编程语言如 Java、C++、C# 等,并且提供较为完善的相关开发文档和开发支持友好。
- 需要高安全性、高可靠性和高扩展性豪华奢侈品,Oracle 可能是最好的选择