[每周一更]-(第86期):PostgreSQL入门学习和对比MySQL

news2024/11/18 0:32:12

在这里插入图片描述

入门学习PostgreSQL可以遵循以下步骤:

  1. 安装 PostgreSQL
    • 首先,你需要在你的计算机上安装 PostgreSQL。你可以从 PostgreSQL 官方网站 下载适合你操作系统的安装包,并按照官方文档的指导进行安装。
  2. 学习 SQL
    • PostgreSQL 是一个关系型数据库管理系统,支持 SQL 查询语言。学习 SQL 是使用 PostgreSQL 的基础。你可以通过在线教程、书籍或者免费的在线资源学习 SQL。
  3. PostgreSQL 文档
    • 阅读 PostgreSQL 官方文档 是学习 PostgreSQL 的重要途径。它提供了详细的信息和示例,帮助你了解 PostgreSQL 的各个方面。
  4. 使用 psql 命令行工具
    • PostgreSQL 提供了一个命令行工具叫做 psql,它是一个交互式的终端,允许你连接到 PostgreSQL 数据库并执行 SQL 查询。通过在终端中输入 psql,你可以进入 psql 界面,然后使用 \connect 命令连接到数据库。
  5. 创建数据库和表
    • 通过使用 SQL 语句,在 PostgreSQL 中创建数据库和表格。这将帮助你理解如何设计和管理数据库结构。
  6. 使用图形用户界面 (GUI) 工具
    • 除了命令行工具,你还可以使用图形用户界面工具来管理 PostgreSQL 数据库,例如 pgAdmin。这些工具提供了更直观的界面,使得数据库的管理更加容易。
  7. 参与社区
    • 加入 PostgreSQL 的社区,参与讨论、阅读邮件列表、参加会议等。这样你可以获取实际应用中的经验,了解最佳实践和解决问题的方法。
  8. 实践项目
    • 通过实际项目应用你的知识,这是学习任何技术最有效的方法。尝试设计和实现一个小型的数据库应用,这将帮助你巩固所学的知识。
  9. 持续学习
    • PostgreSQL 是一个强大而复杂的数据库系统,不断地学习并保持对最新版本的了解是非常重要的。参与培训、阅读博客、关注社区更新是不断提升你的技能的好途径。

总体而言,深入学习 PostgreSQL 需要时间和实践。通过不断地使用和探索,你将更熟悉这个数据库管理系统的各个方面。

使用用法

