根据应用情况可以使用replace 语句代替insert/update语句。例如:如果一个表在一个字段上建立了唯一索引,当向这个表中使用已经存在的键值插入一条记录,将会抛出一个主键冲突的错误。如果我们想用新记录的值来覆盖原来的记录值时,就可以使用REPLACE语句。
使用REPLACE插入记录时,如果记录不重复(或往表里插新记录),REPLACE功能与INSERT一样,如果存在重复记录,REPLACE就使用新记录的值来替换原来的记录值。使用REPLACE的最大好处就是可以将DELETE和INSERT合二为一,形成一个原子操作。这样就可以不必考虑同时使用DELETE和INSERT时添加事务等复杂操作了。
在使用REPLACE时,表中必须有唯一有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。
用法:
(1)同INSERT
//含义一:与普通INSERT一样功能
REPLACE INTO score (change_type,score,user_id) VALUES (‘吃饭’,10,1),(‘喝茶’,10,1),(‘喝茶’,10,1);
//含义二:找到第一条记录,用后面的值进行替换
REPLACE INTO score (id,change_type,score,user_id) VALUES (1,‘吃饭’,10,1);
此语句的作用是向表table中插入3条记录。如果主键id为1或2不存在就相当于插入语句:
INSERTINTO score (change_type,score,user_id) VALUES (‘吃饭’,10,1),(‘喝茶’,10,1),(‘喝茶’,10,1);
如果存在相同的值则不会插入数据。
(2)replace(object, search, replace),把object中出现search的全部替换为replace。
//用法一:并不是修改数据,而只是单纯做局部替换数据返还而已。
SELECT REPLACE(‘喝茶’,‘茶’,‘喝’)
//结果: 喝喝
用法二:修改表数据啦,对应下面就是,根据change_type字段找到做任务的数据,用bb来替换
UPDATE score SET change_type=REPLACE(change_type,‘做任务’,‘bb’)
在此,做下对比:UPDATE和REPLACE的区别:
1)UPDATE在没有匹配记录时什么都不做,而REPLACE在有重复记录时更新,在没有重复记录时插入。
2)UPDATE可以选择性地更新记录的一部分字段。而REPLACE在发现有重复记录时就将这条记录彻底删除,再插入新的记录。也就是说,将所有的字段都更新了。
其实REPLACE更像INSERT与DELETE的结合
二:数据库的基本操作
(1)查看所有数据库以及使用数据库以及查询当前数据库:
show databases;
use database;
select database();
(2)显示当前数据库用户名,版本,当前时间:
select user();
select version();
select now();
(3)创建数据库以及查看数据库信息:
create database 数据库名 数据库选项;
show create database 数据库名;
(4) 修改和删除数据库:
alter database 库名 库选项;
drop database 库名;