MySQL:高级数据操作
程序员文章站
2024-03-16 21:42:40
...
目录
高级数据操作
新增数据
多数据插入
只要写一次insert指令,但是可以直接插入多条记录
基本语法:insert into 表名 [(字段列表)] values(值列表),(值列表)…;
没写字段名时字段值从第一个开始写到最后一个,即使主键自增也必须写主键
添加时涉及主外键关系,要先添加主表再添加从表中的数据
主键冲突
主键冲突:在有的表中,使用的是业务主键(字段有业务含义),但是往往在进行数据插入的时候,又不确定数据表中是否已经存在对应的主键。
主键冲突的解决方案:
1、 主键冲突更新:
类似插入数据语法,如果插入的过程中主键冲突,那么采用更新方法。
insert into 表名 [(字段列表)] values(值列表) on duplicate key update 字段 = 新值;
2、 主键冲突替换:
当主键冲突之后,干掉原来的数据,重新插入进去。
replace into [(字段列表)] values(值列表);
蠕虫复制
蠕虫复制:一分为二,成倍的增加。从已有的数据中获取数据,并且将获取到的数据插入到数据表中。
基本语法:insert into 表名 [(字段列表)] select *|字段列表 from 表;
相当于:insert into 表名(字段名一,字段名二) values (查出的字段值一,查出来的字段值二)
注意:
1、 蠕虫复制的确通常是重复数据,没有太大业务意义:可以在短期内快速增加表的数据量,从而可以测试表的压力,还可以通过大量数据来测试表的效率(索引)
2、 蠕虫复制虽好,但是要注意主键冲突。
更新数据
1、 在更新数据的时候,特别要注意:通常一定是跟随条件更新
update 表名 set 字段名 = 新值 where 判断条件;
2、 如果没有条件,是全表更新数据。但是可以使用limit 来限制更新的数量;
update 表名 set 字段名 = 新值 [where 判断条件] limit 数量;
改变4个a变成e
update my_simple set name = 'e' where name = 'a' limit 4;
删除数据
1、 删除数据的时候尽量不要全部删除,应该使用where进行判定;
2、 删除数据的时候可以使用limit来限制要删除的具体数量
3、如果删除中涉及主外键关系,一定要先删除从表中的数据再删除主表中的数据
Delete删除数据的时候无法重置auto_increment
Mysql有一个能够重置表选项中的自增长的语法;
truncate 表名;
上一篇: 面试-4.索引失效问题
下一篇: MySQL索引是个什么东西
推荐阅读
-
MySQL:高级数据操作
-
linux下mysql的root密码忘记解决方 博客分类: 数据库
-
mysql千万级数据库插入速度和读取速度的调整记录(转) 博客分类: 数据库
-
MySQL高级知识(三)——索引
-
MySQL数据库——Update和Insert操作是锁表还是锁行
-
MySQL求两个时间的时间差 博客分类: MySQL数据库 MySQL求时间差日期
-
mysql字符串与日期类型互转 博客分类: 数据库开发 mysql字符串日期转换24
-
MySQL DATE_FORMAT() 函数 博客分类: Database数据库相关 DATE_FORMATsqlmysqldate日期
-
MySQL数据中有很多换行符和回车符!!该咋办?
-
【数据库系统原理】常用sql 操作