数据高级操作
数据的操作无外乎就是对数据的增删改查
增加数据
基本方式:insert into 表名[(字段列表)] values(值列表);
主键冲突:在插入数据的时候,主键值已经存在了,但是要求必须使用该主键字段
实现目标:如果该主键不存那么就增加记录,如果不存在,就修改部分字段的值
1. 使用主键冲突方式
语法:insert into 表名 values(值列表) on duplicate key update 字段 = 值
2. 使用替换插入
语法:replace into 表名(字段列表) values(值列表);
Replace其实先删除存在的行,在进行插入。
注意:大部分情况下,因为是使用逻辑主键,一般会自增长,所以所以null即可,但是如果是使用业务主键,那么很有可能会存在冲突(replace)。
蠕虫复制
蠕虫能够一分为2,2分为4,在成倍增长
语法:insert into 表名 (字段列表) select 字段列表 from 表名;
蠕虫复制能够快速使用表中的数据量增加,没有办法改变数据
蠕虫复制也可以从其它表中去获取数据。
更新数据
基本语法:update 表名 set 字段 = 值 [where 条件]
高级语法:update 表名 set 字段 = 值 [where 条件] [limit]
删除数据
基本语法:delete from 表名[where 条件]
高级语法delete from 表名 [where条件][limit]
删除数据并不能修改一张表的索引和自增长.如果想删除表的自增长重新来过
先删除表(drop),在新教表(create)
Mysql提供了简单方式实现两个步骤:truncate
查询数据
基础语法:select 字段列表from 表名[where条件]
高级语法:select [select 选项] 字段列表 [from子句][where子句][group by 子句][having 子句][order by 子句][limit 子句]
Select选项:在查询得到数据是否需要进行合并,all表示获取所有数据(默认的),distinct
将完全一致的记录进行合并
Distinct是针对整个记录进行去重,现在记录没有一天是重复只是某个字段有重复
去重