PostgreSQL 是一个功能强大且开源的关系型数据库管理系统 (RDBMS)。以下是一些基本的 PostgreSQL 用法和常见任务:

  1. 连接到 PostgreSQL 数据库

    • 命令行工具连接到 PostgreSQL 数据库。例如:

      psql -h localhost -U username -d dbname
      

    其中,localhost 是数据库服务器的地址,username 是你的数据库用户名,dbname 是你连接的数据库名称。

  2. 查看数据库列表等命令

    (1)使用 \l 用于查看已经存在的数据库,如下:
    
    mydb-# \l
                                                       List of databases
       Name    | Owner | Encoding | Locale Provider |  Collate   |   Ctype    | ICU Locale | ICU Rules | Access privileges
    -----------+-------+----------+-----------------+------------+------------+------------+-----------+-------------------
     mydb      | admin | UTF8     | libc            | en_US.utf8 | en_US.utf8 |   |           |
     postgres  | admin | UTF8     | libc            | en_US.utf8 | en_US.utf8 |   |           |
     template0 | admin | UTF8     | libc            | en_US.utf8 | en_US.utf8 |   |           | =c/admin         +
               |       |          |                 |            |            |   |           | admin=CTc/admin
     template1 | admin | UTF8     | libc            | en_US.utf8 | en_US.utf8 |   |           | =c/admin         +
               |       |          |                 |            |            |   |           | admin=CTc/admin
    (4 rows)
    
    (2)使用 \c + 数据库名 来进入数据库,如下:
    
    mydb-# \c mydb
    You are now connected to database "mydb" as user "admin".
    
    (3)查看某个数据库下所有数据表
    \dt 用于列出当前连接的数据库中的所有数据表
    系统自带的表,该命令查不到;自行创建的可以查阅;
    
    
  3. 创建数据库

    • 使用 SQL 语句创建数据库:

      
      CREATE DATABASE yourdatabase;
      
  4. 创建表

    • 使用 SQL 语句在数据库中创建表格:

      
      CREATE TABLE yourtable (
          column1 datatype1,
          column2 datatype2,
          ...
      );
      
      # 栗子
      CREATE TABLE company(
         id INT PRIMARY KEY     NOT NULL,
         name           TEXT    NOT NULL,
         age            INT     NOT NULL,
         address        CHAR(50),
         salary         REAL
      );
      
      
  5. 插入数据

    • 语句将数据插入表格中:

      
      INSERT INTO yourtable (column1, column2, ...)
      VALUES (value1, value2, ...);
      
      # 栗子; 文本类型需要用单引号
      INSERT INTO company  VALUES (1,'胡',31,'许昌市',1000);
      
  6. 查询数据

    • 语句从表格中检索数据:

      
      SELECT column1, column2, ...
      FROM yourtable
      WHERE condition;
      
      # 栗子
      select * from company;
       id | name | age |                        address                        | salary
      ----+------+-----+-------------------------------------------------------+--------
        1 | 胡   |  31 | 许昌市                                                |   1000
      
  7. 更新数据

    • 语句更新表格中的数据:

      
      UPDATE yourtable
      SET column1 = value1, column2 = value2, ...
      WHERE condition;
      
      # 栗子
      UPDATE company SET salary = 2000 WHERE id = 1;
      
      mydb=# select * from company;
       id | name | age |                        address                        | salary
      ----+------+-----+-------------------------------------------------------+--------
        1 | 胡   |  31 | 许昌市                                                |   2000
      (1 row)
      
  8. 删除数据

    • 语句删除表格中的数据:

      
      DELETE FROM yourtable
      WHERE condition;
      
  9. 索引

    • 为表格中的列创建索引,以提高检索性能。例如:

      
      CREATE INDEX index_name ON yourtable (column1, column2, ...);
      
      # 栗子
      CREATE INDEX index_name ON company (name);
      \di : 查看数据库的索引;
      \dv : 查看视图;
      
  10. 备份和还原

  • 命令备份数据库:

    
    pg_dump -h localhost -U username -d dbname > backup.sql
    
    
  • 命令还原数据库:

    
    psql -h localhost -U username -d dbname < backup.sql
    
  1. 数值类型

    PGSQL跟MySQL数据类型还是存在差异;创建表时候要重新整理;

    名字存储长度描述范围
    smallint2 字节小范围整数-32768 到 +32767
    integer4 字节常用的整数-2147483648 到 +2147483647
    bigint8 字节大范围整数-9223372036854775808 到 +9223372036854775807
    decimal可变长用户指定的精度,精确小数点前 131072 位;小数点后 16383 位
    numeric可变长用户指定的精度,精确小数点前 131072 位;小数点后 16383 位
    real4 字节可变精度,不精确6 位十进制数字精度
    double precision8 字节可变精度,不精确15 位十进制数字精度
    smallserial2 字节自增的小范围整数1 到 32767
    serial4 字节自增整数1 到 2147483647
    bigserial8 字节自增的大范围整数1 到 9223372036854775807
  2. 用户管理

    • 创建新用户:

      
      CREATE USER username WITH PASSWORD 'password';
      
    • 赋予用户权限:

      
      GRANT permission ON yourtable TO username;
      

这只是 PostgreSQL 的一些基础用法。要深入了解和学习更多高级特性,你可能需要阅读官方文档,参与社区,以及进行更复杂的实际项目。

对比MySQL

PostgreSQL 和 MySQL 是两种流行的开源关系型数据库管理系统(RDBMS),它们在一些方面有相似之处,但也有一些关键的区别。以下是它们的应用场景和一些主要区别:

PostgreSQL 的应用场景:
  1. 复杂查询和大数据量: PostgreSQL 在处理复杂查询和大数据量时表现出色,它支持更复杂的查询语句和具有较好的性能。
  2. GIS(地理信息系统)应用: PostgreSQL 具有强大的地理和空间数据支持,适用于需要处理地理信息的应用,如地理信息系统(GIS)。
  3. JSON 数据存储: PostgreSQL 支持原生的 JSON 数据类型和 JSONB 存储格式,使其更适用于需要处理 JSON 数据的场景。
  4. 扩展性: PostgreSQL 是一个高度可扩展的数据库系统,支持水平和垂直扩展,适用于需要处理不断增长数据量的应用。
  5. 并发控制和事务管理: PostgreSQL 提供强大的并发控制和事务管理功能,适用于需要高并发和数据完整性的应用场景。
