MySQL的replace方法
一、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方法相关推荐
- js mysql替换_JavaScript_js使用正则实现ReplaceAll全部替换的方法,JS 字符串有replace() 方法。但这 - phpStudy...
js使用正则实现ReplaceAll全部替换的方法 JS 字符串有replace() 方法.但这个方法只会对匹配到的第一个字串替换. 如下例: New Document var str = " ...
- mysql数据库replace写入_MySQL数据库replace into 用法(insert into 的增强版)
MySQL数据库replace into 用法我以前介绍过相关的教程,但有加强版各位朋友可能不知道吧,今天我们来看一篇关于MySQL数据库replace into增强版的介绍与用法例子. Error ...
- 【数据库】Mysql的REPLACE()函数替换字符串
mysql中replace函数直接替换mysql数据库中某字段中的特定字符串,用起来非常的方便. REPLACE(str,from_str,to_str) 第一个字符串s ...
- MYSQL 列转行方法
MYSQL 列转行方法 目标 上周遇到个业务场景,要求把一列中用分隔符连接的数据,通过分隔符转多行,形如: 转为 准备 表结构 CREATE TABLE `t_tag` (`id` int NOT N ...
- mysql批量更新方法
目录 方法一 replace into 批量更新 方法二 insert into 批量更新 方法三 临时表 批量更新 方法四 case when 批量更新 本篇文章实验mysql版本为5.7.20 ...
- mysql where replace,mysql使用replace函数进行字符串替换
摘要 腾兴网为您分享:mysql使用replace函数进行字符串替换,知富,找乐助手,长沙银行,一路捞等软件知识,以及映客游戏,纯净输入法,大华软件,极品飞车17,dota6.67,净天之命1.71, ...
- MySQL修改密码方法总结 (转)
MySQL修改密码方法总结 (转)[@more@] 首先要声明一点,大部分情况下,修改Mysql是需要有MYSQL里的root权限的, 所以一般用户无法更改密码,除非请求管理员. 方法一 使用PHPm ...
- .net连接mysql数据_.net连接MYSQL数据库的方法及示例!
连接MYSQL数据库的方法及示例 方法一: 使用MYSQL推出的MySQL Connector/Net is an ADO.NET driver for MySQL 该组件为MYSQL为ADO.NET ...
- mysql数据库解压安装教程_MySQL数据库之windows 10下解压版MySql安装配置方法教程...
本文主要向大家介绍了MySQL数据库之windows 10下解压版MySql安装配置方法教程 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. windows 10 下安装解压版的 ...
最新文章
- python中ret是什么意思_数据结构图在python中的应用
- 优化选项对ARM下指针赋值的影响
- linux 简介与安装(虚拟机安装)
- System之Ubuntu:VMware虚拟机 Ubuntu安装详细过程(图文教程,最强攻略,步骤详细,建议收藏)
- Matlab里evalin和assignin的用法
- Java中常用的4个Json库,哪个性能更牛逼?
- Visual paradigm Db Archtecture Database config
- Rtworld目录网全解开源2.0-功能齐全
- 淄博神爱计算机官网,【最美教师】张萍:大爱无言 育人无声
- C语言中static的用法
- 职场中几个最忌讳的行为模式。
- 腾讯云独立模式账号引入接口
- LINUX SHELL判断一个用户是否存在
- 案例分享:Qt的PPT播放器
- 【5G核心网】5GC核心网之网元AUSF
- 七大江河水系--淮河
- 帝国cms会员中心1.2
- 优秀的人是如何通过互联网赚钱的,4个案例告诉你
- 蟠桃c语言,【蟠桃记】 (C语言代码)递归法和归纳法
- 小程序根据经纬度计算两点距离
热门文章
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案(转)
- Docker入门安装教程
- Nginx默认虚拟主机、 Nginx用户认证、Nginx域名重定向、访问日志·····
- 流媒体地址文件制作方法
- Struts1.x系列教程(17):使用IncludeAction和ForwardAction类包含和转入Web资源
- WatchStor观察:冰岛身陷困境也不会停止数据中心项目
- 战神级CTO直招产品技术小鲜肉,“悦家”团队带你玩转家装O2O
- Cisco PPPOE配置详解
- expdp 详解及实例
- 思科修复NSA报告的Nexus 交换机DoS漏洞及其它