
🐬数据库
文章平均质量分 73
数据库从入门到删库跑路
共饮一杯无
优快云内容合伙人,杭州开发者社区主理人,Java领域优质创作者,2022年度博客之星TOP15,优快云博客专家,51CTO 专家博主,华为云享专家,阿里云专家博主,InfoQ专家博主,持续输出干货,欢迎关注。
鲜衣怒马意气风发,愿你归来仍是少年。
展开
-
dbeaver连接postgresql报错��������: �û� “root“ Password ��֤ʧ��
新安装完成的postgresql通过dbeaver连接访问报错��������: �û� “root” Password ��֤ʧ��。通过postgresql自带的pgAdmin 4管理工具连接时发现提示是用户是postgres并不是我们安装时候设置的用户;查看数据库的编码格式是utf8,没问题,所以上面连接的乱码问题忽略,猜测应该是Windows系统的编码格式不符导致。emmm回头看了下我安装时候的步骤,并没有让我输入用户名,是让我输入的一遍密码然后再确认一下密码,尴尬了😅😅😅。原创 2024-07-09 17:05:15 · 2237 阅读 · 0 评论 -
There has been an error.An error occured executing the Microsoft VC++ runtime installer
postgresql安装报错原创 2024-07-09 10:37:02 · 710 阅读 · 0 评论 -
1366 - Incorrect DECIMAL value_ ‘0‘ for column ‘‘ at row -1 修改MySQL字段报错解决
1366 - Incorrect DECIMAL value_ '0' for column '' at row -1 修改MySQL字段报错解决原创 2023-04-21 16:37:27 · 4666 阅读 · 2 评论 -
Java怎么实现几十万条数据插入(30万条数据插入MySQL仅需13秒)
Java怎么实现几十万条数据插入(30万条数据插入仅需13秒)原创 2023-03-20 13:11:07 · 79343 阅读 · 97 评论 -
Redis 中的 BitMaps(位图)命令详解
比如说,每当用户在某一天上线的时候,我们就使用 SETBIT ,以用户名作为 key ,将那天所代表的网站的上线日作为 offset 参数,并将这个 offset 上的为设置为 1。假设现在我们希望记录自己网站上的用户的上线频率,比如说,计算用户 A 上线了多少天,用户 B 上线了多少天,诸如此类,以此作为数据,从而决定让哪些用户参加 beta 测试等活动——这个模式可以使用SETBIT和BITCOUNT来实现。Bitmaps本身不是一种数据类型, 实际上它就是字符串,但是它可以对字符串的位进行操作。原创 2022-12-24 21:54:14 · 4930 阅读 · 48 评论 -
优快云是怎么实现用户签到,统计签到次数,连续签到天数等功能微服务的
它是由一组bit位组成的,每个bit位对应0和1两个状态,虽然内部还是采用String类型存储,但Redis提供了一些指令用于直接操作位图,可以把它看作是一个bit数组,数组的下标就是偏移量。位图的每一位代表一天的签到,1表示已签,0表示未签。如果这样存数据的话,对于用户量比较大的应用,数据库可能就扛不住,比如1000W用户,一天一条,那么一个月就是3亿数据,这是非常庞大的,因此使用。可以看到当前登陆用户在2,4,6,8,17,19,20,21,22号9天都进行了签到,当月总签到天数为9天,连续签到4天。原创 2022-12-22 11:16:03 · 14168 阅读 · 42 评论 -
Redis实现朋友圈,微博等Feed流功能,实现Feed流微服务(代码实现)
Redis实现朋友圈,微博等Feed流功能,实现Feed流微服务(代码实现)原创 2022-12-17 19:18:32 · 9918 阅读 · 51 评论 -
Redis解决秒杀微服务抢购代金券超卖和同一个用户多次抢购
上图就是redission官方网站首页。首页可以看出来,Redisson可以实现很多东西,在Redis的基础上,Redisson做了超多的封装,我们看一下,例如说Spring Cache,TomcatSession,Spring Session,可排序的Set,还有呢Sortedsort,下面还有各种队列,包括这种双端。原创 2022-12-01 07:30:00 · 6511 阅读 · 87 评论 -
MySQL中的事务和事务隔离级别
一个事务是一个完整的业务逻辑单元,不可再分。比如:银行账户转账,从A账户向B账户转账10000.需要执行两条update语句。以上两条DML语句必须同时成功,或者同时失败,不允许出现一条成功,一条失败。要想保证以上的两条DML语句同时成功或者同时失败,那么就需要使用数据库的“事务机制”。事务可以保证多个操作原子性,要么全成功,要么全失败。对于数据库来说事务保证批量的DML要么全成功,要么全失败。原创 2022-09-28 12:55:11 · 1875 阅读 · 7 评论 -
MySQL中的约束和存储引擎
存储引擎这名字只有在mysql中存在。(oracle中有相应的机制,但是不叫做存储引擎。Oracle中没有特殊的名字,就是”表的存储方式”)Mysql支持很多存储引擎,每一个存储引擎都对应了一种不同的存储方式。每一个存储引擎都有自己的优缺点,需要在合适的时机选择合适的存储引擎。MyISAM表最适合于大量的数据读而少量数据更新的混合操作。MyISAM表的另一种适合情形是使用压缩的只读表。如果查询中包含较多的数据更新操作,应使用InnoDB。原创 2022-09-28 12:50:26 · 1477 阅读 · 0 评论 -
MySQL中的索引、视图和DBA操作
索引就相当于一本书的目录,通过目录可以快速地找到对应的资源。全表扫描根据索引检索(效率很高)索引为什么可以提高检索效率呢?其实最根本的原理是缩小了扫描的范围。索引虽然可以提高检索效率,但是不能随意的添加索引,因为索引也是数据库当中的对象,也需要数据库不断地维护。是有维护成本的。比如,表中的数据也经常被修改这样就不适合添加索引,因为数据一旦修改,索引需要重新排序,进行维护。添加索引是给某一个字段,或者说某些字段添加索引。原创 2022-09-28 12:48:12 · 1619 阅读 · 0 评论 -
MySQL执行SQL语句报错Row xxx was cut by GROUP_CONCAT()
通过报错日志可以看到是使用GROUP_CONCAT函数报错,查找原因发现是拼接的字符串过长导致无法返回结果。根据结果显示,默认的可拼接串最大长度不超过1024个字节,期望能够扩大允许的拼接字符串最大长度。与Windows环境类似,一般配置文件所在位置为:/etc/my.cnf。配置完成后,进入服务,选择MySQL服务,重新启动。扩大允许拼接字符串的最大长度。重启后,执行查看最大允许长度已调整成102400。命令行修改方式与Windows一致,不再赘述。原创 2022-09-20 17:22:38 · 3636 阅读 · 3 评论 -
低代码开发之开源数据可视化分析平台datagear
DataGear是一款开源免费的数据可视化分析平台,自由制作任何您想要的数据看板,支持接入SQL、CSV、Excel、HTTP接口、JSON等多种数据源。系统基于Spring Boot、Jquery、ECharts等技术开发。数据分析底层模块,定义数据集、图表、看板API数据库连接支持模块,定义可从指定目录加载JDBC驱动、新建连接的API数据导入/导出底层模块,定义导入/导出指定数据源数据的API系统业务服务模块,定义数据源、数据分析等功能的服务层API。原创 2022-09-07 17:43:19 · 9830 阅读 · 67 评论 -
PostgreSQL在Linux和Windows安装和入门基础教程
StackOverflow 2022 开发者报告:总体而言,MySQL 依然是最受欢迎的的数据库。但在专业开发者群体中,PostgreSQL(46.48%)已经超越 MySQL(45.68%)夺得了第一名。看来必须得学一波了啊。PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。PostgreSQL支原创 2022-07-07 16:16:19 · 6252 阅读 · 12 评论 -
groupby报错not dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full
MySQL执行如下group by 语句报错:1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'table_zjq.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by原创 2022-05-09 12:44:17 · 8855 阅读 · 0 评论 -
oracle数据库设置一个自增量主键
👇首先创建一张表👇再创建序列👇最后创建触发器原创 2017-02-27 16:31:05 · 6850 阅读 · 0 评论 -
Oracle触发器概念和模板
当定义的'触发条件' 成立时,其语句就会 '自动执行' ,触发条件可以是对表数据的新增修改或者删除等。触发器的作用保护数据的安全,监视对数据的各种操作,如 '日志记录': 对重要表的 '修改' 进行记录。原创 2017-03-15 21:26:35 · 5405 阅读 · 0 评论 -
Mysql为何建议使用自增id作主键,有什么优点
B+ 树为了维护索引有序性,在插入新值的时候需要做必要的维护。如果插入的值比最大值id大,则只需要最后记录后面插入一个新记录。如果新插入的ID值在原先的有序中间,就相对麻烦了,需要逻辑上挪动后面的数据,空出位置。如果所在的数据页已经满了,根据 B+ 树的算法,这时候需要申请一个新的数据页,然后挪动部分数据过去。这个过程称为页分裂。在这种情况下,性能自然会受影响。除了性能外,页分裂操作还影响数据页的利用率。原本放在一个页的数据,现在分到两个页中,整体空间利用率降低大约 50%。当然有分裂就有合并。当相邻两原创 2022-04-08 21:41:37 · 11827 阅读 · 2 评论 -
select * from t_student where class between 200 and 300需要执行几次索引树的搜索操作,会扫描多少行
表初始化语句如下:CREATE TABLE `t_student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '', `class` varchar(50) NOT NULL DEFAULT '', PRIMARY KEY (`id`), index class_idx(class)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET原创 2022-04-09 18:12:48 · 5343 阅读 · 0 评论 -
索引的常见的三种模型哈希表、有序数组、B+搜索树的区别和使用场景
**索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。**常见的索引模型有哈希表、有序数组、B+树。哈希表哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。哈希的思路很简单,把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。不可避免地,多个 key 值经过哈希函数的换算,会出现同一个值的情况。处理这种情况的一种方法是,拉出一个链表。假设,你现在维护着一个身原创 2022-04-08 09:22:26 · 6152 阅读 · 0 评论 -
MySQL实战 | MySQL日志模块—redo log和 binlog
一个更新语句执行的时候整个过程跟查询的步骤是类似的,具体可以看之前的文章:MySQL实战 | MySQL逻辑架构—一条查询SQL是如何执行的,在一个表上有更新的时候,跟这个表有关的查询缓存会失效,所以这条语句就会把表上所有缓存结果都清空。这也就是我们一般不建议使用查询缓存的原因。根据id更新某条数据,分析器会通过词法和语法解析知道这是一条更新语句。优化器决定要使用 ID 这个索引。然后,执行器负责具体执行,找到这一行,然后更新。与查询流程不一样的是,更新流程还涉及两个重要的日志模块:redo log(重原创 2022-04-07 18:23:32 · 5996 阅读 · 0 评论 -
1222 - The used SELECT statements have a different number of columns
使用MySQL的union all 或者onion查询时报如下错误:1222 - The used SELECT statements have a different number of columns翻译过来的意思是:使用的select语句有不同的列数。因为使用union的两个SQL语句产生的记录的表结构不一致。必须是结构完全一致的记录集合才可以使用UNION。我这边就是两个表的union字段数量不一样,导致上述报错。我的解决办法是在使用 UNION ALL 进行表合并操作时,使用 null原创 2022-03-31 10:46:30 · 14086 阅读 · 0 评论 -
MySQL实战 | MySQL逻辑架构—一条查询SQL是如何执行的
执行如下SQL,我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程。select * from where id ='1';上图给出的是 MySQL 的基本架构示意图,从中你可以清楚地看到 SQL 语句在 MySQL 的各个功能模块中的执行过程。大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函原创 2022-03-24 19:07:18 · 6316 阅读 · 0 评论 -
MySQL/Oracle怎么把一个表的数据复制到另一个表
创建新表复制原有表的结构和数据 create table new_table as select * from old_table;复制一张表的数据到另一张表(表结构相同)INSERT into table1 select * from table2;复制一张表的数据到另一张表(表结构相同)INSERT into table1(表中字段1,表中字段2) select 表中字段1,表中字段2 from table2;...原创 2022-03-21 14:00:40 · 9466 阅读 · 0 评论 -
事务的四大特性
什么是事务事务是逻辑上的一组操作,要么都执行,要么都不执行。经典案例事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账 1000 元,这个转账会涉及到两个关键操作就是:将小明的余额减少 1000 元将小红的余额增加 1000 元。事务会把这两个操作就可以看成逻辑上的一个整体,这个整体包含的操作要么都成功,要么都要失败。这样就不会出现小明余额减少而小红的余额却并没有增加的情况。什么是数据库事务数据库事务在我们日常开发中接触的最多了。如果你的项目属于单体架构的话,你接触到的往往就原创 2022-03-20 14:14:59 · 8494 阅读 · 0 评论 -
MySQL查看数据库表中的重复记录并删除
表数据如下查看用户名相同的记录select * from user where username in (select username from user group by username HAVING count(*) >1);查看用户名和手机号都相同的重复记录select * from user where (username,phone)in (select username,phone from user group by username,phone HAVING coun原创 2022-03-17 16:23:45 · 7016 阅读 · 0 评论 -
MySQL使用性能优化—查看数据库的最大连接数、当前连接数等
在使用MySQL数据库的时候,经常会遇到这么一个问题,就是"Can not connect to MySQL server. Too many connections" -mysql 1040错误,这是因为访问MySQL且还未释放的连接数目已经达到MySQL的上限。通常,mysql的最大连接数默认是100, 最大可以达到16384。MySQL的最大连接数,增加该值增加mysqld 要求的文件描述符的数量。如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为原创 2022-03-17 11:45:15 · 7266 阅读 · 0 评论 -
事务的隔离级别详解
四个隔离级别SQL 标准定义了四个隔离级别:READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致修改丢失、脏读、幻读或不可重复读。可以通过"排他写锁"解决丢失修改问题。READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读和丢失修改,但是幻读或不可重复读仍有可能发生。REPEATABLE-READ(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读原创 2022-03-16 22:02:10 · 6945 阅读 · 0 评论 -
完全卸载oracle11g步骤
完全卸载oracle11g步骤:开始->设置->控制面板->管理工具->服务 停止所有Oracle服务。开始->程序->Oracle - OraHome81->Oracle Installation Products-> Universal Installer,单击“卸载产品”-“全部展开”,选中除“OraDb11g_home1”外的全部目录,删除。运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。运行regedit转载 2022-03-16 14:11:54 · 7438 阅读 · 0 评论 -
长文一次说完MySQL常用语句和命令等汇总
连接数据库mysql -uroot -proot查看所有数据库show databases;创建数据库并设置字符集和排序规则create database zjq CHARACTER SET ‘utf8mb4’ COLLATE utf8_chinese_ci;使用数据库use zjq;查看当前数据库中的表show tables;删除数据库drop database zjq;查看表结构desc dept;查看表中的数据select * from e原创 2022-03-14 05:00:00 · 11898 阅读 · 0 评论 -
SQL语句执行顺序是什么样的呢
select语句定义如下:<SELECT clause> [<FROM clause>] [<WHERE clause>] [<GROUP BY clause>] [<HAVING clause>] [<ORDER BY clause>] [<LIMIT clause>] 先给出SQL语句执行顺序结论,后通过案例分析:最先执行from tab;where语句是对条件加以限定;执行分组语句group by执行分原创 2022-03-13 14:25:19 · 6590 阅读 · 0 评论 -
group by和having的区别
group by按照某个字段或者某些字段进行分组。havinghaving是对分组之后的数据进行再次过滤案例找出每个工作岗位的最高薪资select max(sal) from emp group by job;注意:分组函数一般都会和group by 联合使用,这也是为什么它被称为分组函数的原因。并且任何一个分组函数(count sum avg max min)都是在group by语句结束之后才会执行的。当一条sql语句没有group by的话,整张表的数据会自成一组。select en原创 2022-03-13 13:43:52 · 10427 阅读 · 2 评论 -
SQL中的DQL DML DDL和DCL是怎么区分和定义的
SQL(Structured Query Language)结构化查询语言是数据库的核心语言,是高级的非过程化编程语言,也是经典的声明式编程范式实现。DQLDQL(Data Query Language)数据查询语言,数据检索语句,用于从表中获取数据。通常最常用的为保留字select。常用的语句关键字有:select, from, where, order by, having,asc|desc等。DMLDML(Data Manipulation Language)数据操作语言,对数据库中的数据进行原创 2022-03-13 11:52:47 · 7135 阅读 · 0 评论 -
count(字段),count(*)和count(1)的区别
很多人认为count(1)执行的效率会比count()高,原因是count()会存在全表扫描,而count(1)可以针对一个字段进行查询。其实不然,count(1)和count(*)都会对全表进行扫描,统计所有记录的条数,包括那些为null的记录,因此,它们的效率可以说是相差无几。而count(字段)则与前两者不同,它会统计该字段不为null的记录条数。总结对比:表没有主键时,count(1)比count(*)快;有主键时,主键作为计算条件,count(主键)效率最高;若表格只有一个字段,则cou原创 2022-03-12 23:08:49 · 8918 阅读 · 2 评论 -
MySQL数据库执行Update卡死问题解决
MySQL数据库执行Update卡死问题解决原创 2022-03-10 13:32:41 · 10788 阅读 · 0 评论 -
oracle数据库表创建自增量主键
--首先创建一张表create table test_auto_increase ( pk_id number(10), name varchar2(10));--再创建序列create sequence test_sqstart with 1--从一开始increment by 1--每次增加1nomaxvalue--不原创 2021-12-27 17:14:58 · 7579 阅读 · 0 评论 -
MySQL中的DATEDIFF()、PERIOD_DIFF()和TIMESTAMPDIFF()函数使用
DATEDIFF() 函数返回两个日期之间的天数用法:DATEDIFF(date1,date2)date1 和 date2 参数是合法的日期或日期/时间表达式。注意:只有值的日期部分参与计算,具体的时间不参与计算,计算两个日期之间的天数要用DATEDIFF不能用period_diff案例:SELECT DATEDIFF('2021-10-01','2021-09-30') AS DiffDate ----->1SELECT DATEDIFF('2021-10-01 23:59:原创 2021-12-13 15:02:42 · 10009 阅读 · 0 评论 -
MySQL查询某个表中的所有字段并通过逗号分隔连接
想多造一些测试数据,表中字段又多一个个敲很麻烦,导出表中部分字段数据又不想导出ID字段(因为ID字段是自增的,导出后再插入会报唯一性错误),select * 查出来又是所有的字段。可以通过如下SQL查询表中所有字段通过逗号连接,然后复制出来进行select查询再导出 select group_concat(COLUMN_NAME) '所有字段' from information_schema.COLUMNS where table_name = '表名';执行效果如下:下面的语句可以查询某个库中原创 2021-12-07 14:04:16 · 11289 阅读 · 0 评论 -
Mybatis中jdbcType和javaType的对应关系;Mybatis JdbcType与Oracle、MySql数据类型对应列表
Mybatis中jdbcType和javaType的对应关系JDBC Type Java Type CHAR String VARCHAR String LONGVARCHAR String NUMERIC java.math.BigDecimal DECIM...原创 2018-12-12 17:44:31 · 5757 阅读 · 0 评论 -
完全卸载oracle11g
步骤:1、 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务。<br>2、 开始->程序->Oracle - OraHome81->Oracle Installation Products-> Universal Installer,单击“卸载产品”-“全部展开”,选中除“OraDb11g_home1”外的全部目录,删除。<br>5、 运行reg...转载 2018-11-15 16:06:15 · 4897 阅读 · 0 评论