MySQL与PostgreSQL 的一些SQL

MySQL

1、MYSQL输出重定向

将SQL内容输出到文件

nohup mysql -h127.0.0.1 -uroot -ppassword -Ne "sql语句;"  >  /home/mysql/data/xxxxx.txt   &

2、时间格式转换

时间转换,转10位时间戳

select UNIX_TIMESTAMP('2021-02-27 00:00:00')SELECT FROM_UNIXTIME(1614408000)

3、查看没有主键的表

查看哪些表没有主键,mysql的主键很重要,需要指定好主键

select TABLE_SCHEMA,TABLE_NAME from information_schema.TABLES a where not EXISTS (select TABLE_SCHEMA,TABLE_NAME from information_schema.TABLE_CONSTRAINTS b where a.TABLE_NAME=b.TABLE_NAME and b.CONSTRAINT_NAME='PRIMARY') and a.TABLE_SCHEMA not in ('information_schema','performance_schema','mysql','sys');

4、mysql的递归查询


先了解一个函数:find_in_set(string1,string2)  用来查询目标字符在后面字符中的位置,如果不存在,就返回0 mysql> select find_in_set('1','2,3');
+------------------------+
| find_in_set('1','2,3') |
+------------------------+
|                      0 |
+------------------------+
1 row in set (0.00 sec)mysql> select find_in_set('1','1,2,3');
+--------------------------+
| find_in_set('1','1,2,3') |
+--------------------------+
|                        1 |
+--------------------------+select id from (select * from test01 where pid is not null and is_del != 1) a, (select @pid:='06') pd where find_in_set(pid,@pid)>0 and @pid:= CONCAT(@pid,',',id)其中@pid 是一个变量字段。 其中id字段是 当前id, pid为对于id的父id

Greenplum/PostgreSQL

1、查看表空间大小

普通表:
select pg_size_pretty(pg_total_relation_size('public.tablename'));分区表:
SELECT tablename,pg_size_pretty(sum(pg_total_relation_size(partitiontablename))::bigint) total_size,pg_size_pretty(sum(pg_relation_size(partitiontablename))::bigint) table_size from pg_partitions  where schemaname = 'public' and  tablename='表名' group by tablename;

2、查看Greenplum表的分布键

SELECTaaa.nspname AS "模式名",aaa.relname AS "表名",aaa.table_comment AS "中文表明",ccc.attname AS "分布键"
FROM(SELECTaa.oid,obj_description (aa.oid) AS table_comment,aa.relname,bb.localoid,bb.attrnums,regexp_split_to_table(array_to_string(bb.attrnums, ','),',') att,dd.nspnameFROMpg_class aa --原数据信息 最重要的表!LEFT JOIN gp_distribution_policy bb ON bb.localoid = aa.oid --分布键表 LEFT JOIN pg_namespace dd ON dd.oid = aa.relnamespace --模式 LEFT JOIN pg_inherits hh ON aa.oid = hh.inhrelid --继承表  WHEREhh.inhrelid IS NULL  and lower(aa.relname) = lower('base_addpart_config')) aaa
LEFT JOIN pg_attribute ccc ON ccc.attrelid::text = aaa.oid::text
AND ccc.attnum::text = aaa.att::text
WHEREccc.attnum > 0 ;

华为的Libra/GaussDB 直接提供了一个函数

postgres=> select getdistributekey('test01');getdistributekey
------------------id
(1 row)

3、开窗函数分组排序
根据一个或多个字段分组,再根据一个或多个字段排序

select T.id,T.name from (select  select ROW_NUMBER( ) OVER (PARTITION BY id ORDER BY age DESC) rowNum,id,name from test01) T where T.rowNum = 1;

4、类似oracle的declare

多个SQL捆绑执行,当多个SQL无法分事务执行时,可以使用declare 将其绑定一起, 其中也可以写分支或者循环

如下:给test01 加字段, 先判断这个表的该字段是否存在,如果没有再添加

do $$ 
declarev_qty		int;
beginSELECT count(*) into v_qty FROM information_schema.COLUMNS WHERE TABLE_NAME = 'test01'  AND COLUMN_NAME = 'age2';if (v_qty = 0) thenalter table test01  add COLUMN age2 text;end if;
end;
$$ LANGUAGE plpgsql;

