[每周一更]-(第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-# \lList of databasesName    | 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/admintemplate1 | 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.mzph.cn/news/675902.shtml

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

相关文章

C#系列-简介(1)

一&#xff0c;C#简介 C#&#xff08;读作“C Sharp”&#xff09;是一种由微软公司开发的、运行于.NET Framework和.NET Core&#xff08;现在统称为.NET&#xff09;之上的高级编程语言。C#结合了C的强大功能和Java的易用性&#xff0c;旨在成为一种“优雅且安全”的语言&am…

【大厂AI课学习笔记】【1.5 AI技术领域】(7)图像分割

今天学习到了图像分割。 这是我学习笔记的脑图。 图像分割&#xff0c;Image Segmentation&#xff0c;就是将数字图像分割为若干个图像子区域&#xff08;像素的集合&#xff0c;也被称为超像素&#xff09;&#xff0c;改变图像的表达方式&#xff0c;以更容易理解和分析。 …

〔Part1〕YOLOv5:原理+源码分析(配置文件、网络模块、损失函数、跨网格匹配策略)

1. 前置知识 1.1 YOLO 算法的基本思想 首先通过特征提取网络对输入图像提取特征&#xff0c;得到一定大小的特征图&#xff0c;比如 13x13&#xff08;相当于416x416 图片大小&#xff09;&#xff0c;然后将输入图像分成 13x13 个 grid cells&#xff1a; YOLOv3/v4&#xf…

leetcode:17.电话号码的字母组合

题意和解题思路&#xff1a; 数字和字母的一一对应采用二维数组或者map映射。 这里我采用数组进行存储进而实现一一对应。由于我们无法知道for循环嵌套几层&#xff0c;因为这个是由于输入来确定的&#xff0c;所以我们可以用回溯算法中的递归来进行实现。 树形结构&#xff…

2024.2.8日总结(小程序开发5)

对上拉触底事件进行节流处理 在data中定义isloading节流阀 false表示当前没有进行任何数据请求true表示当前正在进行数据请求 在getColors()方法中修改isloading节流阀的值 在刚调用getColors时将节流阀设置true在网络请求的complete回调函数中&#xff0c;将节流阀重置为f…

C语言:月份缩写

题目描述 从一月份到十二月的英文全称依次是&#xff1a;“January”,“February”,“March”,“April”,“May”,“June”,“July”,“August”,“September”,“October”,“November”,“December” 对应的缩写依次是&#xff1a;“Jan.”,“Feb.”,“Mar.”,“Apr.”,“Ma…

git版本回退。git reset参数详解,特殊提交情形下的git push操作(CR等常见场景),git reflog和git log的详解。

切换分支可以使用 git checkout <> 或者git switch ... 创建分支可以使用 git checkout -b <. ...> 或 git branch <...> git checkout <...> git reset --hrad HEAD^ -- 今日份chatgpt git reset --hard HEAD^ 的含义如下&#xff1a; git reset …

Kubernetes命令备忘单

Kubernetes 版本&#xff1a; v1.28 https://v1-28.docs.kubernetes.io/zh-cn/docs/reference/kubectl/cheatsheet/ 这些指令适用于 Kubernetes v1.28。要检查版本&#xff0c;请使用 kubectl version 命令。 本页列举常用的 kubectl 命令和参数。 Kubectl 自动补全 BASH …

已解决org.springframework.aop.AopInvocationException异常的正确解决方法,亲测有效!!!

已解决org.springframework.aop.AopInvocationException异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 文章目录 问题分析 报错原因 解决思路 解决方法 总结 问题分析 org.springframework.aop.AopInvocationException通常发生在Spring的…

利用知识图谱构建医疗问答

1、准备数据集 数据集下载地址&#xff1a;https://github.com/wangle1218/QASystemOnMedicalKG/blob/master/data/medical.json 2、导入相关包 from py2neo import Graph,Node,Relationship # 在cmd中&#xff0c;输入neo4j.bat console并回车 import pandas as pd3、连接N…

C#系列-多线程(4)

在C#中&#xff0c;多线程编程主要涉及使用System.Threading命名空间下的类和接口来创建和管理线程。以下是一些C#多线程编程的基本用法和示例&#xff1a; 1. 使用Thread类创建线程 csharp代码 using System; using System.Threading; class Program { static void …

java大数据hadoop2.9.2 Flume安装操作

1、flume安装 &#xff08;1&#xff09;解压缩 tar -xzvf apache-flume-1.9.0-bin.tar.gz rm -rf apache-flume-1.9.0-bin.tar.gz mv ./apache-flume-1.9.0-bin/ /usr/local/flume &#xff08;2&#xff09;配置 cd /usr/local/flume/conf cp ./flume-env.sh.template…

14.Swift函数

Swift 函数 在 Swift 中&#xff0c;函数是一种用于执行特定任务或计算特定值的独立代码块。函数可以接受参数并返回一个值&#xff0c;也可以没有参数或返回值。以下是 Swift 中常用的函数操作&#xff1a; 1. 定义函数 可以使用 func 关键字定义函数&#xff0c;指定函数名…

【web前端开发】HTML及CSS简单页面布局练习

案例一 网页课程 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wi…

Android 识别车牌信息

打开我们心爱的Android Studio 导入需要的资源 gradle //开源车牌识别安卓SDK库implementation("com.github.HyperInspire:hyperlpr3-android-sdk:1.0.3")button.setOnClickListener(v -> {Log.d("Test", "");try (InputStream file getAs…

「递归算法」:子集(两种解法)

一、题目 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[],[1],[2]…

问题 | 开源软件的影响力

github&#xff1a;https://github.com/MichaelBeechan CSDN&#xff1a;https://blog.csdn.net/u011344545 开源软件的影响力 降低成本和提高效率&#xff1a;开源软件一般是免费提供的&#xff0c;企业和个人无需支付许可费用&#xff0c;从而降低了软件开发和使用的成本。此…

-打印流-

打印流分为字节打印流&#xff1a;PrintStream 字符打印流&#xff1a;PrintWriter特点1&#xff1a;都是只能输出 不能读取 字节打印流&#xff1a; 构造方法&#xff1a;主要用上面的两个构造 成员方法&#xff1a; //创建字节打印流对象&#xff1a;ctrlp注意参数 Prin…

掌握XGBoost:特征工程与数据预处理

掌握XGBoost&#xff1a;特征工程与数据预处理 导言 在应用XGBoost模型之前&#xff0c;特征工程和数据预处理是至关重要的步骤。良好的特征工程和数据预处理可以显著提高模型的性能。本教程将介绍在Python中使用XGBoost进行特征工程和数据预处理的中级教程&#xff0c;通过代…

3.手写JS中的new操作

&#xff08;1&#xff09;首先创建了一个新的空对象 &#xff08;2&#xff09;设置原型&#xff0c;将对象的原型设置为函数的 prototype 对象。 &#xff08;3&#xff09;让函数的 this 指向这个对象&#xff0c;执行构造函数的代码&#xff08;为这个新对象添加属性&…