数据库
谦虚使人发胖
这个作者很懒,什么都没留下…
展开
-
SpringBoot代码实现读写分离的方案
背景一个项目中数据库最基础同时也是最主流的是单机数据库,读写都在一个库中。当用户逐渐增多,单机数据库无法满足性能要求时,就会进行读写分离改造(适用于读多写少),写操作一个库,读操作多个库,通常会做一个数据库集群,开启主从备份,一主多从或多主多从,以提高读取性能。主从同步正常情况下读写分离的实现,首先要做一个一主多从的数据库集群,同时还需要进行数据同步。MySQL主从同步配置方法见另一篇文章:MySQL主从同步配置读写分离代码层面实现读写分离代码层面读写分离有两种方式判断是读还是写,根据方法名称原创 2021-01-21 15:43:59 · 928 阅读 · 2 评论 -
解决插入数据库时特殊字符的问题
出现原因:当insert数据中有表情时发生。而这些表情是按照4个字节一个单位进行编码的,而我们使用的utf-8编码在mysql数据库中默认是按照3个字节一个单位进行编码的.第一步:修改mysql的配置文件mysql/bin/my.ini, 添加如下内容:注意:是添加内容[client]default-character-set=utf8mb4 [mysql]default-character-set=utf8mb4 [mysqld]character-set-client-hand原创 2020-09-25 09:56:30 · 2087 阅读 · 0 评论 -
CentOS定时备份mysql数据库和清理过期备份文件
整个流程主要分为:创建备份数据库的文件夹; 编写备份数据库以及清理过期文件的脚本; 编写定时任务,定时启动脚本创建备份目录这里演示的备份目录是在/root/mysql_bak,可以根据自己想要把备份目录放在哪个文件夹下更改对应路径即可:mkdir /root/mysql_bak编写脚本进入mysql_bak目录cd /root/mysql_bak创建backu...原创 2019-11-29 16:00:12 · 442 阅读 · 0 评论 -
MySql数据库中long型数据与日期相互转换
mysql是我们用的最多的数据库之一,我们呢平时为了方便查询,通常会选择将时间存储为毫秒或者秒的形式。但是这样很不直观,今天就看看mysql怎样做到long型数据与日期相互转换。1. 秒数与Date之间的转换:select from_unixtime(1388776825);还可以定义时间格式,用法如下:SELECT FROM_UNIXTIME( 138转载 2018-02-01 12:01:14 · 26119 阅读 · 4 评论 -
Windows环境下,安装MySQL多实例,并实现Mysql的主从同步
一、 在同一台服务器上安装多个MariaDB实现一主多从(这里是伪从),即将多个从数据库同步到同一台服务器上,需要运行多个MySQL实例,如下文档。1. 官网下载Source源文件https://downloads.mariadb.org/2. 解压缩文件,将文件加下的my-medium.ini的名称修改为my.ini,作为文件源。3. 复制修改后的文件,并重命名4. 以下...原创 2017-10-18 16:55:43 · 568 阅读 · 1 评论 -
数据库表中,一般什么样的字段适合添加索引
主键、外键、where、group by、order by1. 表的主键、外键必须有索引2. 数据量超过300的表应该有索引3. 经常与其他表进行连接的表,在连接字段上应该建立索引4. 经常出现在where字句中的字段,特别是大表的字段,应该建立索引5. 索引应该建在选择型高的字段上6. 索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引7. 复合索引的建立需要进行仔细分析,尽量考虑使...原创 2018-04-03 13:47:43 · 15215 阅读 · 5 评论 -
悲观锁和乐观锁的实现
一、定义1.悲观锁:即很悲观,每次拿数据的时候都觉得数据会被人更改,所以拿数据的时候就把这条记录锁掉,这样别人就没法改这条数据了,一直到你的锁释放。2.乐观锁:即很乐观,查询数据的时候总觉得不会有人更改数据,等到更新的时候再判断这个数据有没有被人更改,有人更改了则本次更新失败。二、实现过程2.悲观锁:悲观锁的实现采用的数据库内部的锁机制,一个典型的倚赖数据库的悲观锁调用:select * from...转载 2018-04-03 14:05:26 · 301 阅读 · 0 评论 -
简述Oracle的rownum原理
对于Oracle的rownum问题,很多资料都说不支持>,>=,=,between……and,只能用以上符号(<、& lt;=、!=),并非说用>,>=,=,between……and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来,其实您只要理解好了这个rownum伪列的意义就不应该感到惊 奇,同样是伪列,rownum与ro...转载 2018-04-11 11:02:20 · 394 阅读 · 0 评论 -
MySQL创建存储过程,使用while循环插入数据
// 删除已有的user表DROP TABLE IF EXISTS `user`; // 创建新的user表CREATE TABLE `user` ( `userId` INT (11) NOT NULL AUTO_INCREMENT, `userLoginAccount` INT (255) NOT NULL, `userPassword` VARCHAR (2...转载 2018-06-27 19:50:25 · 9145 阅读 · 0 评论 -
SQL取字段中首字母,并按首字母排序
SELECT ID, USER_NAME userName,contacts, province, email, lower(case when contacts REGEXP '^[a-zA-Z]' then LEFT(contacts, 1) when contacts REGEXP '^[0-9]' then LEFT(contacts, 1) else ELT(INTERV...原创 2018-08-27 20:18:10 · 13404 阅读 · 3 评论 -
Java通过Mybatis实现批量插入数据到Oracle中
方法void insertMessages(List<BOMCMessage> list); <insert id="insertMessages" parameterType="java.util.List" useGeneratedKeys="false"> INSERT INTO ITF_OSMCS_SMS( SMS_N...原创 2018-10-15 20:25:54 · 2086 阅读 · 0 评论 -
Linux设置MySQL不区分表名大小写(linux环境下默认区分大小写)
Linux下的MySQL默认是区分表名大小写的通过如下设置,可以让MySQL不区分表名大小写:1、用root登录,修改 /{mysql安装路径}/etc/my.cnf;2、在[mysqld]节点下,加入一行: lower_case_table_names=13、重启MySQL即可。/bin/systemctl restart mysql.service ...转载 2019-01-11 10:10:20 · 5191 阅读 · 0 评论 -
mysql 插入数据时,出现"\xF0\x9F\x8F\x80"这种情况的处理!
问题Incorrect string value: ‘\xF0\x9F\x98\x82\xF0\x9F…’ for column ‘question’ at row 1我们知道设置数据库编码格式,表编码格式和字段编码格式的时候,一般设置为“utf-8”,这对于汉字来说足够了,在mysql中utf8占3个字节,但是对于移动端的特殊表情符号来说,三个字节是不够的,他需要四个字节。这个时候我们使用u...转载 2019-01-14 19:06:30 · 35120 阅读 · 4 评论 -
Java操作数据库的步骤
数据库访问几乎每一个稍微成型的程序都要用到的知识,怎么高效的访问数据库也是我们学习的一个重点,今天的任务就是总结Java访问数据库的方法和有关API,java访问数据库主要用的方法是JDBC,它是java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法,下面我们就具体来总结一下JDBC一:Java访问数据库的具体步骤:1 加载(注册)数据库 驱...转载 2017-03-25 10:46:48 · 833 阅读 · 0 评论 -
根据年份生成指定格式的序号
@SuppressWarnings("deprecation")int year = DateUtils.getCurrentDate().getYear() + 1900;String yearStr = String.valueOf(year);List applyList = purchaseApplyService.findByNumberLike(yearStr + "%")原创 2016-10-25 14:07:41 · 422 阅读 · 0 评论 -
MySQL比like语句更高效的写法locate、position、instr find_in_set
你是否一直在寻找比MySQL的LIKE语句更高效的方法的,下面我就为你介绍几种。LIKE语句SELECT `column` FROM `table` where `condition` like `%keyword%'事实上,可以使用 locate(position) 和 instr 这两个函数来代替一、LOCATE语句SELECT `column` from转载 2017-11-06 16:24:32 · 7070 阅读 · 4 评论 -
MySQL触发器实现表数据同步
其中old表示tab2(被动触发),new表示tab1(主动触发,外部应用程序在此表里执行insert语句)1、插入:在一个表里添加一条记录,另一个表也添加一条记录DROP TABLE IF EXISTS tab1;CREATE TABLE tab1(tab1_id varchar(11));DROP TABLE IF EXISTS tab2;CREATE TA转载 2017-08-25 15:20:03 · 1294 阅读 · 0 评论 -
三种JDBC批量插入编程方法的比较
JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下的等。 我用MySQL 5.1.5的JDBC driver 分别对三种比较常用的方法做了测试 方法一,使用PreparedStatement加批量的方法try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverMana转载 2017-04-28 16:32:02 · 549 阅读 · 0 评论 -
SQL实现每月之前的金额累计
http://blog.csdn.net/civilman/article/details/6525523比如,表结果如下:create table sales ( id int not null, mymoney int null, month int null)insert into sales(id, mymoney, month) values(1, 100, 1);insert...转载 2017-03-29 17:47:53 · 14260 阅读 · 1 评论 -
SQL集合函数中case when then 使用技巧
我们都知道SQL中使用case when then来转化数据库中的信息 比如 select (case sex when 0 then '男' else '女' end) AS sex from studentInfo假设数据库有一张表名为student的表。如果现在要你根据这张表,查出江西省男女个数,广东省男生个数,浙江省男女个数 怎么写SQL语句?即要生成下结果表答案是:select sex ...转载 2017-03-20 13:27:21 · 2330 阅读 · 0 评论 -
PostgreSQL与MySQL数据库的区别
本帖最后由 osdba 于 2011-04-21 16:33 编辑特性MySQLPostgreSQL实例通过执行 MySQL 命令(mysqld)启动实例。一个实例可以管理一个或多个数据库。一台服务器可以运行多个 mysqld 实例。一个实例管理器可以监视 mysqld 的各个实例。通过执行 Postmaster 进程(pg_ctl)启动实例。一个实例可以管理一个或多个数据库,这些数据库组成一个集...转载 2017-03-07 09:12:36 · 10176 阅读 · 1 评论 -
H2数据库的使用
H2最完整的资料下载地址:http://download.csdn.net/detail/yixiaoping/5956595H2数据库使用H2数据库介绍常用的开源数据库:H2,Derby,HSQLDB,MySQL,PostgreSQL。其中H2,HSQLDB类似,十分适合作为嵌入式数据库使用,其它的数据库大部分都转载 2017-03-06 11:01:29 · 374 阅读 · 0 评论 -
Oracle数据库教程
http://www.cnblogs.com/gossip/archive/2011/12/01/2270674.html转载 2016-12-16 10:34:56 · 329 阅读 · 0 评论 -
内连接、左外连接、右外连接、交叉连接区别
1. 内连接也叫连接,是最早的一种连接。还可以被称为普通连接或者自然连接,内连接是从结果表中删除与其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。2. 外连接分为三种:左外连接,右外连接,全外连接。对应SQL:LEFT/RIGHT/FULL JOIN左外连接和右外连接时都会以一张表为基表,该表的内容会全部显示,然后加上两张表匹配的内容。如果基表的数据在另一张表没有记录,那么在相关联的结...转载 2016-09-05 14:56:11 · 487 阅读 · 0 评论 -
SQL中CASE WHEN使用实例
SQL中的CASE使用方法Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女'ELSE '其他' END(注释:列名,这里是sex,如果放在case后,则显示在屏幕上的列名即为列名sex)--Case搜索函数CASE WHEN sex = '1' TH...转载 2016-09-01 17:57:25 · 396 阅读 · 0 评论 -
分页效果的实现
1. 使用 subList() 实现分页:无法按需批量获取数据subList(int fromIndex,int toIndex)(不包括toIndex)2. 使用 SQL 语句实现分页:数据库兼容性差MySQL、postgreSQL使用 limit 关键字:mysql: select * from student limit 0,10postgreSQL:转载 2016-07-05 11:49:50 · 300 阅读 · 0 评论 -
Postgres连接本地数据库出错:连线被拒,请检查主机名称和埠号,并确定 postmaster 可以接受 TCP/IP 连线。
可能是忘了启动postgres服务,如果已启动就重新启动原创 2016-05-03 17:15:19 · 7136 阅读 · 0 评论 -
MariaDB数据库的中主从复制的配置实现
一、 主从复制概述1. 复制概述 mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪转载 2017-08-29 10:45:40 · 2122 阅读 · 0 评论 -
MYSQL数据库间同步数据
假设数据库A为主机,数据库B为从机(A向B提供同步服务,即B中的数据来自A)A机器:IP=10.10.151.166B机器:IP=10.10.151.156下面看单向同步的配置步骤:1 在机器A中建立一个新的数据库,sql语句: CREATE DATABASE backup_db; USE test; CREATE TABLE `back转载 2017-08-25 15:43:28 · 320 阅读 · 0 评论