5、删除Greenplum表中重复信息

gp的每个节点会有一个gp_segment_id 是唯一的,每个节点的每一行会有一个ctid,是节点层面唯一的, 所以可以根据 这2个字段,确认一个集群中唯一的行,即使它们的数据是完全重复的

下面的PARTITION BY id,就是选择重复信息的粒度, 写id就是id重复就删,如果完全一样再删,就得将字段都写上

delete from test01 where (gp_segment_id, ctid) not in (select T.gp_segment_id,T.ctid from (select ROW_NUMBER () OVER (PARTITION BY id)AS rowId,gp_segment_id,ctid  from test01) T where T.rowId =1);

6、多行转换为1行

利用数组函数array_agg 进行组合

SELECT array_to_string(array_agg(table_name),',') from base_addpart_config;

7、字符串去重

postgres=# select regexp_replace('abcabcabc','(.)(\1)+','\1','g');regexp_replace 
----------------abc
(1 row)postgres=# select regexp_replace('北京北京北京上海','(.)(\1)+','\1','g');regexp_replace 
----------------北京上海
(1 row)

8、去除字符串中某个中间的值

postgres=# SELECT case when substr(name,0,3) = '桂B' then substr(name,0,3)||substr(name,4,length(name))  else name  end from test01;name        
-------------------桂BT795600:30:44:1d:10:b6桂B583D1桂BG5393
(4 rows)

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

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

相关文章

机器学习中的混淆矩阵

混淆矩阵是用于评估分类模型性能的表格,它展示了模型在不同类别上的预测情况。对于二分类问题,混淆矩阵的构成如下: 假设有两个类别:正例(Positive)和负例(Negative)。 真正例&…

小总结----长度

看了上一篇文章,已经一年没发了。CSDN也越来越封闭了,查点东西,也很不友好。 来个小总结吧:完成团队建设,招聘11人。完成26项开发,内部9项,科创10项。2023发明专利申请两项,软著申请…

【Leetcode合集】20. 有效的括号

20. 有效的括号 20. 有效的括号 代码仓库地址: https://github.com/slience-me/Leetcode 个人博客 :https://slienceme.xyz 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串…

一盏茶的时间,入门 Node.js

一、.什么是 Node.js? Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时,用于构建高性能、可伸缩的网络应用。 它采用事件驱动、非阻塞 I/O 模型,使其在处理并发请求时表现出色。 二、安装 Node.js 首先,让我们从 Node.…

【STM32】新建工程

学习来源:[2-2] 新建工程_哔哩哔哩_bilibili 目前STM32的开发主要有基于寄存器的开发方式、基于标准库也就是库函数的方式和基于HAL库的方式。本学习是基于库函数的方式。(各种资料去百度云下载) 1 建立工程文件夹 Keil中新建工程&#xf…

2824. 统计和小于目标的下标对数目 : 详解 “左找右“ “右找左“ 两种方式

题目描述 这是 LeetCode 上的 「2824. 统计和小于目标的下标对数目」 &#xff0c;难度为 「简单」。 Tag : 「排序」、「二分」、「双指针」 给你一个下标从 0 开始长度为 n 的整数数组 nums 和一个整数 target&#xff0c;请你返回满足 0 < i < j < n 且 nums[i] n…

ultralytics yolov8 实例分割 训练自有数据集

参考: https://docs.ultralytics.com/datasets/segment/coco/ http://www.bryh.cn/a/613333.html 1、数据下载与转换yolo格式 1)数据集下载: 参考:https://universe.roboflow.com/naumov-igor-segmentation/car-segmetarion 下载的是coco格式,需要转换 2)coco2yolo t…

C语言——指针(二)

&#x1f4dd;前言 上篇文章C语言——指针&#xff08;一&#xff09;初步讲解了&#xff1a; 1&#xff0c;指针与指针变量 2&#xff0c;指针变量的基本使用&#xff08;如何定义&#xff0c;初始化&#xff0c;引用&#xff09; 这篇文章我们进一步探讨&#xff0c;使用指针…

