mysql DML语言 增删改

一、插入

方式一(推荐):

1、列数和值的个数必须一致,且字段类型设置not null的字段必须插入值

2、没有设置not null的字段插入值的方式(比如字段address是可以为null的)

方式①:在字段中写上address字段,在值中写null

insert into user(id,name,address) values(1,'xiaowang',null);

方式②:即在字段中不写address字段,在值中也不写

insert into user(id,name) values(1,'xiaowang');

3、列的顺序可以调换

insert into user(name,id) values('xiaowang',2);

4、可以省略列不写,这时,就默认所有列,且插入值的顺序和表中列的顺序要一致

insert into user values(1,'xiaowang'...);

方式二:

insert into user 
set id=1,name='xiaowang';

区别:

1、方式一支持插入多行,方式二不支持

//要求values里的字段个数和类型要和user表的字段和类型一致
insert into user
values
(1,'xiaowang1'),
(2,'xiaowang2'),
(3,'xiaowang3');

2、方式一支持子查询,方式二不支持

//这种情况要求两个表的字段和类型必须对应
insert into user
select * from user2;

//也可以给定插入的字段,这样保证要插入的字段和子查询查出的字段和类型对应即可
insert into user(id,name)
select id,name from user2;//(后面也可以加where、group by、order by等)

二、修改

修改单表:修改id为1的name为xiaoming

update user
set name='xiaoming'
where id=1;

修改多表:修改商品类别为蔬菜的价格统一上涨1倍

update good g
left join type t on g.tid=t.id
set g.price=g.price*2
where t.name='蔬菜';

三、删除

方式一用 delete:

案例1:单表删除----删除id为1的数据

delete from user where id=1;

案例2:多表删除----删除类别为蔬菜的所有商品

delete g
from good g
left join type t on g.tid=t.id
where t.name='蔬菜';

案例3:多表删除----删除类别为蔬菜的所有商品和类别蔬菜

//注意:如果指定删除的类别下没有对应的商品,则该类别也不会被删除,因为没有查出数据
delete g,t
from good g
left join type t on g.tid=t.id
where t.name='蔬菜';
//解决办法:主要想删除的表当做主表delete g,t(此时以类别表为主表,则该类别下没有商品也会删除该类别的数据,因为只要指定的类别存在,就会返回指定类别的数据)
from good g
right join type t on g.tid=t.id
where t.name='蔬菜';

方式二用truncate:

不能加where条件,因此也称为清空;

truncate table user;

方式一delete和方式二truncate区别:

1、delete可以加where条件,支持多表删除

2、truncate效率要高

3、加入要删除表中有自增长的列,如果用delete删除后,再插入数据,自增长列的值从断点开始(比如删除了自增长列值为2的数据,再插入数据,自增长列从3开始),而truncate清空表后,再插入值,自增列值从1开始(可以看做新建了一张同样的表)

4、truncate删除没有返回值,delete有返回值,返回删除的行数

5、truncate不可以回滚(不可以用在事务中),delete删除可以回滚(可以用在事务中)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值