MySQL 的应用场景:
  1. Web 应用程序: MySQL 在处理简单的读写操作时表现良好,适用于许多 Web 应用程序和小型网站。
  2. 事务处理: MySQL 在事务处理方面表现出色,适用于需要处理大量事务的应用,如电子商务系统。
  3. 简单查询和读写性能: MySQL 在处理较为简单的查询和读写性能方面通常较为出色,适用于轻负载的应用。
  4. 存储引擎选择: MySQL 支持多种存储引擎,可以根据具体需求选择合适的引擎,例如 InnoDB 用于事务处理,MyISAM 用于读密集型应用。
  5. 社区和生态系统: MySQL 拥有庞大的用户社区和丰富的生态系统,广泛用于各种规模的项目。
主要区别:
  1. 数据类型支持: PostgreSQL 提供更丰富的数据类型,包括数组、JSON、HSTORE 等,而 MySQL 对数据类型的支持相对较少。
  2. 存储过程和触发器: PostgreSQL 的存储过程和触发器支持更丰富,而 MySQL 的支持相对较简单。
  3. 并发度和事务处理: PostgreSQL 在并发度和事务处理方面通常更强大,适用于高并发和复杂事务场景。
  4. 性能优化: MySQL 在一些简单查询和读写性能方面可能更优,但 PostgreSQL 在复杂查询和大数据量方面通常表现更好。
  5. 许可协议: PostgreSQL 使用 PostgreSQL 许可证,而 MySQL 使用 GNU 通用公共许可证(GPL),在商业使用上有一些差异。

选择使用 PostgreSQL 还是 MySQL 取决于具体的项目需求、性能要求和数据特性。在某些情况下,两者都可以胜任,而在其他情况下,一个可能更适合特定的用例。

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

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

相关文章

【JS逆向三】逆向某某网站的sign参数,并模拟生成仅供学习

逆向日期&#xff1a;2024.02.06 使用工具&#xff1a;Node.js 类型&#xff1a;webpack 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 可使用AES进行解密处理&#xff08;直接解密即可&#xff09;&#xff1a;AES加解密工具 1、打开某某…

深入理解Go的垃圾回收机制

导语 如果你是一位Golang的开发者&#xff0c;你一定对于语言特性和详细结构有所了解。但是&#xff0c;你是否曾经停下来深入研究过Golang背后复杂而强大的垃圾回收&#xff08;GC&#xff09;机制&#xff1f;在这篇文章中&#xff0c;我们将具体深入探讨Golang垃圾回收机制…

fast.ai 深度学习笔记(三)

深度学习 2&#xff1a;第 1 部分第 6 课 原文&#xff1a;medium.com/hiromi_suenaga/deep-learning-2-part-1-lesson-6-de70d626976c 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 来自 fast.ai 课程的个人笔记。随着我继续复习课程以“真正”理解它&#xff0c;这…

HiveSQL——不使用union all的情况下进行列转行

参考文章&#xff1a; HiveSql一天一个小技巧&#xff1a;如何不使用union all 进行列转行_不 union all-CSDN博客文章浏览阅读881次&#xff0c;点赞5次&#xff0c;收藏10次。本文给出一种不使用传统UNION ALL方法进行 行转列的方法,其中方法一采用了concat_wsposexplode()方…

记录一次centos 使用selenium运行环境

这里写自定义目录标题 宝塔面板 安装 selenium安装google-chrome 宝塔面板 安装 selenium 安装google-chrome yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm 查看chrome版本 google-chrome --version 下载对应chrome版本的chro…

【Vue3】解决路由缓存问题(响应路由参数的变化)

官方文档解释&#xff1a; 解决问题的思路: 让组件实例不复用,强制销毁重建监听路由变化,变化之后执行数据更新操作 方案一&#xff1a;给router-view添加key 以当前路由完整路径为key 的值&#xff0c;给router-view组件绑定 <RouterView :key"$route.fullPath&qu…

部门人力分配 - 华为OD统一考试

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 部门在进行需求开发时需要进行人力安排。当前部门需要完成 N 个需求&#xff0c;需求用 requirements[i] 表示&#xff0c;requirements[i] 表示第 i 个需求的工作…

【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-Turbo编码原理

目录 Turbo码&#xff1a;无线通信中的革命性技术 引言 一、Turbo码的基本原理 1.1 卷积码基础&#xff1a; 1.2 Turbo码的构造&#xff1a; 1.2.1 分量编码器 1.2.2 随机交织器 1.2.3 穿刺和复接单元 1.3 编码器结构的重要性和影响 1.4 迭代解码&#xff1a; 1.4.1 …

HiveQL——不借助任何外表,产生连续数值

