超实用,分享PostgreSQL和mysql的几点区别

前言

今天是元宵节,首先祝大伙元宵快乐!上一篇文章,给大家讲解了一下MySQL和PostgreSQL性能上的差别。这篇文章主要是记录一下日常应用中,两者常见的一些语法以及一些区别。

PostgreSQL的数据类型

数值类型

字符串类型

日期|时间类型

布尔类型

货币类型

几何类型

常见的区别

建表语句

这里主要是为了说明两者建表时候,自增逐渐的区别,MySQL的自增一般用auto_increment, PgSql直接用bigserial即可,如果是普通的整型的话,用serial就行,有的文章讲解了很多什么设置起始值,如果默认从1开始的话,按照我这里的就满足需求了,简单的东西简单处理就好,不用过分复杂化,因为效果是一样的。

  • MySQL
CREATE TABLE test_create_TABLE (id INT UNSIGNED NOT NULL AUTO_     INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,age INT
);
  • PgSQL
CREATE table test_create_table
(  "id" bigserial NOT NULL PRIMARY KEY,"name" VARCHAR NOT NULL,"age" int4
);备注:非long型的可以用serial;插入两条数据看一下结果
insert into test_create_table(name,age) values ('张三',20);
insert into test_create_table(name,age) values ('李四',30);SELECT * from test_create_table;

分页处理

  • PostgreSQL两种分页方法查询
    数据量较大的时候采用第一种方式
--第一种
SELECT * FROM test_create_table WHERE i_id>0 limit 100;--第二种 offset从0开始,offset 0表示从第一行开始获取。
SELECT * FROM test_create_table  limit 100 OFFSET 0;
  • MySQL的分页
SELECT * FROM test_table  limit 100, 10;

函数区别

  • 时间转字符串
 
--MySQL: 
date_format(a.day_time,'%Y-%m-%d %H:%i:%s')--PostgreSQL: 
to_char(a.day_time,'yyyy-mm-dd HH:MM:SS')
  • 字符串转时间
--MySQL: 
date_format(a.day_time,'%Y-%m-%d %H:%i:%s')--PostgreSQL: 
to_date(a.day_time,'yyyy-mm-dd HH:MM:SS')
  • IFNULL()函数
--MySQL: 
IFNULL(a.id,'')--PostgreSQL: 
COALESCE(a.id,'')
  • sysdate()函数
MySQL: SELECT sysdate()PostgreSQL: SELECT now()
  • find_in_set()函数
-- 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, ‘,’))
  • group_concat()函数
-- 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;
  • MyBatis-Plus整合MySQL、PostgreSQL,like使用
