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 高可用性与容错性(十三)

相关推荐
盒马coding3 小时前
第18节-索引-Partial-Indexes
数据库·postgresql
m0_7369270415 小时前
想抓PostgreSQL里的慢SQL?pg_stat_statements基础黑匣子和pg_stat_monitor时间窗,谁能帮你更准揪出性能小偷?
java·数据库·sql·postgresql
~黄夫人~1 天前
Ubuntu系统快速上手命令(详细)
linux·运维·笔记·ubuntu·postgresql
九皇叔叔2 天前
深度解析 PostgreSQL 中的 ctid、xmin、xmax:从原理到实战
数据库·postgresql
热爱技术的Bryan2 天前
再看看 SQL 中的 null
postgresql
麦麦麦造2 天前
小小 Postgres,何以替代 Redis、MongoDB 甚至 ES?
redis·mongodb·elasticsearch·postgresql
蓝婴天使2 天前
基于 React + Go + PostgreSQL + Redis 的管理系统开发框架
react.js·postgresql·golang
神的孩子都在歌唱2 天前
PostgreSQL 向量检索方式(pgvector)
数据库·人工智能·postgresql
该用户已不存在2 天前
MySQL 与 PostgreSQL,该怎么选?
数据库·mysql·postgresql
白鲸开源3 天前
最佳实践:基于Apache SeaTunnel从MySQL同步到PostgreSQL
大数据·mysql·postgresql