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

在这里插入图片描述

入门学习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.mfbz.cn/a/380859.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【动态规划】【C++算法】LeetCoce996正方形数组的数目

作者推荐 【动态规划】【前缀和】【C算法】LCP 57. 打地鼠 本文涉及知识点 动态规划汇总 LeetCoce996正方形数组的数目 给定一个非负整数数组 A&#xff0c;如果该数组每对相邻元素之和是一个完全平方数&#xff0c;则称这一数组为正方形数组。 返回 A 的正方形排列的数目…

Electron基本介绍

Electron基本介绍 Electron 官方网站&#xff1a;https://www.electronjs.org/zh/ Electron安装方法&#xff1a;npm install electron -g 全局安装 Electron简介&#xff1a;Electron提供了丰富的本地&#xff08;操作系统&#xff09;API&#xff0c;使你能够使用纯JavaScr…

图解 V8 执行 JS 的过程

本文来分享 V8 引擎执行 JavaScript 的过程 1. JS 代码执行过程 在说V8的执行JavaScript代码的机制之前&#xff0c;我们先来看看编译型和解释型语言的区别。 编译型语言和解释型语言 我们知道&#xff0c;机器是不能直接理解代码的。所以&#xff0c;在执行程序之前&#xf…

3.1 Verilog 连续赋值

关键词&#xff1a;assign&#xff0c; 全加器 连续赋值语句是 Verilog 数据流建模的基本语句&#xff0c;用于对 wire 型变量进行赋值。&#xff1a; 格式如下 assign LHS_target RHS_expression &#xff1b; LHS&#xff08;left hand side&#xff09; 指赋值操作…

系统架构24 - 软件架构设计(3)

软件架构风格&#xff08;上&#xff09; 概述架构风格数据流架构风格批处理风格管道-过滤风格 调用/返回架构风格主程序/子程序风格面向对象风格层次结构风格客户端/服务器风格 以数据为中心的架构风格仓库风格黑板风格 虚拟机架构风格解释器风格规则系统风格 独立构件架构风格…

Android矩阵Matrix动画缩放Bitmap移动手指触点到ImageView中心位置,Kotlin

Android矩阵Matrix动画缩放Bitmap移动手指触点到ImageView中心位置&#xff0c;Kotlin 借鉴 Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心&#xff0c;Kotlin&#xff08;2&#xff09;-CSDN博客 在此基础上实现手指在屏幕上点击后&…

leetcode 3027. 人员站位的方案数 II【离散化前缀和+枚举】

原题链接&#xff1a;3027. 人员站位的方案数 II 题目描述&#xff1a; 给你一个 n x 2 的二维数组 points &#xff0c;它表示二维平面上的一些点坐标&#xff0c;其中 points[i] [xi, yi] 。 我们定义 x 轴的正方向为 右 &#xff08;x 轴递增的方向&#xff09;&#x…

Dynamo批量处理多个Revit文件?

Hello大家好&#xff01;我是九哥~ 最近很多小伙伴都在咨询Dynamo如何批量处理多个Revit文件&#xff0c;之前写过一篇《Dynamo批量修改多文件项目基点参数》&#xff0c;利用的是后台打开Revit的方式&#xff0c;可以实现一些批量操作的功能。 但是这个方法&#xff0c;对于一…

牛客网SQL进阶114:更新记录

官网链接&#xff1a; 更新记录&#xff08;二&#xff09;_牛客题霸_牛客网现有一张试卷作答记录表exam_record&#xff0c;其中包含多年来的用户作答试卷记录&#xff0c;结构如下表。题目来自【牛客题霸】https://www.nowcoder.com/practice/0c2e81c6b62e4a0f848fa7693291d…

【Effective Objective - C 2.0】——读书笔记(一)

文章目录 前言一、了解Objective-C语言的起源OC的起源运行期组件和内存管理 二、在类的头文件中尽量少引入其他头文件尽量延后引入头文件或者单独开辟一个文件向前声明 三、多用字面量语法&#xff0c;少用与之等价的方法四、多用类型常量&#xff0c;少用#define预处理指令五、…