-- LIKE是一般用法,ILIKE匹配时则不区分字符串的大小写-- MySQL:<select id="queryDetail" resultMap="reportResultMap">SELECT*FROMfinancial_reportWHERE is_deleted=0 AND status = 1 AND name LIKE concat('%',#{handleTask.name},'%')</select>-- PostgreSQL:<select id="queryDetail" resultMap="reportResultMap">SELECT*FROMfinancial_reportWHERE is_deleted=0 AND status = 1 AND name like concat('%',#{handleTask.name}::varchar,'%')</select>温馨提醒:注意pgsql后面的处理,::varchar
  • 数据类型转化(针对于PgSQL)
-- 强转(在查询字段上指定数据类型)a.a1 = b.b1::int8 
-- 或者 
a.a1::varchar = b.b1 
-- 或者
CAST(a.a1 AS varchar)MySQL:CAST(a.a1 AS varchar)
  • 字段拼接
SELECT string_agg(address,',') FROM address GROUP BY grade;
--未去重的情况下:
string_agg|
----------|
黄河路,黄河路 |
黄河路,黄河路 |
SELECT string_agg(distinct address,',') FROM address GROUP BY grade;
string_agg|
----------|
黄河路     |
黄河路   |

如果想对拼接的值做排序,可以在拼接符号后面加order by

SELECT string_agg(name,',' order by name desc) FROM address GROUP BY grade;
--结果:
string_agg|
----------|
小B,小A     |
小D,小C     |
  • 获取当前时间

1、MySQL

CURDATE(), CURTIME(), NOW():可以获取客户端所在时区的当前时间;
UTC_DATE(), UTC_TIME(), UTC_TIMESTAMP():可以获得当前的UTC时间;
CURRENT_DATE(), CURRENT_TIME(), CURRENT_TIMESTAMP():就是CURDATE(), CURTIME(), NOW()的别名
mysql> SELECT CURDATE(), CURTIME(), NOW();
+------------+-----------+---------------------+
| CURDATE()  | CURTIME() | NOW()               |
+------------+-----------+---------------------+
| 2024-02-24 | 11:45:47  | 2024-02-24 11:45:47 |
+------------+-----------+---------------------+mysql> SELECT UTC_DATE(), UTC_TIME(), UTC_TIMESTAMP();
+------------+------------+---------------------+
| UTC_DATE() | UTC_TIME() | UTC_TIMESTAMP()     |
+------------+------------+---------------------+
| 2024-02-24 | 07:46:10   | 2024-02-24 07:46:10 |
+------------+------------+---------------------+mysql> SELECT CURRENT_DATE(), CURRENT_TIME(), CURRENT_TIMESTAMP();
+----------------+----------------+---------------------+
| CURRENT_DATE() | CURRENT_TIME() | CURRENT_TIMESTAMP() |
+----------------+----------------+---------------------+
| 2024-02-24     | 11:46:31       | 2024-02-24 11:46:31 |
+----------------+----------------+---------------------+

2、PgSql

说明:precision表示秒的精度,比如想精确到3位,直接把precision填充成3就可以

select now();
select CURRENT_DATE;
select CURRENT_TIME;
select CURRENT_TIMESTAMP;
select CURRENT_TIME(precision);
select CURRENT_TIMESTAMP(precision);
select LOCALTIME;
select LOCALTIMESTAMP;
select LOCALTIME(precision);
select LOCALTIMESTAMP(precision);--示例
SELECT CURRENT_TIME;
结果:14:39:53.662522-05SELECT CURRENT_DATE;
结果:2001-12-23SELECT CURRENT_TIMESTAMP;
结果:2001-12-23 14:39:53.662522-05SELECT CURRENT_TIMESTAMP(2);
结果:2001-12-23 14:39:53.66-05SELECT LOCALTIMESTAMP;
结果:2001-12-23 14:39:53.662522

写在最后

以上就是今天的干货分享,内容其实不难,一般遇到的时候查阅一下都有,这里就是记录一下,嗑瓜子的时候看到,刚好就有个概念。觉得有点收获的话,帮忙点赞 + 在看,分享不易,你的点赞是我坚持输出的动力,感激涕零,下期再见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/700846.shtml

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

相关文章

Linux--shell编程中分区表常用操作 全面且详细

文章中关于分区表常用操作目录&#xff1a; 一、概念 二、​​​​​​​创建分区表语法 ​​​​​​​三、创建一个表带多个分区 四、​​​​​​​加载数据到分区表中 五、加载数据到一个多分区的表中去 ​​​​​​​六、查看分区 七、​​​​​​​添加一个分区…

机器学习:逻辑回归原理

逻辑回归模型是一种广泛应用于分类问题的统计方法。尽管名为“回归”&#xff0c;但它实际上是一种分类算法&#xff0c;主要用于预测观察对象属于某个类别的概率。逻辑回归模型特别适用于二分类问题&#xff0c;但也可以通过一些策略扩展到多分类问题。 逻辑回归的应用与优化…

让C语言代码变抽象(二)

目录 前言&#xff1a; 代码&#xff1a; 前言&#xff1a; 在今天写代码的时候&#xff0c;我又想到一个更抽象的代码。 我在写注释的时候突然想想到条件编译的东西&#xff0c;好像也能用来注释东西。 代码&#xff1a; 我们在这直接上干货 我们知道在条件编译中有一个叫…

【前端素材】推荐优质后台管理系统Acara平台模板(附源码)

一、需求分析 后台管理系统在多个层次上提供了丰富的功能和细致的管理手段&#xff0c;帮助管理员轻松管理和控制系统的各个方面。其灵活性和可扩展性使得后台管理系统成为各种网站、应用程序和系统不可或缺的管理工具。 后台管理系统是一种用于管理和控制网站、应用程序或系…

Map集合特点、遍历方式、TreeMap排序及Collections和Arrays

目录 ​编辑 一、集合框架 二、 Map集合 特点 遍历方式 HashMap与Hashtable的区别 TreeMap Collections Arrays 一、集合框架 二、 Map集合 Map集合是一种键值对的集合&#xff0c;其中每个键对应一个值。在Java中&#xff0c;Map接口定义了一种将键映射到值的数据结…

嵌入式学习-qt-Day3

嵌入式学习-qt-Day3 一、思维导图 二、作业 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳…

「Java开发指南」MyEclipse如何支持Spring Scaffolding?(三)

在上文中&#xff08;点击这里回顾>>&#xff09;&#xff0c;主要为大家介绍了CRUD Scaffolding&#xff0c;本文将继续介绍应用程序的分层、代码助手等。 MyEclipse v2023.1.2离线版下载 3. 应用程序的分层 应用程序分层是应用程序开发领域中非常常见的体系结构方法…

C++之类作用域

目录 1、全局作用域 2、类作用域 2.1、设计模式之Pimpl 2.2、单例模式的自动释放 2.2.0、检测内存泄漏的工具valgrind 2.2.1、可以使用友元形式进行设计 2.2.2、内部类加静态数据成员形式 2.2.3、atexit方式进行 2.2.4、pthread_once形式 作用域可以分为类作用域、类名…

c++学习记录 STL基本概念

1、STL基本概念 STL&#xff08;Standard Template Library&#xff0c;标准模板库&#xff09;STL广义上分为&#xff1a;容器&#xff08;container&#xff09;算法&#xff08;algorithm&#xff09;迭代器&#xff08;iterator&#xff09;容器和算法之间通过迭代器进行无…

线程共享和非共享的资源及线程优缺点

注意&#xff1a;共享的内存地址空间中不包括栈&#xff1b;共享文件描述符表&#xff0c;表示&#xff0c;同一进程中线程可以操作同一文件。

猫头虎分享已解决Bug || TypeError: Cannot read property ‘props‘ of undefined (React)

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

c++的类型转换方法

一、静态类型转换&#xff08;static_cast&#xff09; 静态类型的转换主要用于基本类型之间的转换&#xff0c;比如int类型转换为double类型。但是static_cast也可以支持上下行的转换&#xff08;存在继承关系之间的转换&#xff09; 基本类型之间的转换举例 上下行转换的举…

金航标电子位于广西柳州鹿寨县天线生产基地于大年正月初九开工了!!!

金航标kinghelm&#xff08;www.kinghelm.com.cn&#xff09;总部位于中国深圳市&#xff0c;兼顾技术、成本、管理、效率和可持续发展。东莞塘厦实验室全电波暗室、网络分析仪、高低温测试柜等仪器设备齐全&#xff0c;可进行高低温、双85等测试&#xff0c;独立完成产品的检测…

数字化转型导师坚鹏:数据安全法解读与政府数字化转型

网络安全法、数据安全法、个人信息保护法解读与政府数字化转型 课程背景&#xff1a; 很多机构存在以下问题&#xff1a; 不清楚网络安全法、数据安全法、个人信息保护法立法背景&#xff1f; 不知道如何理解网络安全法、数据安全法、个人信息保护法政策&#xff1f; 不…

高级RAG:使用RAGAs + LlamaIndex进行RAG评估,包括原理、图和代码

原文地址&#xff1a;Using RAGAs LlamaIndex for RAG evaluation 2024 年 2 月 5 日 如果您已经为实际的业务系统开发了检索增强生成&#xff08;Retrieval Augmented Generation, RAG&#xff09;应用程序&#xff0c;那么您可能会关心它的有效性。换句话说&#xff0c;您…

Golin 弱口令/漏洞/扫描/等保/基线核查的快速安全检查小工具

下载地址&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/db6afba6de1f 主要功能 主机存活探测、漏洞扫描、子域名扫描、端口扫描、各类服务数据库爆破、poc扫描、xss扫描、webtitle探测、web指纹识别、web敏感信息泄露、web目录浏览、web文件下载、等保安全风险问题风险…

【前端素材】推荐优质后台管理系统Start Admin平台模板(附源码)

一、需求分析 后台管理系统是一种用于管理网站、应用程序或系统的工具&#xff0c;它通常作为一个独立的后台界面存在&#xff0c;供管理员或特定用户使用。下面详细分析后台管理系统的定义和功能&#xff1a; 1. 定义 后台管理系统是一个用于管理和控制网站、应用程序或系统…

nios ii开发随笔

错误一&#xff1a; d:/intelfpga/17.1/nios2eds/bin/gnu/h-x86_64-mingw32/bin/../lib/gcc/nios2-elf/5.3.0/../../../../../H-x86_64-mingw32/nios2-elf/bin/ld.exe: test.elf section .text will not fit in region ram_oc_xzs d:/intelfpga/17.1/nios2eds/bin/gnu/h-x86_6…

鸿蒙OS应用开发之显示图片组件6

前面学习了怎么样让图片合适的大小来显示出来,达到最佳的布局显示图片。现在来学习PixelMap图片显示。PixelMap图片是指图片解码后无压缩的位图,用于图片显示或图片处理。 由于PixelMap图片是一种无压缩的图片,比较适合图片处理,比如从网络上加载图片之后,再进行处理再显示…

STM32-启用蜂鸣器

目录 1 、电路构成及原理图 2、编写实现代码 main.c beep.c beep.h 3、代码讲解 4、 烧录到开发板调试、验证代码 5、检验效果 本人使用的是朗峰 STM32F103 系列开发板&#xff0c;此笔记基于这款开发板记录。 1 、电路构成及原理图 首先&#xff0c;通过朗峰 F1 开…