一、replace函数

语法:replace(object,search,replace) 
语义:把object对象中出现的的search全部替换成replace。 
实例:

update hellotable set 'helloCol' = replace('helloCol','helloSearch','helloReplace')
  • 1

二、replace into函数

为什么会接触到replace into函数,是因为业务需要向数据库中插入数据,前提是重复的不能再次插入。以前用where解决的,今天才知道还有一个更简洁的方法replace。 
replace具备替换拥有唯一索引或者主键索引重复数据的能力,也就是如果使用replace into插入的数据的唯一索引或者主键索引与之前的数据有重复的情况,将会删除原先的数据,然后再进行添加。 
语法:replace into table( col1, col2, col3 ) values ( val1, val2, val3 ) 
语义:向table表中col1, col2, col3列replace数据val1,val2,val3

实例:

REPLACE INTO users (id,name,age) VALUES(123, ‘chao’, 50);
  • 1

三、唯一的组合索引

因为在创建索引的时候发现很多问题,放在这儿做一下记录。

首先我们使用replace的原因就是因为它有“防重”的作用,但是它的“防重”作用仅仅是局限在唯一索引上或者主键索引上。所以我们使用replace时必须要有一个唯一索引。

而业务的逻辑需要四个字段唯一确定一条记录,也就是说我要建立一个组合索引也即多列索引。

最终确定需求就是我要create出一个unique的组合索引,很简单是不是,后面讲坑。。。

先讲讲组合(多列)索引是什么鬼?! 
组合索引的生效原则是 从前向后依次生效,如果中间某个索引没有使用, 那么断点前面的索引部分起作用,断点后面的索引没有起作用,即最左优先原则

例如创建多列索引(a,b,c)

where a=3 and b=45 and c=5...
这种三个索引顺序使用中间没有断点,全部发挥作用;where a=3 and c=5...
这种情况下b就是断点,a发挥了效果,c没有效果;where b=3 and c=4...
这种情况下a就是断点,在a后面的索引都没有发挥作用,这种写法联合索引没有发挥任何效果;where b=45 and a=3 and c=5...
这个跟第一个一样,全部发挥作用,abc只要用上了就行,跟写的顺序无关;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

如何创建组合索引 
语法:CREATE UNIQUE INDEX index ON table( col1, col2, col3 ) 
实例:CREATE UNIQUE INDEX index_unique ON app(pkgName,version,device,osver)

很简单是不是,但是我还是遇到了两个坑,浪费了我一下午,第一个坑就是创建的索引长度是有限制的,不能超过767,发现字段的长度也用不了varchar(256)于是改成了varchar(100)。 
你以为这样就OK了,NAIVE!第二个坑,“error: Duplicate etry ~”,英文不好真的很费劲,我翻译出来“重复实例”,却还是没能理解是什么意思,还一味的排除sql语句的错误。。。直到逛了外网论坛才发现是表的问题,因为在创建这个唯一索引的时候表中已经有很多重复数据了,所以很肯定创建不成功! 
清空表数据,完美。。。

参考博客: 
mysql多列索引的生效规则

MySQL的replace方法相关推荐

  1. js mysql替换_JavaScript_js使用正则实现ReplaceAll全部替换的方法,JS 字符串有replace() 方法。但这 - phpStudy...

    js使用正则实现ReplaceAll全部替换的方法 JS 字符串有replace() 方法.但这个方法只会对匹配到的第一个字串替换. 如下例: New Document var str = " ...

  2. mysql数据库replace写入_MySQL数据库replace into 用法(insert into 的增强版)

    MySQL数据库replace into 用法我以前介绍过相关的教程,但有加强版各位朋友可能不知道吧,今天我们来看一篇关于MySQL数据库replace into增强版的介绍与用法例子. Error ...

  3. 【数据库】Mysql的REPLACE()函数替换字符串

    mysql中replace函数直接替换mysql数据库中某字段中的特定字符串,用起来非常的方便.               REPLACE(str,from_str,to_str)  第一个字符串s ...

  4. MYSQL 列转行方法

    MYSQL 列转行方法 目标 上周遇到个业务场景,要求把一列中用分隔符连接的数据,通过分隔符转多行,形如: 转为 准备 表结构 CREATE TABLE `t_tag` (`id` int NOT N ...

  5. mysql批量更新方法

    目录 方法一 replace into 批量更新 方法二 insert into 批量更新 方法三 临时表 批量更新 方法四 case when 批量更新 本篇文章实验mysql版本为5.7.20  ...

  6. mysql where replace,mysql使用replace函数进行字符串替换

    摘要 腾兴网为您分享:mysql使用replace函数进行字符串替换,知富,找乐助手,长沙银行,一路捞等软件知识,以及映客游戏,纯净输入法,大华软件,极品飞车17,dota6.67,净天之命1.71, ...

  7. MySQL修改密码方法总结 (转)

    MySQL修改密码方法总结 (转)[@more@] 首先要声明一点,大部分情况下,修改Mysql是需要有MYSQL里的root权限的, 所以一般用户无法更改密码,除非请求管理员. 方法一 使用PHPm ...

  8. .net连接mysql数据_.net连接MYSQL数据库的方法及示例!

    连接MYSQL数据库的方法及示例 方法一: 使用MYSQL推出的MySQL Connector/Net is an ADO.NET driver for MySQL 该组件为MYSQL为ADO.NET ...

  9. mysql数据库解压安装教程_MySQL数据库之windows 10下解压版MySql安装配置方法教程...

    本文主要向大家介绍了MySQL数据库之windows 10下解压版MySql安装配置方法教程 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. windows 10 下安装解压版的 ...

最新文章

  1. python中ret是什么意思_数据结构图在python中的应用
  2. 优化选项对ARM下指针赋值的影响
  3. linux 简介与安装(虚拟机安装)
  4. System之Ubuntu:VMware虚拟机 Ubuntu安装详细过程(图文教程,最强攻略,步骤详细,建议收藏)
  5. Matlab里evalin和assignin的用法
  6. Java中常用的4个Json库,哪个性能更牛逼?
  7. Visual paradigm Db Archtecture Database config
  8. Rtworld目录网全解开源2.0-功能齐全
  9. 淄博神爱计算机官网,【最美教师】张萍:大爱无言 育人无声
  10. C语言中static的用法
  11. 职场中几个最忌讳的行为模式。
  12. 腾讯云独立模式账号引入接口
  13. LINUX SHELL判断一个用户是否存在
  14. 案例分享:Qt的PPT播放器
  15. 【5G核心网】5GC核心网之网元AUSF
  16. 七大江河水系--淮河
  17. 帝国cms会员中心1.2
  18. 优秀的人是如何通过互联网赚钱的,4个案例告诉你
  19. 蟠桃c语言,【蟠桃记】 (C语言代码)递归法和归纳法
  20. 小程序根据经纬度计算两点距离

热门文章

  1. ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案(转)
  2. Docker入门安装教程
  3. Nginx默认虚拟主机、 Nginx用户认证、Nginx域名重定向、访问日志·····
  4. 流媒体地址文件制作方法
  5. Struts1.x系列教程(17):使用IncludeAction和ForwardAction类包含和转入Web资源
  6. WatchStor观察:冰岛身陷困境也不会停止数据中心项目
  7. 战神级CTO直招产品技术小鲜肉,“悦家”团队带你玩转家装O2O
  8. Cisco PPPOE配置详解
  9. expdp 详解及实例
  10. 思科修复NSA报告的Nexus 交换机DoS漏洞及其它