常见树种(贵州省):017柳树、喜树、珙桐、木棉、楝、枫杨、竹柏、百日青、翅荚香槐、皂荚、灯台树

摘要&#xff1a;本专栏树种介绍图片来源于PPBC中国植物图像库&#xff08;下附网址&#xff09;&#xff0c;本文整理仅做交流学习使用&#xff0c;同时便于查找&#xff0c;如有侵权请联系删除。 图片网址&#xff1a;PPBC中国植物图像库——最大的植物分类图片库 一、柳树 …

idea自动切换输入法Smart Input

idea搜索后下载 红色表示中文输入法 再ideavim场景下会自动切换成英文非常好用强烈推荐下载一个

vue3(一)-基础入门

一、导入vue.js 1.可以借助 script 标签直接通过 CDN 来使用 Vue <!-- <script src"https://unpkg.com/vue3/dist/vue.global.js"></script> -->2.也可以下载vue.global.js文件并在本地导入 <script src"./lib/vue.global.js">&…

Java中HashMap、Hashtable和ConcurrentHashMap的区别

介绍&#xff1a; 在Java编程中&#xff0c;HashMap、Hashtable和ConcurrentHashMap都是用于存储键值对的常见数据结构。尽管它们在表面上看起来很相似&#xff0c;但实际上它们之间存在一些重要的区别。本文将深入探讨HashMap、Hashtable和ConcurrentHashMap的区别&#xff0c…

代码随想录算法训练营第四十四天|57. 爬楼梯、322.零钱兑换、279. 完全平方数

KamaCoder 57. 爬楼梯 题目链接&#xff1a;题目页面 (kamacoder.com) 这道题使用完全背包来实现&#xff0c;我们首先考虑的是总的楼梯数&#xff0c;因此dp数组大小为n 1 &#xff0c;其意义是&#xff0c;在n阶时有多少种方法爬到楼顶&#xff0c;因此&#xff0c;当前n状…

电源控制系统架构(PCSA)之系统分区电压域

目录 4.1 电压域 4.1.1 系统逻辑 4.1.2 Always-On逻辑 4.1.3 处理器Clusters 4.1.4 图形处理器 4.1.5 其他功能 4.1.6 SoC分区示例 本章描述基于Arm组件的SoC划分为电压域和电源域。 所描述的选择并不详尽&#xff0c;只是可能性的一个子集。目的是描述基于Arm组件的SoC…

LV.12 D19 ADC实验 学习笔记

一、ADC简介 1.1 ADC ADC(Analog to Digital Converter)即模数转换器&#xff0c;指一个能将模拟信号转化为数字信号的电子元件 1.2 ADC主要参数 分辨率 ADC的分辨率一般以输出二进制数的位数来表示&#xff0c;当最大输入电压一定时&#xff0c;位数越高&#xff0c…

LeetCode90. Subsets II

文章目录 一、题目二、题解 一、题目 Given an integer array nums that may contain duplicates, return all possible subsets (the power set). The solution set must not contain duplicate subsets. Return the solution in any order. Example 1: Input: nums [1,2…

逸学java【初级菜鸟篇】10.I/O(输入/输出)

hi&#xff0c;我是逸尘&#xff0c;一起学java吧 目标&#xff08;任务驱动&#xff09; 1.请重点的掌握I/O的。 场景&#xff1a;最近你在企业也想搞一个短视频又想搞一个存储的云盘&#xff0c;你一听回想到自己对于这些存储的基础还不是很清楚&#xff0c;于是回家开始了…

java中关键字 volatile 和 synchronized 有什么区别

java中 volatile 和 synchronized 有什么区别&#xff1f;

uniapp H5、小程序、APP端自定义不同运行环境(开发、测试、生产)、自定义条件编译平台、以及动态修改manifest.json值讲解

文章目录 前言一、自定义条件编译平台是什么&#xff1f;二、新增自定义条件编译平台三、动态设置服务器请求地址四、动态修改manifest.json1.根目录新增文件 modifyManifest.js2.vue.config.js引入modifyManifest.js 总结示例代码 前言 企业项目开发流程上一般都要配置多个运…