
数据库
初夏0811
爱生活,爱写作,不爱加班
展开
-
Mongodb命令大全
id 字段是每个文档的唯一标识符,确保每个文档在集合中是唯一的。这个字段在每个文档中都是必须的,并且在插入文档时会自动生成。如果没有显式指定 _id,MongoDB 会为其生成一个唯一的 ObjectId。localField:指定当前集合(orders源集合)中用于连接的字段名称。foreignField:指定目标集合(from 集合)中用于连接的字段名称,示例中和orders关联的是_id字段。from:指定要连接的目标集合的名称。示例中我们是从 products 集合中查询关联数据。原创 2024-10-26 19:21:58 · 7469 阅读 · 0 评论 -
【已解决】关于MyBatis的collection集合中只能取到一条数据的问题
在涉及多表查询的时候,使用collection元素来映射集合属性时,出现了只能查询到一条数据的情况,但用sql语句在数据库中查询会有多条记录。原创 2024-08-03 09:00:48 · 25998 阅读 · 0 评论 -
H2 Database:轻量级、快速且可靠的内存数据库解决方案
在当今数据驱动的时代,数据库管理系统(DBMS)在各类应用中扮演着至关重要的角色。从大型企业级应用到轻量级桌面软件,选择合适的数据库是确保应用性能和可靠性的关键。H2 Database 作为一个轻量级、嵌入式数据库解决方案,以其高效性能和易用性受到了开发者的青睐。本文将深入探讨 H2 Database 的特性、优势以及适用场景,帮助读者更好地了解这一强大工具。H2 Database 是一个用 Java 编写的开源关系型数据库管理系统。它既可以作为嵌入式数据库运行在应用程序中,也可以作为独立的服务器进程运行。原创 2024-06-16 11:04:18 · 28463 阅读 · 0 评论 -
springboot+PageHelper在多数据源的情况下,数据库方言乱套怎么解决?
在最近的一个项目中,需要聚合多方数据,就涉及到配置多数据源(各方使用的不是一种类型的数据库),开始以为正常配置就好了,结果问题了,就是数据的分页错了,不是报oracle数据库使用了limit,就是mysql数据库使用了rownum,还有比如mysql 的分页写法是limit 10,10 而pgsql的写法是limit 10 offset 10 数据库方言乱了。还好pagehelper插件支持配置文件参数配置,在查询的过程中能够自动识别数据源的类型,从而生成相应的查询sql,而不报错。原创 2024-04-20 16:22:17 · 35555 阅读 · 1 评论 -
数据库查询如何查询父级id下无限子级的元素列表
【代码】数据库查询如何查询父级id下无限子级的元素列表。原创 2024-04-20 10:40:51 · 34918 阅读 · 0 评论 -
pgsql中in查询如何保障查询后返回的顺序
查询后返回的结果很难是按照id 为3,1,2的顺序返回的,那么有些场景是需要保证顺序不变返回的,如何实现呢?原创 2024-04-18 21:30:28 · 35262 阅读 · 0 评论 -
PostgreSQL常用命令汇总
20、创建表:create table tbname ([字段名1] [类型1], [字段名2] [类型2], …1 连接数据库:psql -U postgres (psql -U username -d databse_name -h host -W)-U 指定用户 -d 指定数据库 -h 要链接的主机 -W 提示输入密码。24、更改用户密码: \password [username]27、创建用户名称:createuser username;23、SQL命名帮助(用*显示全部命令):\h [名称]原创 2024-03-06 21:40:12 · 44259 阅读 · 1 评论 -
mysql中的联合索引为什么要遵循最佳左前缀法则?
联合索引(也叫组合索引、复合索引、多列索引),是一种特殊的索引类型,它由多个字段组成,而不是只针对单一字段进行索引。这种索引结构是一颗B+树,其特点是在对索引排序时,会对所有索引列进行排序,而非只是单列排序。因此,联合索引能够更有效地支持多条件的查询,尤其是当查询中使用了多个字段的条件时。联合索引的创建方法跟单个索引的创建方法一样,不同之处仅在于有多个索引列。原创 2024-01-20 15:02:54 · 50647 阅读 · 1 评论 -
explain工具优化mysql需要达到什么级别?
explain是什么?使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。这个JOIN非常快,因为对于表A中扫描的每一行,表B中只能有一行满足JOIN条件。那是因为B.id是独一无二的。explain的使用方法非常的简单,explain+sql就可以了。下面我们来简单的执行一条。如果我们的type是all或者index级别均是需要优化的。原创 2024-01-20 12:07:29 · 49165 阅读 · 0 评论 -
PostgreSQL如何自定义函数并且调用
');执行结果:Hello, world!!BEGIN raise notice '% 除以 %' , js1 , js2;IF js2 = 0 THEN raise EXCEPTION '不能除0';END IF;EXCEPTION -- 捕获异常 WHEN OTHERS THEN RETURN 0;END;-- 0。原创 2023-06-17 21:46:17 · 32015 阅读 · 2 评论 -
PostgreSQL数据库sql查询如何获取汉字拼音首字母
在实际开发过程中,经常会使用模糊查询,根据某个关键字模糊搜索,一般是 name like ‘%123%’ 这样查,但是如果某个关键字用户不记得呢,只知道首字母,又如何模糊查询呢?例如,查询 name like ‘%我是中国人%’,如何根据首字母 wszgr 模糊搜索出来呢?因为系统自带的 like 查询已经无法满足这种场景的模糊搜索,那么这里需要用到自定义函数,将数据库中的某个字段的中文汉字转化为首字母,再根据字母去模糊搜索。原创 2023-06-14 22:55:42 · 28974 阅读 · 6 评论 -
es解决只能默认查询10000条数据方案
在使用es进行数据查询时,由于es官方默认限制了索引一次性最多只能查询10000条数据,这其实是es的一种保护机制,那么很多时候我们需要突破这种限制,例如需要进入数据同步的场景,则需要查询全部的数据,如何处理呢?通过上面方案,即可实现突破Es官方限制的只能查询前10000条的限制。_all表示所有索引,针对单个索引的话修改成索引名称即可。原创 2022-09-04 11:20:45 · 34840 阅读 · 3 评论 -
如何修改elasticsearch中表的settings设置
如何修改elasticsearch中表的settings设置。http://xxx/table_name/_settings原创 2022-09-04 11:08:56 · 26702 阅读 · 0 评论 -
drop、truncate和delete的区别
删除表中的内容,不删除表结构,释放空间;删除内容,不删除表结构,但不释放空间,只能作用于tabledrop语句将表所占用的空间全释放掉,可以作用于table和viewtruncate删除数据后重新写数据会从1开始,而delete删除数据后只会从删除前的最后一行续写;内存空间上,truncate省空间因为,truncate是直接从1开始,即全部清空开始,而delete需要先得到当前行数,从而进行续写;所以truncate删除速度比delete快;delete属于DML语句,而truncate和drop都属于D原创 2022-06-12 10:47:23 · 29410 阅读 · 1 评论 -
postgresql数据库中根据某个字段判断存在则更新(update)操作,不存在则插入(insert)
在实际项目开发过程中,经常会遇到某种业务,根据某个字段判断数据是否存在,若不存在则进行insert操作,若存在则进行根据这个字段update操作:<insert id="insertProject" parameterType="com.lenovo.mcmp.rm.etl.model.param.resourceConfig.CreateResourceConfigParam">INSERT INTO project(project_code,project_name,start_time原创 2022-05-30 23:22:50 · 32206 阅读 · 0 评论 -
一文读懂数据库三范式
1.什么是数据库范式?范式是一种数据库表设计的依据,按照这三种范式设计出来的表不会出现数据冗余。2.为什么要懂数据库的三范式?数据库的设计范式是要满足数据库设计的规范,满足这些规范就可以保证数据库是简洁、结构清晰的,同时在对数据库操作的时候,比如插入、删除、更新等不会出现操作异常。不然就会在不知不觉中产生大量的冗余数据。3.什么是数据库三范式?第一范式:任何一张表都应该有自己的主键,并且每一个字段的原子性都是不可再分的;第二范式:在第一范式的基础上,要求所有的非主键字段完全依赖主键,不能原创 2022-04-29 23:25:29 · 28256 阅读 · 0 评论 -
postgresql随机查询一条数据
随机获取一条数据,使用random()函数,也可以加筛选条件:select id from table where status = 0 order by random() limit 1 ;原创 2022-04-23 11:18:34 · 31059 阅读 · 0 评论 -
clickhouse 本地表和分布式表的区别
1.clickhouse的表分为两种:分布式表一个逻辑上的表, 可以理解为数据库中的视图, 一般查询都查询分布式表. 分布式表引擎会将我们的查询请求路由本地表进行查询, 然后进行汇总最终返回给用户。本地表:实际存储数据的表。2.不写分布式表的原因1.分布式表接收到数据后会将数据拆分成多个parts, 并转发数据到其它服务器, 会引起服务器间网络流量增加、服务器merge的工作量增加, 导致写入速度变慢, 并且增加了Too many parts的可能性。2.数据的一致性问题, 先在分布式表所在的原创 2021-11-20 10:49:12 · 28205 阅读 · 0 评论 -
clickhouse创建单机表,本地表,分布式表,集群表
1.创建单机表:单机环境下建单机表:CREATE TABLE database.order(`Type` String COMMENT '数据类型',`Subtype` String COMMENT '子类',`Successflag` String COMMENT '0-失败;2-成功',`Client` String COMMENT 'andriod/IOS',`Version` String COMMENT '版本信息',`Macid` String COMMENT 'macid',原创 2021-11-20 10:42:04 · 32156 阅读 · 0 评论 -
java代码测试数据库连接
不需要远程连接工具,直接用代码main方法快速测试某一数据库连接是否可用的代码:import java.sql.Connection;import java.sql.DriverManager;/** * @Author: chuxia0811 * @Date: 2021/9/15 22:50 * @Description : */public class JDBCTest { // 定义数据库驱动名称 private static String driverName =原创 2021-09-15 23:01:52 · 27961 阅读 · 0 评论 -
DDL、DML、DCL、DQL的定义与区别
DDL:数据库定义语言,关键字:create、dropDML:数据操纵语言,关键字:Insert、delete、updateDQL:数据库查询语言,关键字:selectDCL:数据库控制语言 ,关键字:grant、revokeGRANT语句是授权语句,它可以把语句权限或者对象权限授予给其他用户和角色。DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。REVOKE语句是与GRANT语句相反的语句,它能够将以前在当前数据库内的用户或者角色上授予或拒原创 2021-09-15 22:43:36 · 25798 阅读 · 0 评论 -
postgresql 查询某列json串中是否有某个值
例如:若数据库表中user_type字段中存的是一串json串“{"name":"张三","age":18,"account":"123456,"user_type":"QQ"}如何根据user_type列取筛选,该列的json串中的user_type字段的值是QQ的。selecr * from user_report UR where user_type::json ->>'user_type' = 'QQ'...原创 2021-09-13 21:48:41 · 28130 阅读 · 0 评论 -
sql根据某一个字段重复只取第一条数据
例如根据表table_name中的name是否重复,根据创建时间取最新的一条:select s.* from ( select *, row_number() over (partition by [名称] order by [创建时间] desc ) as group_idx from table_name) swhere s.group_idx = 1若取最原始的一条,则order by xxx asc...原创 2021-09-04 10:52:36 · 29519 阅读 · 0 评论 -
postgresql数据库复制表结构及数据到备份表
在开发过程中经常会遇到需要备份某个表的场景,那么如何快速的一条sql实现备份呢?要求:备份表机构,及索引,字段备注信息,数据等,除了表名外,完全一致。select * into tbl_user_bak from tbl_user;注意:不能使用:create table tbl_user_bak as select * from tbl_user;这样的备份无法复制字段的备注信息,会漏掉某些信息。...原创 2021-08-18 23:13:45 · 26979 阅读 · 0 评论 -
insert插入操作时报主键已存在的错误处理
select max(id) from t_user;select setval(‘t_user_id_seq’,(select max(id) from t_user)+1);先查询改表当前最大的主键id,然后将当前序列设置为比最大的id大1即可。出现这种情况的原因一般是insert插入sql语句时包含id主键列的值也一起导入的,而不是自动生成的。...原创 2021-07-29 22:48:53 · 25796 阅读 · 0 评论 -
limit 10 offset 1000000为什么会很慢
一般刚开始学SQL的时候,会这样写:SELECT * FROM table ORDER BY id LIMIT 1000, 10;但在数据达到百万级的时候,这样写会慢死SELECT * FROM table ORDER BY id LIMIT 1000000, 10;也许耗费几十秒网上很多优化的方法是这样的SELECT * FROM table WHERE id >= (SELECT id FROM table LIMIT 1000000, 1) LIMIT 10;是的,速度提升到原创 2021-07-24 15:58:12 · 26761 阅读 · 1 评论 -
clickhouse常用的函数整理
一、检测函数类型(clickhouse中数据的类型)SELECT toTypeName(0);-- UInt8(三位数为8)SELECT toTypeName(-0);-- Int8SELECT toTypeName(-343);-- Int16SELECT toTypeName(12.43); -- Float64(默认浮点型的数据为64), 所以一般在处理浮点型的数据的时候尽量转成toFloat32(12.43)SELECT toTypeName(12.34343); -- Float64原创 2021-07-06 22:35:45 · 27900 阅读 · 0 评论 -
Clickhouse复制一个表及数据到另外一个表
create table newtest like test;insert into newtest select * from test;clickhouse中create table as 和create table like的区别:相同点:都是创建一个表;不同点:create table as 只是复制原数据。其实就是把查询的结果建一个表。create table like 产生与源表相同的表结构,包括索引和主键,数据需要用insert into语句复制进去。...原创 2021-05-17 22:02:41 · 39365 阅读 · 2 评论 -
postgresql 错误duplicate key value violates unique constraint 解决方案
SELECT setval(‘tablename_id_seq’, (SELECT MAX(id) FROM tablename)+1)其中:tablename为你的表名id为你的表自增主键替换执行下就好了主要是:serial key其实是由sequence实现的,当你手动给serial列赋值的时候,sequence是不会自增量变化的。最好不要给serial手工赋值...转载 2021-05-11 22:16:03 · 27907 阅读 · 0 评论 -
postgresql中string_to_array的使用
string_to_array函数在postgresql中是将字符串转为数组的格式,例如:将‘A,I,H5,M’这个字符串根据逗号分隔符转化为数组格式,使用如下:在开发中经常会遇到这种情况,前端将多个值,以拼接字符串的格式传递,需要查出后端某个字段值在字符串之内的数据,例如:前端需查询device_type在’A,I,H5,M’中的数据,而后端值有‘A.I’,‘M’,‘H5’,‘M,H5’,一个或多个值,如何查询,显然in查询是无法满足要求的,那么就需要用到 string_to_array这个函数,原创 2021-08-17 23:24:24 · 42901 阅读 · 4 评论 -
SQL 语句中 where 条件后 写上 1=1 是什么意思!
程序员在编程过程中,经常会在代码中使用到“where 1=1”,这是为什么呢?原创 2021-04-07 22:11:26 · 24577 阅读 · 0 评论 -
windows本地安装mysql及远程连接权限配置
一:检查电脑上是否安装过MySQL服务1.win + r 打开DOS窗口。2.输入services.msc,打开本地服务窗口。3.查找是否存在MySQL服务是否存在。若右侧的服务中没有mysql则表示没有安装过,可以开始安装。二:获取MySQL安装包1.打开MySQL下载地址,MySQL: 官方下载地址链接. https://dev.mysql.com/downloads/mysql/2.选择自己的安装平台,这里选择Microsoft Windows。3.选择合适的安装包,进入下载页面,点原创 2021-04-02 23:20:19 · 25827 阅读 · 0 评论 -
blob和text的区别
1.TEXT与BLOB的主要差别就是BLOB保存二进制数据,TEXT保存字符数据。目前几乎所有博客内容里的图片都不是以二进制存储在数据库的,而是把图片上传到服务器然后正文里使用标签引用,这样的博客就可以使用TEXT类型。而BLOB就可以把图片换算成二进制保存到数据库中。...原创 2021-03-21 10:17:30 · 32098 阅读 · 1 评论 -
char和varchar的区别
char类型的长度是固定的,varchar的长度是可变的。原创 2021-03-21 10:04:22 · 31681 阅读 · 1 评论 -
mysql常用的存储引擎及区别
MySQL 常见的存储引擎,可以使用命令:SHOW ENGINES命令,来列出所有的存储引擎。存储引擎是数据库的核心,在MySQL中,存储引擎是以插件的形式运行的。支持的引擎有十几种之多,但我们实战常用到的,大概只有InnoDB、MyISAM , Memory 和merge了。一、InnoDB为什么先说InnoDB?InnoDB 从 MySQL5.5(2010年) 版本代替 MyISAM 成为默认引擎,可以说只要用过 MySQL 的,都用过InnoDB,相比MyISAM,强调性能,InnoDB原创 2021-03-16 23:31:31 · 25099 阅读 · 0 评论 -
mysql执行流程
mysql主要分为Server层和存储引擎层:首先百度找了张这个图片,感觉很好理解,很形象的描述了mysql的执行流程。**Server层:**主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一个通用的日志模块 binglog日志模块。存储引擎: 主要负责数据的存储和读取,采用可以替换的插件式架构,支持InnoDB、MyISAM、Memory等多个存储引擎,其中InnoDB引擎有自有的日志模块redolog 模块。In原创 2021-03-09 23:26:28 · 24335 阅读 · 1 评论 -
深入理解MySQL索引原理和实现——为什么索引可以加速查询?
说到索引,很多人都知道:索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址,在数据十分庞大的时候,索引可以大大加快查询的速度,这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。注意:1、索引需要占用磁盘空间,因此在创建索引时要考虑到磁盘空间是否足够2、创建索引时需要对表加锁,因此实际操作中需要在业务空闲期间进行一:为什么添加索引会提高查询速度打个比方,索引就是书的目录,有了目录,查询起来当然更方便。一原创 2021-03-03 22:39:39 · 24642 阅读 · 2 评论 -
索引在哪些情况下会失效?
1、如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引2、3.like查询是以%开头,可以是%结束,例如 name like ‘张%’,这种情况索引不会失效。3、如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引。4、在MYSQL使用不等于(<,>,!=)的时候无法使用索引,会导致索引失效。5、is null或者is not null 也会导致无法使用索引。原创 2021-03-06 14:47:44 · 28757 阅读 · 1 评论 -
深入理解MySQL索引原理和实现——为什么索引可以加速查询?
说到索引,很多人都知道:索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址,在数据十分庞大的时候,索引可以大大加快查询的速度,这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。注意:1、索引需要占用磁盘空间,因此在创建索引时要考虑到磁盘空间是否足够2、创建索引时需要对表加锁,因此实际操作中需要在业务空闲期间进行一:为什么添加索引会提高查询速度打个比方,索引就是书的目录,有了目录,查询起来当然更方便。一原创 2021-03-06 10:02:04 · 25835 阅读 · 0 评论 -
statement和preparestatement的联系和区别
联系:1.PreparedStatement继承自Statement,两者都是接口。2.内部都要建立类似于Sockt连接,效率都不是特别高。区别:1、Statement用于执行静态SQL语句,在执行时,必须指定一个事先准备好的SQL语句。2、PrepareStatement是预编译的SQL语句对象,sql语句被预编译并保存在对象中。被封装的sql语句代表某一类操作,语句中可以包含动态参数“?”,在执行时可以为“?”动态设置参数值。3、statement每次执行sql语句,相关数据库都要执行sql原创 2021-01-30 11:19:27 · 25237 阅读 · 0 评论