[每周一更]-(第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,一经查实,立即删除!

相关文章

【大厂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…

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 …

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

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…

【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]…

-打印流-

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

【DDD】学习笔记-理解领域模型

Eric Evans 的领域驱动设计是对软件设计领域的一次重新审视&#xff0c;是在面向对象语言大行其道时对数据建模的“拨乱反正”。Eric 强调了模型的重要性&#xff0c;例如他在书中总结了模型在领域驱动设计中的作用包括&#xff1a; 模型和设计的核心互相影响模型是团队所有成…

【Spring源码解读!底层原理高级进阶】【上】探寻Spring内部:BeanFactory和ApplicationContext实现原理揭秘✨

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《Spring 狂野之旅&#xff1a;底层原理高级进阶》 &#x1f680…

L1-096 谁管谁叫爹

一、题目 二、解题思路 依据题意判断即可。 三、代码 #include<iostream> using namespace std; #include<cmath> int main() {int n;cin>>n;while(n--){int n1,n2,s10,s20;cin>>n1>>n2;for(int i1;n1/i>0;i*10){s1(n1/i%10);}for(int i1;n…

k8s学习(RKE+k8s+rancher2.x)成长系列之简配版环境搭建(二)

三、简配版集群&#xff0c;适用于demo环境 1.集群架构设计 主机名角色配置(核数&#xff0c;内存&#xff0c;磁盘)MasterRKE,controlplane,etcd,worker,rancher-master2C 8G 40GSlaver1controlplane,worker,rancher-master2C 8G 40GSlaver2controlplane,worker,rancher-mas…

【第三十五节】idea项目的创建以及setting和Project Structure的设置

项目创建 Project Structure的设置 点击file ~ Project Structure 进入 进入view/Appearance 选中Toolbar 就会出现状态栏

# Memory Analyzer (MAT) 在实际开发中的使用

Memory Analyzer (MAT) 在实际开发中的使用 文章目录 Memory Analyzer (MAT) 在实际开发中的使用概述注意点基本使用检查概述获取直方图View the Dominator Tree到GC根的路径 使用示例制作堆dumpHeapDumpOnOutOfMemoryErrorJmap 生成堆Dump Mat打开堆快照HistogramThread Overv…

使用deepspeed继续训练LLAMA

目录 1. 数据训练配置 2. 模型载入 3. 优化器设置 4. DeepSpeed 设置 5. DeepSpeed 初始化 6. 模型训练 LLAMA 模型子结构&#xff1a; 1. 数据训练配置 利用 PyTorch 和 Transformers 库创建数据加载器&#xff0c;它支持单机或多机分布式训练环境下的数据加载与采样。涉…

Uniapp(uni-app)学习与快速上手教程

Uniapp&#xff08;uni-app&#xff09;学习与快速上手教程 1. 简介 Uniapp是一个跨平台的前端框架&#xff0c;允许您使用Vue.js语法开发小程序、H5、安卓和iOS应用。下面是快速上手的步骤。 2. 创建项目 2.1 可视化界面创建 1、打开 HBuilderX&#xff0c;这是一款专为uni…

mysql 中文编码问题

前言 最近在学springboot整合mybatisplus技术&#xff0c;用到mysql数据库&#xff0c;然后发现在windows下插入数据表会出现中文乱码现象 (例如 “我是谁” 在数据库中就成了 “???”) windows show variables like %char%;建表时, 设置默认charset为gbk create table u…

Springboot+vue的社区养老服务平台(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的社区养老服务平台&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的社区养老服务平台&#xff0c;采用M&#xff08;model&…

c语言游戏实战(5):走迷宫

前言&#xff1a; 制作一个迷宫游戏是一个有趣的编程挑战。首先&#xff0c;我们需要设计一个二维数组来表示迷宫的布局&#xff0c;其中每个元素代表迷宫中的一个格子。我们可以使用不同的值来表示空格、墙壁和起点/终点。接下来&#xff0c;我们需生成迷宫。在生成迷宫的过程…