PostgreSQL教程

引言

PostgreSQL,简称Postgres,是一个强大、开源的对象关系型数据库管理系统(ORDBMS)。它因其高性能、稳定性和灵活性而广受欢迎。本文将详细介绍PostgreSQL,从安装、基本操作到高级功能,帮助你全面掌握这款数据库系统。

第一部分:PostgreSQL简介

1.1 什么是PostgreSQL?

PostgreSQL是一个支持多种数据类型和复杂查询的关系型数据库管理系统。它具有以下特点:

  • 开源:PostgreSQL是一个开源项目,免费提供使用和修改。
  • 兼容性强:支持SQL标准,并兼容许多编程语言和开发框架。
  • 扩展性高:允许用户定义数据类型、函数、操作符等。
  • 稳定性好:提供强大的数据完整性和并发控制功能。

1.2 PostgreSQL的历史

PostgreSQL的前身是Ingres数据库,最早由加州大学伯克利分校的Michael Stonebraker等人开发。1986年,Stonebraker在Ingres基础上开发了Postgres系统,后来演变成了今天的PostgreSQL。

第二部分:PostgreSQL的安装

2.1 在Windows上安装PostgreSQL

  1. 下载:访问PostgreSQL官网(https://www.postgresql.org/download/windows/),下载最新的安装程序。
  2. 安装
    • 运行下载的安装程序。
    • 选择安装目录。
    • 设置数据库超级用户(默认用户为postgres)的密码。
    • 选择默认端口(通常为5432)。
    • 完成安装。

2.2 在Linux上安装PostgreSQL

  1. 添加仓库
    sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
    wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    
  2. 更新仓库并安装
    sudo apt-get update
    sudo apt-get install postgresql postgresql-contrib
    

2.3 在macOS上安装PostgreSQL

  1. 使用Homebrew安装
    brew update
    brew install postgresql
    
  2. 启动服务
    brew services start postgresql
    

第三部分:基本操作

3.1 启动和停止PostgreSQL服务

  • 在Windows上

    • 启动:通过“服务”应用程序启动PostgreSQL服务。
    • 停止:通过“服务”应用程序停止PostgreSQL服务。
  • 在Linux上

    sudo systemctl start postgresql
    sudo systemctl stop postgresql
    
  • 在macOS上

    brew services start postgresql
    brew services stop postgresql
    

3.2 连接到数据库

  1. 使用psql命令行工具

    psql -U postgres -d postgres
    
    • -U指定用户名,-d指定数据库名。
  2. 使用pgAdmin:pgAdmin是一个功能强大的图形化管理工具。

    • 打开pgAdmin,创建并连接到服务器。

3.3 创建数据库和用户

  1. 创建数据库

    CREATE DATABASE mydatabase;
    
  2. 创建用户

    CREATE USER myuser WITH PASSWORD 'mypassword';
    
  3. 赋予权限

    GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;
    

3.4 基本SQL操作

  1. 创建表

    CREATE TABLE employees (id SERIAL PRIMARY KEY,name VARCHAR(100),position VARCHAR(50),salary NUMERIC
    );
    
  2. 插入数据

    INSERT INTO employees (name, position, salary) VALUES
    ('Alice', 'Manager', 75000),
    ('Bob', 'Developer', 60000);
    
  3. 查询数据

    SELECT * FROM employees;
    
  4. 更新数据

    UPDATE employees SET salary = 80000 WHERE name = 'Alice';
    
  5. 删除数据

    DELETE FROM employees WHERE name = 'Bob';
    

第四部分:高级功能

4.1 数据完整性和约束

  1. 主键和外键

    CREATE TABLE departments (dept_id SERIAL PRIMARY KEY,dept_name VARCHAR(100)
    );CREATE TABLE employees (id SERIAL PRIMARY KEY,name VARCHAR(100),position VARCHAR(50),salary NUMERIC,dept_id INT REFERENCES departments(dept_id)
    );
    
  2. 唯一约束

    CREATE TABLE users (id SERIAL PRIMARY KEY,username VARCHAR(50) UNIQUE,email VARCHAR(100) UNIQUE
    );
    
  3. 检查约束

    CREATE TABLE products (product_id SERIAL PRIMARY KEY,name VARCHAR(100),price NUMERIC CHECK (price > 0)
    );
    

4.2 视图

  1. 创建视图

    CREATE VIEW employee_salaries AS
    SELECT name, salary FROM employees;
    
  2. 使用视图

    SELECT * FROM employee_salaries;
    

4.3 索引

  1. 创建索引

    CREATE INDEX idx_employee_name ON employees(name);
    
  2. 查看索引

    \d employees
    

4.4 事务和并发控制

  1. 事务

    BEGIN;
    UPDATE employees SET salary = salary + 5000 WHERE position = 'Developer';
    COMMIT;
    
  2. 回滚

    BEGIN;
    UPDATE employees SET salary = salary + 5000 WHERE position = 'Developer';
    ROLLBACK;
    

4.5 备份和恢复

  1. 备份数据库

    pg_dump mydatabase > mydatabase_backup.sql
    
  2. 恢复数据库

    psql mydatabase < mydatabase_backup.sql
    

第五部分:PostgreSQL的优化

5.1 查询优化

  1. 使用EXPLAIN

    EXPLAIN SELECT * FROM employees WHERE salary > 50000;
    
  2. 索引优化

    • 创建适当的索引可以显著提高查询性能。

5.2 配置优化

  1. 调整配置参数

    • 修改postgresql.conf文件,调整内存分配、并发连接数等参数。
  2. 监控和调优

    • 使用pg_stat_activity视图监控活动会话。
    • 使用pg_stat_user_tables视图监控表的使用情况。

结论

PostgreSQL作为一个强大、灵活和稳定的数据库管理系统,适用于各种规模的应用程序。从基本的安装和操作,到高级功能和优化技巧,本文希望能为你提供一个全面的入门指南。通过不断学习和实践,你将能够充分发挥PostgreSQL的强大功能,为你的应用程序提供可靠的数据支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/18652.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

修改vuetify3的开关组件v-switch在inset模式下的大小

<v-switchv-model"model":label"Switch: ${model.toString()}"hide-detailsinset></v-switch>使用方式1&#xff1a;本页面使用 本页面中使用&#xff0c;必须要含有lang“scss” scoped&#xff0c;才会生效 <style lang"scss"…

基础漏洞系列——CSRF跨站请求伪造

简介&#xff1a; 跨站请求伪造&#xff08;英语&#xff1a;Cross-site request forgery&#xff09;&#xff0c;也被称为 one-click attack或者 session riding&#xff0c;通常缩写为 CSRF或者 XSRF&#xff0c; 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操…

【会议征稿,JPCS出版】2024年航空航天与力学国际学术会议(ICAM 2024)

2024年航空航天与力学国际学术会议&#xff08;ICAM 2024&#xff09;将于2024年7月12-14日在中国沈阳举办。会议由东北大学机械工程与自动化学院主办&#xff0c;吉林大学机械与航空航天工程学院承办&#xff0c;大连理工大学、沈阳航空航天大学、沈阳建筑大学、沈阳工业大学、…

react面试题----1(基础和生命周期)

react生命周期面试题 1.react 生命周期函数 初始化阶段: getDefaultProps:获取实例的默认属性getInitialState:获取每个实例的初始化状态componentWillMount:组件即将被装载、渲染到页面上render:组件在这里生成虚拟的 DOM 节点componentDidMount:组件真正在被装载之后运行…

适合源代码的加密系统

在信息化高度发展的今天&#xff0c;源代码的安全问题日益受到重视。源代码是企业或组织的核心资产&#xff0c;一旦泄露或被篡改&#xff0c;将会对其造成巨大的经济损失和声誉风险。因此&#xff0c;如何有效防止源代码的泄露和算改成为了企业和组织急需解决的问题。沙盒技术…

unity 安卓层面的简单热更办法

咱们前段时间不是在写个app吗&#xff0c;就暂时不想搞ios端&#xff0c;但是要实现热更的话&#xff0c;咋办呢&#xff1f;按道理说如果只是安卓端热更的话&#xff0c;其实很简单&#xff0c;因为安卓是支持你程序编译的&#xff0c;所以你可以下载程序&#xff0c;进行安装…

代码随想录算法训练营第四十三天 | 343. 整数拆分、96.不同的二叉搜索树

343. 整数拆分 代码随想录 视频讲解&#xff1a;动态规划&#xff0c;本题关键在于理解递推公式&#xff01;| LeetCode&#xff1a;343. 整数拆分_哔哩哔哩_bilibili 解题思路 1. dp[i]对i进行拆分&#xff0c;得到的最大的乘积为dp[i] 2.递推公式 一个是j * (i - j) 直接相…

Sylvester矩阵、子结式、辗转相除法的三者关系(第三部分)

2.执行辗转相除法第二步 F 7 Q 7 , 6 F 6 F 4 deg ⁡ ( F 7 ) 7 deg ⁡ ( F 6 ) 6 deg ⁡ ( F 4 ) 4 F_{7} Q_{7,6} \times F_{6} F_{4}\ \ \ \ \ \ \ \ \ \ \deg\left( F_{7} \right) 7\ \ \ \ \ \ \deg\left( F_{6} \right) 6\ \ \ \ \ \ \deg\left( F_{4} \right)…

【Rust】——使用消息在线程之间传递数据

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…

非计算机科班如何顺利转入计算机领域:经验分享与建议

近年来&#xff0c;计算机领域的发展日新月异&#xff0c;吸引了越来越多非计算机科班的人士希望跳槽转入这个行业。对于这些人来说&#xff0c;如何顺利转码成为一名程序员&#xff0c;成为了一个备受关注的话题。在本文中&#xff0c;我将分享一些关于非计算机科班如何顺利转…

架构(十七)翻译监控

一、引言 作者最近做的一个功能是需要监控一个翻译转换&#xff0c;根据国家和语言进行分组&#xff0c;然后定时把监控情况放到ck里面。为什么是分组和定时监控呢&#xff1f;因为调用比较高的系统的qps在单机一万多&#xff0c;70台机器&#xff0c;可怕的高频调用注定他不能…

探秘GPT-4o:从版本对比到技术能力的全面评价

随着人工智能技术的不断发展&#xff0c;自然语言处理领域的突破性技术——GPT&#xff08;Generative Pre-trained Transformer&#xff09;系列模型也在不断演进。最新一代的GPT-4o横空出世&#xff0c;引起了广泛的关注和讨论。在本文中&#xff0c;我们将对GPT-4o进行全面评…

【喜报】科大睿智多家服务企业上榜2024年第四批DCMM名单

近日&#xff0c;DCMM官方平台发布通知公告&#xff0c;根据《数据管理能力成熟度评估工作管理办法(暂行)》的有关规定&#xff0c;经单位自愿申请&#xff0c;评估机构评估、专家评审及公示&#xff0c;下列27单位获得数据管理能力成熟度等级证书。小编祝贺多家服务企业上榜20…

前端破圈用Docker开发项目

为什么要用 Docker 开发 &#x1f914; 直接在系统上开发不香吗&#xff1f;香&#xff0c;但是 Docker 有下面4香 环境依赖管理&#xff1a;Docker 容器可以管理所有依赖项&#xff0c;例如前端里面的 node 和 npm 版本&#xff0c;不需要在本地安装和维护这些依赖项 隔离&a…

SQL生成自然数,日历序列 浅析

01.sqlserver版本 使用sqlserver将数据复制n条 selectt.indx,t.name,tmp.vlue from (values(1,苹果) ) as t(indx, name) ,(select[number] as vluefrom master.dbo.spt_valueswhere [type] pand [number] between 1 and 10 ) as tmpspt_values是什么 spt_values是SQL Se…

618入手不亏的好物有哪些?五款品质兼优的好物分享!

随着618购物狂欢节的到来&#xff0c;各位消费者们是否已经摩拳擦掌&#xff0c;准备开启一场购物盛宴&#xff1f;在这里&#xff0c;我们为您精心准备了一份不容错过的购物清单&#xff0c;无论您是科技迷、学生还是家居生活爱好者&#xff0c;都能找到心仪的好物。 1、学生…

经典文献阅读之--RepViT-SAM(利用语义分割提高NDT地图压缩和描述能力的框架)

0. 简介 Segment Anything Model (SAM) 最近在各种计算机视觉任务上展现了令人瞩目的零样本迁移性能 。然而&#xff0c;其高昂的计算成本对于实际应用仍然具有挑战性。MobileSAM 提出通过使用蒸馏替换 SAM 中的重图像编码器&#xff0c;使用 TinyViT&#xff0c;从而显著降低了…

在VSCode 中增加文件与文件夹的可辨识度

今天重新打开VSCode&#xff0c;打算新建一个项目做测试&#xff0c;看到VSCode中的文件与文件夹很不容易辨认&#xff0c;有时候容易导致一些误操作&#xff0c;需要做一些配置来改变。 效果图&#xff1a; 只需要做简单的2步就可以了。 1、安装插件 ⑴ 打开VSCode的扩展搜索并…

降雨量应急监测站的工作原理

TH-YJ3】雨量监测站是一种自动化的气象监测设备&#xff0c;主要用于实时、准确地监测和记录降雨量数据。它通过安装在特定位置的传感器和数据处理设备&#xff0c;连续监测降雨的强度、持续时间和降雨分布等信息&#xff0c;为气象、水文、环境等领域的研究和应用提供数据支持…

美易官方:Copilot全面升级!

Copilot的全面升级&#xff0c;无疑在科技界掀起了一场革命性的浪潮&#xff01;微软在一夜之间推出的这50余项AI更新&#xff0c;不仅彰显了其在人工智能领域的深厚底蕴&#xff0c;更是让全球用户见证了计算机理解人类能力的一次飞跃。 在微软2024年Build开发者大会的主题演…