MySQL中语句使用示例详解
更新时间:2022-08-08 09:01:22 作者:ixxqq
mysql函数是一个非常方便的替换函数,下面的文章主要介绍MySQL中语句的用法相关信息,文章通过示例代码进行了详细的介绍,需要的朋友可以参考一下。
目录
前言
into 在开发中很少用到,这次是因为在做一个分布式ID生成开源项目,研究了一下基于Yahoo推出的数据库的唯一ID生成方案:这是我遇到的一个知识盲区,就写在这篇文章里记录一下吧。
1. 进入函数
表结构
CREATE TABLE `id_generator` ( `id` bigint(20) unsigned NOT NULL auto_increment, `stub` char(1) NOT NULL default '', PRIMARY KEY (`id`), UNIQUE KEY `stub` (`stub`) ) ENGINE=MyISAM;
id列是主键索引,stub列是唯一索引。
在向数据库插入数据的时候,如果数据重复,则删除重复的行数据,然后插入一行。
它具有用唯一索引或主键索引替换重复数据的功能。也就是说,如果使用 into 插入的数据的唯一索引或主键索引与之前的数据重复,则将原始数据删除,然后添加。
判断是否存在重复的标准是唯一索引或主键索引是否一致。语法:into table( col1, col2, col3 ) ( val1, val2, val3 )
语义:向表中的col1、col2、col3添加数据val1、val2、val3
以表格为例:
REPLACE INTO id_generator(stub) VALUES ('trade') 执行信息如下: No errors; 1 rows affected, taking 20ms
指示仅添加了一行。
结果:
+----+--------------+
| ID | 存根|
+----+--------------+
| 1 | 贸易 |
+----+--------------+
继续执行如下语句:
REPLACE INTO id_generator(stub) VALUES ('trade') 执行信息如下: No errors; 2 rows affected, taking 23ms
因为删除了一行,又添加了一行。
结果:
+----+--------------+
| ID | 存根|
+----+--------------+
| 3 | 贸易 |
+----+--------------+
因为stub列创建了唯一索引,当stub有重复的数据行时,into会删除这行数据再重新添加,导致id改变。
如果进入唯一索引 id 重复会发生什么情况?
REPLACE INTO id_generator(id) VALUES (3) 执行信息如下: No errors; 2 rows affected, taking 28ms
因为删除了一行,又添加了一行。
结果:
+----+--------------+
| ID | 存根|
+----+--------------+
| 3 | |
+----+--------------+
此时我们可以看到stub列的值为空字符串,由于id是唯一索引,且id=3的记录已经存在,所以into会将id=3的记录删除,再重新添加,导致stub为空。
2. into 和 into 的区别
into 与 into in 函数类似。
不同之处在于:
into是最常见的插入,如果表中存在相同主键的数据,执行时会报错。
如果表中存在相同主键的数据,则不会插入该数据,否则会插入(若存在则忽略,否则会插入)。
into 首先尝试将数据插入表中。
如果表中已经有此行数据(根据主键或者唯一索引),则先删除此行数据,再插入新数据。否则,直接插入新数据。
注意:**插入数据的表必须有主键或者唯一索引!**否则into会直接插入数据,这样会导致表中出现重复数据
功能
语法:(field,,)
描述:field-数据库表的列名
- 需要替换的字符串
- 需要替换的字符串
语义:用字符串替换列名:字段中出现的该字符串的所有情况。
例子:
update id_generator set stub = replace(stub,'trade','user') select replace(uuid(), '-', '');
附:MySQL中into的用法与into类似
关键点:
INTO就会直接插入一条数据。
总结
关于MySQL中语句的详细使用方法这篇文章就到此结束了,更多相关使用内容请搜索脚本之家往期文章或者继续浏览下面的相关文章,希望大家以后多多支持脚本之家!
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。