iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >盘点一下PostgreSQL和MySQL的区别点
  • 645
分享到

盘点一下PostgreSQL和MySQL的区别点

postgresqlmysql数据库 2023-08-19 16:08:10 645人浏览 薄情痞子
摘要

上期有说,数据环境切换,由Mysql换成postgresql。 那么为了大家以后少踩坑,简单总结了下我曾踩过的坑和需要注意的点。 首先Postgresql有一个模式的概念。 一、格式区别: 和oracle一样,PostgreSQL也是严格区

上期有说,数据环境切换,由Mysql换成postgresql
那么为了大家以后少踩坑,简单总结了下我曾踩过的坑和需要注意的点。
首先Postgresql有一个模式的概念。
一、格式区别:

oracle一样,PostgreSQL也是严格区分大小写。

二、符号区别:

和Oracle一样PostgreSQL中," " 双引号是区分库名,关键字等,而mysql则是反单引号(tab键上方的键),pg查询时字符类型的字段必须使用单引号,而MySQL带有优化器(不是必须)。

三、自增区别:

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 b

PostgreSQL: 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       *       FROM       infisa_medical_report       WHERE is_deleted=0 AND status = 1 AND name LIKE concat('%',#{handleTask.name},'%')    select>

PostgreSQL:

<select id="checkReportPage" resultMap="reportResultMap">       SELECT       *       FROM       infisa_medical_report       WHERE 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);

来源地址:https://blog.csdn.net/weixin_47162914/article/details/126662477

您可能感兴趣的文档:

--结束END--

本文标题: 盘点一下PostgreSQL和MySQL的区别点

本文链接: https://www.lsjlt.com/news/375657.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 盘点一下PostgreSQL和MySQL的区别点
    上期有说,数据环境切换,由MySQL换成PostgreSQL。 那么为了大家以后少踩坑,简单总结了下我曾踩过的坑和需要注意的点。 首先PostgreSQL有一个模式的概念。 一、格式区别: 和Oracle一样,PostgreSQL也是严格区...
    99+
    2023-08-19
    postgresql mysql 数据库
  • MySQL 和 PostgreSQL 的区别
    在这篇文章中,我们将了解 MySQL 和 PostgreSQL 之间的区别。MySQL它是一个关系数据库管理系统.它是Oracle公司开发的产品。它支持Windows、Mac OS X、Linux、 BSD、UNIX、z/OS、Symbia...
    99+
    2023-10-22
  • Mysql主键和唯一键的区别点总结
    什么是主键? 主键是表中唯一标识该表中每个元组(行)的列。主键对表实施完整性约束。表中只允许使用一个主键。主键不接受任何重复值和空值。表中的主键值很少更改,因此在选择主键是需要小心,要选择很少发生更改的地方...
    99+
    2024-04-02
  • mysql和postgresql的语法区别
    下面是MySQL和PostgreSQL之间常见的语法区别的一些详细比较: 数据类型差异: MySQL中的TEXT数据类型最大存储容量为64KB,而PostgreSQL中的TEXT数据类型没有此限制。M...
    99+
    2023-10-03
    mysql postgresql 数据库
  • Postgresql和mysql的区别探究
    PostgreSQL和MySQL是两个流行的关系型数据库管理系统(RDBMS),具有各自的特点和优点。虽然两种数据库都可以处理大量数据,但在不同情况下,会有一些区别。下面将着重介绍PostgreSQL和MySQL的区别,并附带案例说明。  ...
    99+
    2023-09-01
    数据库 postgresql mysql
  • postgresql和mysql的区别有哪些
    这篇文章主要为大家展示了“postgresql和mysql的区别有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“postgresql和mysql的区别有哪些...
    99+
    2024-04-02
  • postgresql和mysql的特点是什么
    PostgreSQL和MySQL是两种开源关系型数据库管理系统(RDBMS)。它们有以下特点: PostgreSQL的特点: 完全...
    99+
    2024-04-09
    postgresql mysql
  • mysql和postgresql有什么区别
    MySQL和PostgreSQL是两种流行的开源关系型数据库管理系统,它们之间有一些重要的区别: 数据类型支持:PostgreS...
    99+
    2024-04-09
    mysql postgresql
  • postgresql和mysql有什么区别
    PostgreSQL和MySQL是两种不同的关系型数据库管理系统。下面是它们之间的一些区别:1. 数据类型支持:PostgreSQL...
    99+
    2023-08-25
    mysql
  • postgresql和mysql有哪些区别
    这篇“postgresql和mysql有哪些区别”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这...
    99+
    2024-04-02
  • php中点和逗号的区别
    php 中点运算符 (.) 和逗号运算符 (,) 的区别如下:点运算符 (.) 用于访问对象属性和方法。逗号运算符 (,) 用于:分割多个表达式的结果。创建单一表达式的组。传递多个参数。...
    99+
    2024-04-27
  • axios和ajax的区别点总结
    本文操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。 axios和ajax的区别是什么? axios和ajax的区别及优缺点: ajax: 1...
    99+
    2024-04-02
  • ajax和fetch的区别点总结
    本教程操作环境:windows7系统、jquery1.10.2版本、Dell G3电脑。 ajax和fetch的区别 (1)、ajax是利用XMLHttpRequest对象来请求数据...
    99+
    2024-04-02
  • 全面盘点一下vue3中的ref、reactive
    知道大家使用 Vue3 的时候有没有这样的疑惑,“ref、rective 都能创建一个响应式对象,我该如何选择?”,“为什么响应式对象解构之后就失去了响应式?应该如何处理?” 今天咱们就来全面盘点一下 ref、reactive,相信看完你一...
    99+
    2023-05-14
    前端 Vue.js
  • java sleep()和wait()的区别点总结
    1、区别说明 wait()是Object的方法,sleep()是Thread的方法。 wait()必须采用同步方法,不需要sleep()方法。 线程在同步方法中执行sleep()方法...
    99+
    2024-04-02
  • vue.prototype和vue.use的区别和注意点小结
    目录vue.prototype和vue.use的区别和注意点总结补充:vue.prototype和vue.use的区别Vue.use和Vue.prototype区别vue.proto...
    99+
    2023-05-14
    Vue.use和Vue.prototype区别 vue.use用法 vue.prototype用法
  • mysql与postgresql的区别有哪些
    MySQL和PostgreSQL是两种流行的开源关系型数据库管理系统,它们有以下几点区别: 许可证:MySQL使用GPL(通用公...
    99+
    2024-04-17
    postgresql mysql
  • 解读Nginx和Apache的特点与区别
    目录一、Nginx特点二、Apache特点 总结一、Nginx特点 1、轻量级,采用C进行编写,同样的web服务,会占用更少的内存及资源。 2、抗并发,nginx以epol...
    99+
    2023-03-23
    Nginx和Apache Nginx和Apache的特点 Nginx和Apache区别
  • 浅谈一下forward和redirect的区别
    目录1.forward 和redirectforward又叫转发,表示转发,当请求来到时,可以将请求转发到其他的指定服务,用户端不知晓。redirect又叫重定向,表示转发,当请求发...
    99+
    2023-03-24
    forward redirect forward和redirect的区别
  • Linux的优缺点以及和windows的区别
    这篇文章主要介绍“Linux的优缺点以及和windows的区别”,在日常操作中,相信很多人在Linux的优缺点以及和windows的区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux的优缺点以及和w...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作