PostgreSQL 简介与基础(一)

1. 什么是 PostgreSQL

1.1 概述

PostgreSQL(常简称为Postgres)是一种功能强大的开源关系型数据库管理系统(RDBMS)。它以其可靠性、强大的功能和符合标准的特性著称。PostgreSQL 支持大部分 SQL 标准,并且具有许多现代特性:

  • ACID 事务
  • 外键、联接、视图、触发器
  • 存储过程(可用多种编程语言编写)
  • 完全支持各种数据类型(如整数、浮点数、文本、日期/时间、布尔值、数组、JSON 等)

1.2 特性

  • 开源许可证: PostgreSQL 使用的是自由开源许可证,允许用户免费使用、修改和分发。
  • 跨平台支持: 支持多种操作系统,包括 Linux、Windows 和 macOS。
  • 扩展性: 允许用户定义数据类型、操作符、索引类型、函数等。
  • 并发控制: 采用多版本并发控制(MVCC)机制,支持高并发环境。

2. 安装与配置

2.1 安装 PostgreSQL

2.1.1 在 Linux 上安装

对于基于 Debian 的系统(如 Ubuntu),可以使用以下命令安装 PostgreSQL:

复制代码
sudo apt update
sudo apt install postgresql postgresql-contrib

对于基于 Red Hat 的系统(如 CentOS),可以使用以下命令:

复制代码
sudo yum install postgresql-server postgresql-contrib
sudo postgresql-setup initdb
sudo systemctl start postgresql
sudo systemctl enable postgresql
2.1.2 在 Windows 上安装
  1. 下载 PostgreSQL 安装程序
  2. 运行安装程序并按照提示进行安装。
  3. 安装完成后,可以通过 pgAdmin 或命令行工具连接到数据库。

2.2 初始配置

2.2.1 创建超级用户

安装完成后,默认的超级用户是 postgres。可以通过以下命令切换到 postgres 用户并访问 PostgreSQL:

复制代码
sudo -i -u postgres
psql

在 psql 命令提示符下,可以创建新的超级用户:

sql 复制代码
CREATE USER myuser WITH SUPERUSER CREATEDB CREATEROLE PASSWORD 'mypassword';
2.2.2 创建数据库

使用以下命令创建新的数据库:

sql 复制代码
CREATE DATABASE mydatabase;

3. 基本概念

3.1 数据库、表、行、列

  • 数据库(Database): 存储数据的容器,每个数据库包含多个表。
  • 表(Table): 数据的结构化表示,由行和列组成。
  • 行(Row): 表中的一条记录,每行包含多个列。
  • 列(Column): 表的一个字段,每列存储一种类型的数据。

3.2 数据类型

PostgreSQL 支持多种数据类型,常用的数据类型包括:

  • 整数类型: INTEGERSERIAL
  • 浮点数类型: REALDOUBLE PRECISION
  • 字符类型: VARCHAR(n)CHAR(n)TEXT
  • 日期/时间类型: DATETIMETIMESTAMP
  • 布尔类型: BOOLEAN
  • JSON 类型: JSONJSONB

4. 基本操作

4.1 连接数据库

可以通过 psql 工具连接到 PostgreSQL 数据库:

sql 复制代码
psql -U myuser -d mydatabase

4.2 创建表

以下是一个创建表的示例:

sql 复制代码
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

4.3 插入数据

向表中插入数据:

sql 复制代码
INSERT INTO users (username, email) VALUES ('alice', 'alice@example.com');

4.4 查询数据

从表中查询数据:

sql 复制代码
SELECT * FROM users;

4.5 更新数据

更新表中的数据:

sql 复制代码
UPDATE users SET email = 'alice@newdomain.com' WHERE username = 'alice';

4.6 删除数据

删除表中的数据:

sql 复制代码
DELETE FROM users WHERE username = 'alice';

系统文章目录:

PostgreSQL 简介与基础(一)

PostgreSQL 基本SQL语法(二)

PostgreSQL 高级SQL查询(三)

PostgreSQL 数据库设计与管理(四)

PostgreSQL 高级功能(五)

PostgreSQL 性能优化与调优(六)

PostgreSQL 高可用性与灾难恢复策略(七)

PostgreSQL 安全性与权限管理(八)

PostgreSQL 高级功能与扩展(九)

PostgreSQL 分区表与并行查询(十)

PostgreSQL 索引优化与性能调优(十一)

PostgreSQL 日志管理与故障排查(十二)

PostgreSQL 高可用性与容错性(十三)

相关推荐
ldj20201 天前
2025 Centos 安装PostgreSQL
linux·postgresql·centos
坤坤不爱吃鱼3 天前
【MySQL\Oracle\PostgreSQL】迁移到openGauss数据出现的问题解决方案
mysql·postgresql·oracle
行星0083 天前
PostgreSQL大表创建分区实战
数据库·postgresql
heart000_113 天前
拯救海量数据:PostgreSQL分区表性能优化实战手册(附压测对比)
数据库·postgresql·性能优化
忧愁的锅盖儿13 天前
PostgreSQL(二十七)索引内部结构
数据库·postgresql
静听山水15 天前
PostgreSQL/Hologres 外部数据包装器系统表 pg_foreign_data_wrapper 详解
数据库·postgresql
进击ing小白16 天前
项目中PostGreSql数据库的维护
数据库·postgresql·oracle
ZaaaaacK18 天前
Linux系统远程操作和程序编译
linux·运维·postgresql
haokan_Jia19 天前
java和postgresql替换多种空白字符(包括制表符、换行、空格等):
java·开发语言·postgresql
中国lanwp19 天前
DBeaver 中 Greenplum、PostgreSQL 和 PostgreSQL (old) 驱动的区别
数据库·postgresql