pg数据库和mysql区别
区别一
PostgreSQL (通常称为 PG) 和 MySQL 都是广泛使用的关系型数据库管理系统 (RDBMS)。虽然它们都是用于存储和管理数据的关系数据库,但它们在一些方面有很大的区别,如下所述:
-
数据类型:PostgreSQL 支持更多的数据类型,如范围类型、网络地址类型、JSON 和 XML 数据类型等,而 MySQL 则不支持这些类型。
-
扩展性:PostgreSQL 具有很高的扩展性,可以使用自定义数据类型、函数和操作符来扩展其功能。而 MySQL 的扩展性较差,需要使用插件或存储过程来实现类似的功能。
-
ACID 兼容性:PostgreSQL 是完全 ACID 兼容的数据库,而 MySQL 只在特定的存储引擎 (如 InnoDB) 中支持 ACID。
-
多版本并发控制 (MVCC):PostgreSQL 使用 MVCC 来提供高级事务隔离级别,这意味着多个事务可以同时读取和写入数据库,而不会相互干扰。MySQL 也支持 MVCC,但其实现方式不同。
-
存储引擎:MySQL 支持多个存储引擎,包括 MyISAM 和 InnoDB 等。每种存储引擎都有自己的特点和优缺点。PostgreSQL 仅支持单个存储引擎。
-
SQL 标准兼容性:PostgreSQL 更加符合 SQL 标准,而 MySQL 在某些方面采用了自己的实现方式。
-
性能:在一些特定的使用场景下,MySQL 的性能可能更好。但在复杂的查询和高并发的情况下,PostgreSQL 可能表现更好。
总之,PG 和 MySQL 都是出色的关系型数据库管理系统,具有不同的特点和优劣。选择哪个取决于具体的需求和使用场景。
区别二
- 简介
PostgreSQL
PostgreSQL是一个开源的关系型数据库管理系统,以其高度的可扩展性、ACID兼容性(支持原子性、一致性、隔离性和持久性)以及丰富的功能集而闻名。它支持多种操作系统,包括Linux、Windows、Mac OS等,而且具有强大的社区支持。
MySQL
MySQL也是一个开源的关系型数据库管理系统,其特点在于速度快、易于使用以及广泛的社区支持。它最初是由瑞典的开发者创建的,后来被Sun Microsystems收购,现在隶属于Oracle。
- 适用场景
PostgreSQL
复杂查询和事务处理:PostgreSQL在处理复杂查询和大量事务时表现出色,适用于需要高度数据完整性和一致性的应用程序,如金融系统或企业级应用。
地理信息系统(GIS):PostGIS是一个用于地理空间对象的开源空间数据库扩展,使得PostgreSQL成为处理地理信息的首选。
大数据和数据仓库:PostgreSQL的分区表、并行查询和流复制等功能,使其成为处理大数据和数据仓库方面的强力工具。
MySQL
Web应用程序:由于其高性能和易用性,MySQL是许多Web应用程序的首选数据库,特别是在需要处理大量读操作的情况下。
小型企业应用:对于规模相对较小的企业应用程序,MySQL提供了一个稳定、经济高效的解决方案。
快速开发和迭代:MySQL具有较低的学习曲线,因此适用于快速开发和迭代的项目。 - 性能比较
PostgreSQL
复杂查询和事务:PostgreSQL在处理复杂查询和高并发事务时表现出色,这得益于其MVCC(多版本并发控制)实现。
扩展性:具有良好的扩展性,可以通过添加额外的节点来提高性能。
MySQL
读取性能:MySQL在处理大量读操作时表现优异,尤其是在使用索引时。
写入性能:MySQL的写入性能也很好,但在某些情况下可能会受到锁的影响。 - 数据模型和功能
PostgreSQL
复杂数据类型:支持诸如数组、JSON、XML等复杂数据类型,使其适用于处理半结构化数据。
触发器和存储过程:提供了强大的触发器和存储过程功能,使得可以在数据库层面实现复杂的业务逻辑。
MySQL
简单而高效的索引:MySQL提供了简单但高效的索引机制,可以很好地支持大量的读操作。
存储引擎:MySQL支持多种存储引擎,例如InnoDB、MyISAM等,可以根据应用程序的需求选择最合适的引擎。 - 安全性
PostgreSQL
高级安全性功能:PostgreSQL提供了诸如行级安全、列级安全等高级安全功能,可以帮助您更好地保护数据。
SSL支持:提供了SSL支持,确保数据在传输过程中的安全性。
MySQL
基本安全功能:MySQL也提供了基本的安全功能,但相对于PostgreSQL来说可能略显简单。
SSL支持:和PostgreSQL一样,MySQL也支持SSL。 - 总结和选择指南
在选择适合您项目的数据库时,需要考虑以下几点:
数据模型和功能需求:如果您的应用需要复杂的数据模型和强大的功能集,PostgreSQL可能是更好的选择。
性能需求:根据应用程序的读写比例和事务处理需求,选择合适的数据库以保证性能。
安全性需求:如果数据安全对您的应用至关重要,您可能会更倾向于选择PostgreSQL。
开发团队熟悉度:考虑开发团队的经验和熟悉度,以便选择一个他们能够高效利用的数据库。
函数区别
文章目录
一、格式区别
二、符号区别
三、自增区别
四、函数区别
五、数据类型转化(针对于PostgreSQL)
首先PostgreSQL有一个模式的概念。
一、格式区别
和Oracle一样,PostgreSQL也是严格区分大小写。
1
二、符号区别
和Oracle一样PostgreSQL中," " 双引号是区分库名,关键字等,而MySQL则是反单引号(tab键上方的键),pg查询时字符类型的字段必须使用单引号,而MySQL带有优化器(不是必须)。
1
三、自增区别
MySQL中使用auto_increment ,在需要的列指定自增,而pg中需要设置自增序列。
(1)使用SQL语句
①创建表时
CREATE table infisa_template_config(id serial );
②表已存在
<--设置序列从1开始,自增1-->
CREATE SEQUENCE user_id_seq START WITH 1
INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
<--设置序列-->
ALTER table user ALTER column id SET DEFAULT nextval('user_id_seq');
(2)使用可视化工具
连接navicat15(或者使用DBeaver)
点击序列
可以通过可视化界面新建序列
注:同步数据的话,推荐通过sql方式新建序列。
四、函数区别
(1)时间转化
①时间转字符串:MySQL: date_format(a.tag_create_date,‘%Y-%m-%d %H:%i:%s’)PostgreSQL: to_char(a.tag_create_date,‘yyyy-mm-dd HH:MM:SS’)②字符串转时间:MySQL: date_format(a.tag_create_date,‘%Y-%m-%d %H:%i:%s’)PostgreSQL: to_date(a.tag_create_date,‘yyyy-mm-dd HH:MM:SS’)
(2) IFNULL()函数
MySQL: IFNULL(a.idm,‘’)PostgreSQL: COALESCE(a.id,‘’)
(3) sysdate()函数
MySQL: SELECT sysdate()PostgreSQL: SELECT now()
(4) find_in_set()函数(允许在逗号分隔的字符串列表中查找指定字符串的位置)
MySQL: SELECT t.dept_id FROM sys_dept t WHERE find_in_set(‘100’, ancestors)PostgreSQL: SELECT t.dept_id FROM sys_dept t WHERE ‘100’ = ANY (string_to_array(ancestors, ‘,’))
(5)group_concat()函数
MySQL: select a.name,group_concat(distinct city)from user_city a group by a.name;PostgreSQL: select a.name,array_to_string(array_agg(distinct a.city),‘,’)from user_city a group by a.name;
(6)LIMIT
MySQL: select id,name from hospital.ods_user_basic limit 10,2;PostgreSQL: select id,name from hospital.ods_user_basic limit 10 offset 2;
(7)DISTINCT
MYSQL: select DISTINCT b.id from hospital.ods_user_basic as bPostgreSQL: select DISTINCT ON (b.id) b.* from hospital.ods_user_basic as b(注:pg中祛重+排序 ,使用distinct on (列1) order by 列1 )
(8)MyBatis-Plus整合MySQL、PostgreSQL,LIKE使用
MySQL:
<select id="checkReportPage" resultMap="reportResultMap">SELECT*FROMinfisa_medical_reportWHERE is_deleted=0 AND status = 1 AND name LIKE concat('%',#{handleTask.name},'%')
</select>
PostgreSQL:
<select id="checkReportPage" resultMap="reportResultMap">SELECT*FROMinfisa_medical_reportWHERE is_deleted=0 AND status = 1 AND name like concat('%',#{handleTask.name}::varchar,'%')
</select>
(注:pg必须指定模糊查询列的数据类型,否则会报错)
五、数据类型转化(针对于PostgreSQL)
MySQL、Oracle等都是默认对数据类型进行了隐式的转换,在其他数据库varchar等字符串类型和数字可以进行自动的隐式转换,但是PG确没有这么处理,官方文档中也有针对pg的数据转换方式。
解决办法:
①强转(在查询字段上指定数据类型)
a.a1 = b.b1::int8 或者 a.a1::varchar = b.b1
②隐式类型转化(创建类型转换)
–注:创建cast需要有pg_cast系统表的权限
–注:当创建类型转换使用自动隐式转换的话如果出现多个匹配的转换此时pg会因为不知道选择哪一个去处理类型转换而报错,
–如果出现多个隐式自动转换都匹配此时还是需要手动添加转换以达到效果,或者删除多余的类型转换
CREATE CAST (INTEGER AS VARCHAR) WITH INOUT AS IMPLICIT;
CREATE CAST (VARCHAR AS INTEGER) WITH INOUT AS IMPLICIT;
CREATE CAST (BIGINT AS VARCHAR) WITH INOUT AS IMPLICIT;
CREATE CAST (VARCHAR AS BIGINT) WITH INOUT AS IMPLICIT;
附:
③查询当前类型转化:
–这个查询是当前所有的CAST,具体字段的定义同样可以参阅PG数据库官方文档里的描述
select
(select typname from pg_type where oid = t.castsource) as “castsource”,
(select typname from pg_type where oid = t.casttarget) as “casttarget”,
castcontext,
castmethod
from pg_cast as t
④删除类型转化:
DROP CAST (varchar as bigint); DROP CAST (bigint as varchar);
相关文章:
pg数据库和mysql区别
区别一 PostgreSQL (通常称为 PG) 和 MySQL 都是广泛使用的关系型数据库管理系统 (RDBMS)。虽然它们都是用于存储和管理数据的关系数据库,但它们在一些方面有很大的区别,如下所述: 数据类型:PostgreSQL 支持更多的数据类型&#…...

Jetpack Compose 动画正式开始学习
1. 简单值动画 //将一个Color简单值 从一个值 变化到另一个 另一个简单值 就用 animateColorAsStateval backgroundColor by animateColorAsState(if (tabPage TabPage.Home) Purple100 else Green300) 动画其实就是 一个状态不停发生改变导致 组件不断重组产生的过程 2.…...
iOS 17.4报错: libopencore-amrnb.a[arm64]
iOS 17.4报错: libopencore-amrnb.a[arm64] iOS 17.4 模拟器运行报错解决方案 iOS 17.4 模拟器运行报错 Building for ‘iOS-simulator’, but linking in object file (/XXX/lib/libopencore-amrnb.a[arm64]2) built for ‘iOS’ 解决方案 在Podfile里添加如下设…...

鼓楼夜市管理wpf+sqlserver
鼓楼夜市管理系统wpfsqlserver 下载地址:鼓楼夜市管理系统wpfsqlserver 说明文档 运行前附加数据库.mdf(或sql生成数据库) 主要技术: 基于C#wpf架构和sql server数据库 功能模块: 登录注册 鼓楼夜市管理系统主界面所有店铺信…...

【五、接口自动化测试】5分钟掌握python + requests接口测试
你好啊!我是山茶,一个持续探索AI 测试的程序员! 在做接口测试时,在python中内置了HTTP库 urllib,可以用于发送http请求。基于urllib二次封装的三方库Requests,相较于urllib更佳简介易用。所以,…...
双边市场的基本理论
双边市场由两个不同类型的用户组成,通过一个中介机构或平台进行交易,其中一边用户的决策会影响另一边用户的结果。这种影响被称为间接网络外部性,它导致了平台在吸引和平衡两边用户时面临的挑战。 平台定价在双边市场中成为核心问题…...

R统计学2 - 数据分析入门问题21-40
往期R统计学文章: R统计学1 - 基础操作入门问题1-20 21. 如何对矩阵按行 (列) 作计算? 使用函数 apply() vec 1:20 # 转换为矩阵 mat matrix (vec , ncol4) # [,1] [,2] [,3] [,4] # [1,] 1 6 11 16 # [2,] 2 7 12 17 # [3,] …...

蓝桥杯2023年-买瓜(dfs,类型转换同样耗时)
题目描述 小蓝正在一个瓜摊上买瓜。瓜摊上共有 n 个瓜,每个瓜的重量为 Ai 。 小蓝刀功了得,他可以把任何瓜劈成完全等重的两份,不过每个瓜只能劈一刀。 小蓝希望买到的瓜的重量的和恰好为 m 。 请问小蓝至少要劈多少个瓜才能买到重量恰好…...

生成式人工智能服务安全基本要求实务解析
本文尝试明晰《基本要求》的出台背景与实践定位,梳理《基本要求》所涉的各类安全要求,以便为相关企业遵循执行《基本要求》提供抓手。 引言 自2022年初以来,我国陆续发布算法推荐、深度合成与生成式人工智能服务相关的规范文件,…...
nginx详解,配置http,https,负载均衡,反向代理,SMTP 代理步骤说明
Nginx 是一款高性能的开源 Web 服务器,同时也可以用作反向代理服务器、负载均衡器、HTTP 缓存、HTTPS 中继、以及作为邮件代理服务器等。以下是 Nginx 可以实现的一些常见用途: 静态内容服务: Nginx 可以用来提供静态内容,比如 HTML、CSS、JavaScript 文件等。 动态内容服务…...

ARTS Week 20
Algorithm 本周的算法题为 1222. 可以攻击国王的皇后 在一个 下标从 0 开始 的 8 x 8 棋盘上,可能有多个黑皇后和一个白国王。 给你一个二维整数数组 queens,其中 queens[i] [xQueeni, yQueeni] 表示第 i 个黑皇后在棋盘上的位置。还给你一个长度为 2 的…...
python如何读取文件
这里的文件是txt文件,office文件不支持。 假如有一个pi_digits的txt文件,里面的内容是“3.1415926” 如果要读取这个文件的内容,需要调取pathlib模块,并把路径告知python。同时python文件必须要和目标读取文件在一个文件夹里。 …...

InnoDB和MyISAM存储引擎
InnoDB mysql默认存储引擎 支持事务,行级锁(并发量大),外键约束,容量大,支持缓存,支撑主键自增, 全文检索,不存储表的总行数,需要sql逐行统计 MyISAM 不…...

DataGrip 2023:让数据库开发变得更简单、更高效 mac/win
JetBrains DataGrip 2023是一款功能强大的数据库IDE,专为数据库开发和管理而设计。通过DataGrip,您可以连接到各种关系型数据库管理系统(RDBMS),并使用其提供的一组工具来查询、管理、编辑和开发数据库。 DataGrip 2023软件获取 DataGrip 2…...
突破编程_C++_设计模式(命令模式)
1 命令模式的基本概念 C 命令模式是一种设计模式,它允许将请求封装为一个对象,从而可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。命令模式的主要目的是将请求封装为对象,从而可…...

LeetCode102题:二叉树的层序遍历(python3)
代码思路:使用队列先进先出的特性,queue[]不为空进入for循环,tmp存储每层的节点,将结果添加至res[]中。 python中使用collections中的双端队列deque(),其popleft()方法可达到O(1)时间复杂度。 class Solution:def lev…...
linux服务器保存git账号密码命令
1.保存git账号密码 git config --global credential.helper store 2.查看git账号密码 cd回车 ls -a cat .git-credentials 步骤: 先输入 git config --global credential.helper store 然后进入代码目录,git pull 会提示输入git账号、密码,因为我们提前输…...

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的田间杂草检测系统(深度学习模型+UI界面+Python代码+训练数据集)
摘要:开发用于田间杂草识别的系统对提高农业运营效率和提升作物产出至关重要。本篇文章详尽阐述了如何应用深度学习技术开发一个用于田间杂草识别的系统,并附上了完备的代码实现。该系统基于先进的YOLOv8算法,并对比了YOLOv7、YOLOv6、YOLOv5…...
java Lambda表达式如何支持静态方法引用
java Lambda表达式如何支持静态方法引用 在Java中,Lambda表达式支持静态方法引用,允许你直接使用静态方法作为Lambda表达式的实现。静态方法引用使用类名和方法名来引用静态方法。 下面是一个简单的示例,展示了如何在Lambda表达式中使用静态…...

SpringMVC04、Controller 及 RestFul
4、Controller 及 RestFul 4.1、控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现。控制器负责解析用户的请求并将其转换为一个模型。在Spring MVC中一个控制器类可以包含多个方法在Spring MVC中,对于Contr…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...