数据库
AllenLeungX
这个作者很懒,什么都没留下…
展开
-
MySQL 查看表注释或字段注释
MySQL 查看表注释或字段注释转载 2022-12-30 11:57:18 · 5573 阅读 · 0 评论 -
MySQL 查询表字段
【代码】MySQL 查询表字段。转载 2022-11-30 11:10:53 · 8981 阅读 · 0 评论 -
MySQL 二级索引(非聚簇索引、辅助索引)
二级索引:叶子节点中存储主键值,每次查找数据时,根据索引找到叶子节点中的主键值,根据主键值再到聚簇索引中得到完整的一行记录。问题:1.相比于叶子节点中存储行指针,二级索引存储主键值会占用更多的空间,那为什么要这样设计呢? InnoDB在移动行时,无需维护二级索引,因为叶子节点中存储的是主键值,而不是指针。2.那么InnoDB有了聚簇索引,为什么还要有二级索引呢? 聚簇索引的叶子节点存储了一行完整的数据,而二级索引只存储了主键值,相比于聚簇索引,占用的空间要少。当我们需要为表建立多个索原创 2021-11-17 08:29:13 · 494 阅读 · 0 评论 -
MySQL的一级索引和二级索引
导读本文参考自简书的某位作者,并做了增删。我一般称为“一级索引”和“二级索引”,这样好记一点。正确的称谓是:集聚索引和非聚集索引。顾名思义,叶子节点存放主索引和数据的树,称为集聚索引树;叶子节点存放辅助索引和主索引的树,称为非集聚索引树。备注:一和二体现了主次和先后关系,聚焦和非聚焦体现不出来,我建议称为:“一级索引”和“二级索引”。1、一级索引索引和数据存储在一起,都存储在同一个B+tree中的叶子节点。一般主键索引都是一级索引。2、二级索引二级索引树的叶子节点存储的是主键而不原创 2021-11-17 08:25:25 · 4823 阅读 · 1 评论 -
LeetCode-SQL-1112.每位学生的最高成绩
题目:编写一个SQL查询,查询每位学生获得的最高成绩和对应的科目,若科目成绩并列,取course_id最小的一门。查询结果按student_id增序排序。解决办法:创建enrollments表(弄得简单直观点,course_id改为course表示课程名称,student_id改为使用name表示学生姓名)-- ------------------------------ Table structure for enrollments-- ---------------------原创 2021-09-19 11:07:09 · 756 阅读 · 0 评论 -
ShardingSphere3.x 分库分表实战
本文基于ShardingSphere的3.x版本,数据库基于MySQL8。源码地址(亲测可启动+可验证分库分表功能,不行的话,评论区提问,说出具体失败情况):ShardingSphere3.x Demo: ShardingSphere实战DEMO,基于版本3.x(比较旧)创建两个数据库ds0、ds1(我是在自己电脑搭了虚机,在上面安装了两个MySQL8的数据实例,端口分别是23306、23307,读者可按自己需要配置),和对应两个数据表user_0、user_1ds0 ├── use原创 2021-09-12 15:58:16 · 357 阅读 · 0 评论 -
ShardingSphere Hint强制路由
ShardingSphere分库分表及读写分离的路由规则,比如通过id分表,都是在配置文件中配置的全局生效。假设这样一种场景,我们需要在代码中根据某些业务逻辑来具体指定哪些数据该去哪些库表中,这时候我们前面的全局路由规则就不能满足要求了。这就引出了Hint的概念。什么是Hint?在一些应用场景中,分片条件并不存在于SQL,而存在于外部业务逻辑。因此需要提供一种通过在外部 业务代码中指定路由配置的一种方式,在ShardingSphere中叫做Hint。如果使用Hint指定了强制分片 路由,那么SQL将原创 2021-09-12 10:40:29 · 1550 阅读 · 0 评论 -
docker修改mysql映射端口
人懒不想重新创建容器导库、百度了下修改下mysql映射端口操作步骤:1、停止docker#systemctl stop docker2、修改mysql容器hostconfig.json文件、如下图#vi hostconfig.json 、3306/tcp是容器端口, HostPort是宿主机端口.3、启动docker服务(systemctl start docker)4、启动容器、测试mysql连接。...原创 2021-09-09 10:50:21 · 1833 阅读 · 0 评论 -
PostgreSQL统计表占用空间
PostgreSQL提供了以下几个方法查看表(索引)所占用空间大小:1. 自己查找pg_classsde=# select relpages*8/1024||'M' as 占用空间,reltuples 记录数 from pg_class where relname='gis_poi'; 占用空间 | 记录数----------+-------- 6M | 26199(1 行记录)sde=# select relpages*8/1024||'M' as 占用空间,reltup原创 2021-07-30 14:37:15 · 3820 阅读 · 0 评论 -
PostgreSQL 按指定顺序排序
因为PostgreSql没有order by field 所以按照指定的顺序排序就没有这么简单了,可以使用case when then进行排序示例一SELECT stage, pln_statusFROM projectORDER BY CASE WHEN pln_status = '规划' THEN 1 WHEN pln_status = '初选' THEN 2 WHEN pln_status = '查勘' THEN 3 WHEN pln_status = '评审' THEN 4原创 2021-07-12 11:32:40 · 11040 阅读 · 0 评论 -
PostgreSQL查看版本信息
1.查看客户端版本psql --version2.查看服务器端版本2.1 查看详细信息select version();12.2 查看版本信息show server_version;12.2 查看数字版本信息包括小版号SHOW server_version_num;1或SELECT current_setting('server_version_num');13.注意事项SELECT current_setting(‘server_ver.原创 2021-05-30 20:27:01 · 1200 阅读 · 0 评论 -
PostgreSQL 查表、所属schema、字段、字段类型、注释等信息
之前从网上也搜索了一些关于postgreSQL的系统表含义以及如何查表相关信息,但是都没有一个完整的内容,所以自己将找到的一些内容作了下整合,大家可以根据自己需要再对sql进行调整。--1.查询对象字段、注释和字段类型select t.schemaname ,c.relname object_name ,d.description object_comment --,c.reltuples count --,c.relkind object_type --r = ...原创 2021-02-23 21:30:56 · 6887 阅读 · 3 评论 -
postgresql 获取schema,table 信息
postgresql 获取schema,table 信息获取schema 信息SELECT pn.oid AS schema_oid, iss.catalog_name, iss.schema_owner, iss.schema_nameFROM information_schema.schemata iss INNER JOIN pg_namespace pn ON pn.nspname = iss.schema_name;获取某个schema下的表 SELE.原创 2021-02-21 10:43:31 · 3068 阅读 · 1 评论 -
UNION 和 UNION ALL 区别
union 将两个表连接后删除其重复的项。baiunion all 将两个表连接都不删除其重复的项。补充资料:数据库中,UNION和UNION ALL都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。如:select * from users1 union select * from u原创 2020-11-02 09:50:00 · 1606 阅读 · 0 评论 -
PostgreSQL 配置文件详解
如果要查看配置文件中的一些选项,则可以登录psql后 使用 命令来查看;show 选项名;show all; #查看所有数据库参数的值主要选项:选项 默认值 说明 是否优化 原因max_connections 100 允许客户端的最大并发连接数目 否 因为在测试的过程中,100个连接已经足够fsync on 强制把数据同步更新到磁盘 是 因为系统的IO压力很大,为了更好的测试其他配置的影响,把改参数改为offs...原创 2020-11-01 16:22:28 · 2197 阅读 · 2 评论 -
PostgreSQL 配置优化
PostgreSQL配置优化PostgreSQL配置优化 硬件和系统配置 测试工具 配置文件 主要选项 测试数据 总结 硬件和系统配置操作系统 Ubuntu13.04 系统位数 64 CPU Intel(R) Core(TM)2 Duo CPU 内存 4G 硬盘 Seagate ST2000DM001-1CH164 测试工具 PostgreSQL-9.1.11 测试工具工具名称 pg原创 2020-11-01 16:20:40 · 3085 阅读 · 12 评论 -
PostgreSQL 重复数据处理
我们在使用postgresql数据库的时候,如果一张数据表在未做任何约束的情况下,很可能会出现几条完全一样的数据,即重复数据。如下图所示:那么如果我们要删除其中的2条该怎么办呢?第一种我们可以清空表的内容,再使用INSERT INTO语句再将内容插入到表中。此方法可行,但对于专业人士来讲,并不推荐第二种我们可以结合pg数据库中的ctid(和物理存储有关,指的是一条记录位于哪个数据块的哪个位移上面)来进行删除。这里我们使用依然先使用SELECT语句进行查询。这样我们就可以使用唯一标识.原创 2020-11-01 08:29:17 · 5016 阅读 · 14 评论 -
PostgreSQL 性能优化
提出问题PostgreSQL数据库如何进行简单的性能调优???解决问题前言PostgreSQL的配置参数作为性能调优的一部分,起着重要的位置。有时候一个简单的配置参数就会觉得应用的性能。因此有必要简单了解下其相关的配置参数。查询Linux服务器配置在进行性能调优之前,需要清楚知道服务器的配置信息,比如说 CPU,内存,服务器版本等信息。查询系统版本信息root@ubuntu160:~# lsb_release -aNo LSB modules are availab.原创 2020-11-01 00:29:55 · 1594 阅读 · 0 评论 -
PostgreSQL 函数 for循环使用
Postgresql 函数例子本业务是实现将之前已经使用的数据和现在的数据关联起来,需要写个sql函数初始化数据,数据库使用的是postgresql具体代码create or replace function insert_user_roles()returns void as $$declare user RECORD; role RECORD;begin for user in (select id from user where is_delete = false) l转载 2020-10-31 11:10:15 · 30313 阅读 · 5 评论 -
PostgreSQL 切割、组合字段函数
Postgresql里面内置了很多的实用函数,下面介绍下组合和切割函数环境:PostgreSQL 9.1.2 CENTOS 5.7 final一.组合函数1.concata.语法介绍concat(str "any" [, str "any" [, ...]])Concatenate all but first arguments with separators.The first parameter is used as a separator. NULL a...原创 2020-10-26 08:38:03 · 3487 阅读 · 3 评论 -
operator does not exist: uuid = character varying 解决办法
是pg的问题operator does not exist: uuid = character varyingHint: No operator matches the given name and argument type(s). You might need to add explicit type casts.Please test if setting database option stringtype=unspecified works.意思就是说在 jdbc url..原创 2020-10-14 14:55:43 · 3819 阅读 · 0 评论 -
PostgreSQL 表 行数统计
在很多情况下我们需要知道一个表的记录数有多少。如果你发现你有这样的需求,你还应该问问这样的统计的精确度到底又多高。如果你在做会计报表,你需要非常的精确。如果你做一个网页的记数器,可能有一些误差也是允许的。 使用count(*) 传统的计算一个表的行数的方法是使用count(*),但是count(*)非常的慢,尤其是对于一个大表而言。webstat=# select count(*) from rawlog; count --------- 2058704 ...原创 2020-10-13 10:39:46 · 10301 阅读 · 0 评论 -
PostgreSQL 查询所有表的记录数
方法一:(查询出来只是一个估计数值,与实际数据量不太一致)select relname as 表名, reltuples as 记录数 from pg_class where relkind = 'r' and relnamespace = (select oid from pg_namespace where nspname='指定schema') order by 记录数 desc;实例:select relname as 表名, reltuples as 记录数 from pg原创 2020-10-13 10:41:34 · 15345 阅读 · 4 评论 -
PostgreSQL 测试 left join 条件带有null值时的效果
3233原创 2020-10-11 14:40:30 · 2305 阅读 · 0 评论 -
PostgreSQL COALESCE函数
COALESCE函数是返回参数中的第一个非null的值,它要求参数中至少有一个是非null的,如果参数都是null会报错。select COALESCE(null,null); //报错select COALESCE(null,null,now(),''); //结果会得到当前的时间select COALESCE(null,null,'',now()); //结果会得到''//可以和其他函数配合来实现一些复杂点的功能:查询学生姓名,如果学生名字为null或''则显示“姓名为空”select原创 2020-09-21 21:06:06 · 2101 阅读 · 0 评论 -
PostgreSQL 查看函数稳定性
示例:select proname, provolatile from pg_proc where proname in ('now', 'clock_timestamp');原创 2020-09-16 11:01:11 · 366 阅读 · 0 评论 -
PostgreSQL JOIN 多表查询
JOIN用于多张表的关联查询,如SELECT子句(SELECT A.a,A.b,B.a,B.d)中既有表A的字段,同时还有B表的字段,此时使用单独使用FROM A或FROM B已经解决不了问题了,使用JOIN来关联表A和表B即可解决问题,即FROM A,B或A JOIN B,这种方式得到的结果其实是表A与表B的笛卡尔积,即如果A是M1行,N1列的表,B是M2行,N2列的表,A JOIN B的结果是(M1*M2)行,(N1+N2)列的结果集。JOIN可以是等值连接(A JOIN B ON (A.a=B.c))原创 2020-09-12 14:45:03 · 4360 阅读 · 0 评论 -
PostgreSQL 创建自增序列
创建自增长序列(可以用SQL创建也可以用工具Navicat)SQL创建序列(Sequences)(注意序列名用小写,不然会提示不存在)CREATE SEQUENCE "public"."process_time_seq" INCREMENT 1MINVALUE 1MAXVALUE 999999999START 1CACHE 1; SELECT setval('"public"."process_time_seq"', 1, false); ALTER SEQUENCE "pub原创 2020-09-07 18:34:40 · 7627 阅读 · 0 评论 -
PostgreSQL 外键引用查询
根据一个表名,查询所有外键引用它的表,以及那些外键的列名key_column_usage(系统列信息表),pg_constraint(系统所有约束表)SELECT x.table_name, x.column_name FROM information_schema.key_column_usage x INNER JOIN (SELECT t.relname, a.conname原创 2020-09-07 15:15:46 · 2214 阅读 · 0 评论 -
PostgreSQL 多表关联删除
用PostgreSQL数据库删除某个表数据 student,需要关联多个表(如classroom)作为条件,以下语句走不通:delete s.* from student s,classroom c where s.cid = c.id and s.sid = 1delete from student s,classroom c where s.cid = c.id and s.sid = 1上面两种写法操作后提示报错,下面是PostgreSQL数据库对多表关联删除的正确用法,多张表之间用u原创 2020-09-06 15:21:44 · 7533 阅读 · 9 评论 -
PostgreSQL 级联删除
删除和更新时对应的操作是一样的1 Restrict禁止删除被引用的行 (不能将约束检查推迟到事物的晚些时候)2No Action如果存在任何引用行,则抛出错误,如果不声明任何行为则No Action就是缺省行为 (允许约束检查推迟到事物的晚些时候)3Cascade在删除一个被引用的行时,引用他的行被自动删除4Set Null (外键上才有)删除被引用行时,引用他的字段设置为NULL5SetDefault (外键上才有)删除被引用行时,引用他的字段被设置为缺省值...原创 2020-08-30 17:54:25 · 3494 阅读 · 0 评论 -
PostgreSQL 修改密码
1. 修改PostgreSQL数据库默认用户postgres的密码PostgreSQL数据库创建一个postgres用户作为数据库的管理员,密码随机,所以需要修改密码,方式如下:步骤一:登录PostgreSQLsudo-u postgres psql步骤二:修改登录PostgreSQL密码ALTER USER postgres WITH PASSWORD'postgres';密码postgres要用引号引起来 命令最后有分号步骤三:退出PostgreSQL客户端\q...原创 2020-08-30 09:51:48 · 23390 阅读 · 2 评论 -
SQL Server 与 PostgreSQL 数据类型映射关系
Microsoft SQL ServerPostgreSQLBIGINT64-bit integerBIGINTBINARY(n)Fixed length byte stringBYTEABIT1, 0 or NULLBOOLEANCHAR(n)Fixed length char string, 1 <= n <= 8000CHAR(n)VARCHAR(n)Variable length char string, 1 <= n...原创 2020-08-23 12:12:15 · 1340 阅读 · 0 评论 -
PostgreSQL 连表UPDATE
PostgreSQL 手册上的update语法如下:[ WITH [ RECURSIVE ] with_query [, ...] ]UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ] SET { column_name = { expression | DEFAULT } | ( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) |原创 2020-08-17 17:31:57 · 3246 阅读 · 0 评论 -
PostgreSQL 查询表字段信息SQL脚本
查询脚本:SELECT c.relname 表名称, A.attname AS 字段名称, col_description(A.attrelid,A.attnum) AS 注释, format_type ( A.atttypid, A.atttypmod ) AS 类型, CASE WHEN A.attnotnull='f' THEN '否' ELSE '是' END AS 是否必填, a.attnum 序号FROM pg_class AS c, pg_attribute AS原创 2020-08-05 11:20:43 · 2332 阅读 · 0 评论 -
PostgreSQL 删除重复行,只保留一行
delete from table_name as ta where ta.唯一键 <> ( select max(tb.唯一键) from table_name as tb where ta.判断重复的列 = tb.判断重复的列);例子delete from wr_yr_sync_log as wylog where wylog.log_id <> (select max(wylog2.log_id) from wr_yr_sync_log as wylog2 wher.原创 2020-07-29 15:23:19 · 3378 阅读 · 0 评论 -
shell脚本操作postgresql
以前抽数据都是从其他数据库抽取到postgres数据库的所以选择kettle。新项目需求里需要把客户给的csv文件数据抽到postgresql,其中还需要对相关字段进行清洗。先声明下kettle也可以实现,但是总感觉依赖第三方软件抽数据不如直接操作数据库,除非逼不得已,尽量不用(纯属个人见解)。于是就研究linux直接连接数据库处理这部分需求。代码如下#!/bin/bash# *****************************************************# ** lin转载 2020-07-15 14:20:00 · 6598 阅读 · 1 评论 -
pgsql使用copy命令导入CSV文件到数据库,方便实现远程定时导入
csv文件:表效果:linux命令 postgre客户端执行语句psql “host=主机名 hostaddr=主机IP地址 port=端口 dbname=数据库 user=用户名 password=密码” -c "\copy test_1 from ‘/data/test.csv’ delimiter ‘|’ csv "例:psql “host=192.168.0.1 hostaddr=192.168.0.1 port=5432 dbname=test user=root passw原创 2020-07-13 15:26:17 · 9370 阅读 · 9 评论 -
PostgreSQL内部缺失group_concat函数解决方案
1.在mySql数据库迁移到PostgreSQL的时候会遇到很多问题,PostgreSQL内部缺失group_concat函数就是其中一个解决方案如下:2.直接模拟一个类似mysql 内部group_concat的函数-- 字符串拼接聚合函数CREATE AGGREGATE group_concat(anyelement)( sfunc = array_append, -- 每行的操作函数,将本行append到数组里 stype = anyarray, -- 聚集后返回数组类型原创 2020-07-01 16:02:05 · 2031 阅读 · 0 评论 -
postgresql 数据库迁移
因为现有的pg环境负载过高,需要把现在的数据库迁移到新的环境中如果数据量不大可以使用方法一方法一:pgsql迁移数据库到不同网段新的库,新的数据库环境主从高可用环境已经配置完成。首先备份老的库(-U指数据库用户名,-d指数据库名)$ pg_dump -U postgres -d npas > npas20200610.sql压缩$ tar -zcf npas20200610.tar.gz npas20200610.sql把文件传到新的环境中,解压缩$ tar .原创 2020-06-10 10:33:10 · 3272 阅读 · 0 评论