如何在 Mac 上恢复永久删除的文件:有效方法

您是否错误地从 Mac 中删除了某个文件&#xff0c;并且确信它已经永远消失了&#xff1f;好吧&#xff0c;你可能错了。即使您认为已永久删除计算机上的数据&#xff0c;仍有可能将其恢复。 在本文中&#xff0c;您将了解如何在 Mac 上恢复永久删除的文件&#xff0c;并了解增…

【开源】JAVA+Vue+SpringBoot实现班级考勤管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统基础支持模块2.2 班级学生教师支持模块2.3 考勤签到管理2.4 学生请假管理 三、系统设计3.1 功能设计3.1.1 系统基础支持模块3.1.2 班级学生教师档案模块3.1.3 考勤签到管理模块3.1.4 学生请假管理模块 3.2 数据库设…

ThinkPad X201 经典小黑 折腾玩

前段时间&#xff0c;在折腾ThinkPad T430时&#xff0c;偶然看到了ThinkPad X200&#xff0c;一个12.1英寸的高端便携小本。 想当年&#xff0c;但那是总裁级别才能用的&#xff0c;应该是接近2万元&#xff0c;我们是一直用DELL的。 没想到的是&#xff0c;在海鲜市场上&am…

【Makefile语法 01】程序编译与执行

目录 一、编译原理概述 二、编译过程分析 三、编译动静态库 四、执行过程分析 一、编译原理概述 make&#xff1a; 一个GCC工具程序&#xff0c;它会读 makefile 脚本来确定程序中的哪个部分需要编译和连接&#xff0c;然后发布必要的命令。它读出的脚本&#xff08;叫做 …

Java异常的处理 try-catch-finally

目录 什么是异常通过if-else处理异常用if-else堵漏洞的缺点 try-catch例第一种处理第二种处理第三种处理第四种处理 try-catch-finally例 System.exit(0);//终止当前的虚拟机执行 什么是异常 Exception&#xff1a;在程序的运行过程中&#xff0c;发生了不正常的现象&#xff0…

【Larry】英语学习笔记语法篇——换一种方式理解词性

目录 一、换一种方式理解词性 1、名词、形容词、副词&#xff0c;这就是一切 2、词性之间的修饰关系 3、介词其实很简单 形容词属性的介词短语 副词属性的介词短语 ①修饰动词 ②修饰形容词 ③修饰其他副词 一、换一种方式理解词性 1、名词、形容词、副词&#xff0c…

Mysql Day03

多表设计 一对多 在多的一方添加外键约束&#xff0c;关联另外一方主键 一对一 任意一方添加外键约束&#xff0c;关联另外一方主键 多对多 建立第三张中间表&#xff0c;中间表至少包含两个外键&#xff0c;分别关联两方主键 idstu_idcourse_id 1 11 2 12313421524 案…

【Linux】构建模块

&#x1f525;博客主页&#xff1a;PannLZ &#x1f38b;系列专栏&#xff1a;《Linux系统之路》 &#x1f94a;不要让自己再留有遗憾&#xff0c;加油吧&#xff01; 文章目录 构建第一个模块1模块的makefile2内核树内构建3内核树外构建 构建第一个模块 可以在两个地方构建模…

C++——二叉树

引入 map和set特性需要先铺垫二叉搜索树&#xff0c;而二叉搜索树也是一种树形结构 二叉搜索树的特性了解&#xff0c;有助于更好的理解map和set的特性 1.二叉搜索树的概念及优缺点 1.1二叉搜索树的概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或…

网络编程-Socket套接字

目录 1.网络编程 1.1定义与图解 1.2基本概念 &#xff08;1&#xff09;发送端和接收端 &#xff08;2&#xff09;请求和响应 &#xff08;3&#xff09;客户端和服务端 2.Socket套接字 2.1定义 2.2分类 &#xff08;1&#xff09;流套接字 &#xff08;2&#xff…