注&#xff1a;参考文章&#xff1a; HiveSql一天一个小技巧&#xff1a;如何不借助其他任何外表&#xff0c;产生连续数值_hive生成连续数字-CSDN博客文章浏览阅读1.3k次。0 需求描述输出结果如下所示&#xff1a;12345...1001 问题分析方法一&#xff1a;起始值&#xff08;…

C++模版(初阶)

&#x1f308;函数复用的两种不恰当方式 ☀️1.函数重载 以Swap函数为例&#xff0c;有多少种参数类型组合&#xff0c;就要重载多少个函数&#xff1a; void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left,…

[职场] 俄语业务员是做什么的 #职场发展#媒体

俄语业务员是做什么的 俄语业务员作为我国企业开展对俄贸易的重要人才&#xff0c;他们需要不断提高自身的专业技能和综合素质&#xff0c;以适应不断变化的市场环境和企业发展需求&#xff0c;为中俄两国经贸合作做出更大的贡献。 一、俄语业务员是什么 俄语业务员是指以俄语…

SpringBoot全局异常捕获处理实现方案

在Spring Boot中实现全局异常处理可以通过以下方式&#xff1a; 使用ControllerAdvice注释创建一个全局异常处理类&#xff0c;并使用ExceptionHandler注释来定义具体异常的处理方法。 import your.package.IllegalNumberException; import org.springframework.http.HttpSta…

【数据结构】链表OJ面试题5(题库+解析)

1.前言 前五题在这http://t.csdnimg.cn/UeggB 后三题在这http://t.csdnimg.cn/gbohQ 给定一个链表&#xff0c;判断链表中是否有环。http://t.csdnimg.cn/Rcdyc 给定一个链表&#xff0c;返回链表开始入环的第一个结点。 如果链表无环&#xff0c;则返回 NULLhttp://t.cs…

c++之说_11|自定义类型 enum(枚举)与enumclass (c11新枚举)

至于枚举 会用就行 至少目前我感觉没什么太多问题 enum 被称为无作用域枚举 &#xff0c; enumclass / enumstruct 被称为有作用域枚举 看到了吧 语法规则 和 struct 差不多 只不过枚举成员 只是一个标志 它本质是数值 从上到下 下面的数根据上面的数 加 1 也可以直接…

3D裸眼技术行业研究:2026年市场投资规模为10.78亿元

3D裸眼技术大多处于研发阶段&#xff0c;它的研发分两个方向&#xff0c;一是硬件设备的研发&#xff0c;二为显示内容的处理研发。第二种已经开始小范围的商业运用。大众消费者接触的不多。从技术上来看&#xff0c;3D裸眼可分为光屏障式(Barrier)、柱状透镜(Lenticular Lens)…

4核8g服务器能支持多少人访问?- 腾讯云

腾讯云轻量4核8G12M轻量应用服务器支持多少人同时在线&#xff1f;通用型-4核8G-180G-2000G&#xff0c;2000GB月流量&#xff0c;系统盘为180GB SSD盘&#xff0c;12M公网带宽&#xff0c;下载速度峰值为1536KB/s&#xff0c;即1.5M/秒&#xff0c;假设网站内页平均大小为60KB…

多源异构数据融合是为了解决什么问题?

多源异构数据融合为了解决在数据处理和分析过程中&#xff0c;由于数据来源的多样性和数据结构的差异性所带来的问题。具体来说&#xff0c;多源异构数据主要解决以下几个方面的问题&#xff1a; 数据来源多样性&#xff1a;在实际应用中&#xff0c;数据可能来自不同的来源&am…

Linux操作系统基础(八):Linux的vi/vim编辑器

文章目录 Linux的vi/vim编辑器 一、vi/vim编辑器介绍 二、打开文件 三、VIM编辑器的三种模式(重点) 四、命令模式相关命令 五、底行模式相关命令 Linux的vi/vim编辑器 一、vi/vim编辑器介绍 vi是visual interface的简称, 是Linux中最经典的文本编辑器 vi的核心设计思想…

全局唯一id生成器 各种实现记录

全局唯一id生成器 Redis 生成 前提知识~~ 时间戳 时间戳这个东西我们老是听到,却可能不是特别了解 首先,时间戳是从1970年1月1号0点0分开始的秒数,我查了蛮多资料,理论上来说,时间戳是没有上限的,而我们一般用位数来限制这里的上限,比如32位 我们来实际计算一下 32位的二进…

Leecode之分割链表

一.题目及剖析 https://leetcode.cn/problems/partition-list-lcci/description/ 二.思路引入 就是将其分成大小两个链表,以x为分界线进行分堆,最后再将两链表合并 三.代码引入 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct Lis…