06 MySQL数据操作DML---简单增删改查:插入insert、删除delete、更新update、蠕虫复制
DML是指数据操作语言,用来对数据库中表的数据记录进行更新
插入 insert
向表中插入 指定字段 数据
// 语法:
insert into 表名(字段名1,字段名2,字段名3,...) values(字段名1值,字段名2值,字段名3值,...)
// 插入一条数据
insert into my_student(id,`name`,age) values(2,'Jack',12);
// 一次插入多个
insert into my_student(id,'name',age) values(1001,'张三',20),
(1002,'李四',30),
(1003,'王五',30);
向表中插入 所有字段 数据,此时值列表必须与表结构一致
-- 语法:
insert into 表名 values(对应的表结构值列表)
-- 插入一条数据
INSERT into my_student values(3,'Amy',16);
-- 插入多条数据
INSERT into my_student values(3,'Amy',16),
(4,'Hobby',37),
(5,'Lay',38),
(6,'Maaay',27);
字段列表不一定非要有表中的所有字段
后面values 中对应的值列表,只需与前面的字段列表相对应即可,不一定与表结构完全一致;
主键冲突
在插入数据过程中,默认主键是唯一的,如果非要再插入一条已经存在的数据,那么就会存在主键冲突
方法一: 主键冲突更新
insert into 表名 values(值列表) on duplicate key update 要修改的字段名=新值;
-- 比如:
insert into pk2 values(3,'小美',22) on DUPLICATE key update `name`='小美';
执行主键冲突更新后的结果:
方法二:主键冲突替换
当主键冲突后,直接替换掉原来的数据,重新插入数据
replace into 表名(字段名) values(值列表)
蠕虫复制-复制表数据
一份为二,成倍的增加
本质是:丛已有数据的表中获取数据,然后将获取到的数据插入到数据表中
insert into 表名(字段列表) select */字段 from 其他表或者当前表;
-- 1. 复制表
create table member2 like member;
-- 2. 通过蠕虫复制 将member表中的数据,全部复制到 member2中
INSERT INTO member2 SELECT * from member;
注意点:
-
蠕虫复制通常是重复数据,本身没有太大的意义,但是它可以在短时间内快速增加表的数据量,从而可以测试表的压力,也可以通过大量数据测试表的效率(索引)
-
注意主键冲突
查询 select
select 查询列表(字段) 第七步
from 表 第一步
连接类型 join 表2 第二步
on 连接条件 第三步
where 筛选条件 第四步
group by 分组列表 第五步
having 分组后的筛选条件 第六步
order by 排序列表 第八步
limit 偏移 ,条目数 第九步
查询表中所有数据
select * from 表名;
查询表中部分字段
select 字段名 from 表名;
简单的条件查询
select */字段列表 from 表名 where 字段名=值
删除 delete
删除数据的时候,尽量使用条件限制 where
注意:删除数据的时候,没办法是自增长重置为1
delete from 表名 [where 条件]
-- 1.删除sid为1004的学生数据
delete from student where sid = 1004;
-- 2.删除表所有数据
delete from student;
-- 3.清空表数据,同时将表的自增长重置为1
truncate table student;
truncate student;
删除数据的时候,可以设置 limit 来限制 删除的数量
delete from 表名 [where 条件] limit 数量
更新 update
在更新数据的时候,通常是跟随条件的,修改表中的部分数据,一般不会批量修改数据
update 表名 set 字段名=新值 [where 条件];
# 修改id=2的name 为 'Sunny'
UPDATE my_student set `name`='Sunny' WHERE id=2;
如果没有设置条件,就是全表更新,但是可以通过设置 limit 来显示更新的数据量
update 表名 set 字段名=新值 [where 条件] limit 数量;
常用基础数据操作如下:
-- 1. 插入操作
-- 插入方式1
INSERT into my_student (id,`name`,age) values(2,'Jack',12);
-- 插入方式2
INSERT into my_student values(3,'Amy',16);
-- 2. 查询操作
-- 查询所有数据
SELECT * from my_student;
-- 查询指定字段 id name 的数据
SELECT id,`name` from my_student;
-- 查询id=2的名称
SELECT `name` from my_student WHERE id=2;
-- 3. 删除操作
-- 删除id=4 的数据
DELETE FROM my_student WHERE id=4;
-- 4. 更新操作
-- 修改id=2的name 为 'Sunny'
UPDATE my_student set `name`='Sunny' WHERE id=2;