mysql基础_06_增删改(DML)


数据操作语言:
插入:insert
修改:update
删除:delete


一、插入语句

1. 语法

# 方式一
	insert into 表名(列名,...) 		# 可插入多行
	values(1,...),
	values(1,...);
# 方式二
	insert into 表名 set 列名=,列名=,...

对比:

  • 方式一支持插入多行,方式二不支持
  • 方式一支持子查询,方式二不支持
# 支持子查询
	INSERT INTO beauty(id,NAME,phone)
	SELECT id,boyname,'1234567'
	FROM boys WHERE id<3;

2. 注意

  • 插入的值的类型要与列的类型一致或兼容
  • 列数和值的个数必须一致
  • 不可以为null的列必须插入值
  • 可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致

二、修改

1. 修改单表数据

1.1 语法

update 表名
set=新值,=新值,...
where 筛选条件;

1.2 案例

# 修改boys表中id好为2的名称为张三,魅力值 10
UPDATE boys 
SET boyname='张三',usercp=10
WHERE id=2;

2. 修改多表记录 级联修改

2.1 语法

# sql92语法:
update1 别名,2 别名
set=,...
where 连接条件
and 筛选条件;

# sql99语法:
update1 别名
inner|left|right join2 别名
on 连接条件
set=,...
where 筛选条件;

2.2 案例

# 修改没有男朋友的女生的男朋友编号都为2号
UPDATE boys bo
RIGHT JOIN beauty b 
ON bo.`id`=b.`boyfriend_id`
SET b.`boyfriend_id`=2
WHERE bo.`id` IS NULL;

三、 删除

1. 单表删除

1.1 语法

delete from 表名 where 筛选条件

2. 单表删除 级联删除

2.1 语法

# sql92语法:
delete1的别名,2的别名
from1 别名,2 别名
where 连接条件
and 筛选条件;

# sql99语法:
delete1的别名,2的别名
from1 别名
inner|left|right join2 别名 on 连接条件
where 筛选条件;

2.2 案例


#案例:删除张无忌的女朋友的信息
DELETE b							# 只有一个 b
FROM beauty b
INNER JOIN boys bo ON b.`boyfriend_id` = bo.`id`
WHERE bo.`boyName`='张无忌';


#案例:删除黄晓明的信息以及他女朋友的信息
DELETE b,bo						# 有 b 和  bo
FROM beauty b
INNER JOIN boys bo ON b.`boyfriend_id`=bo.`id`
WHERE bo.`boyName`='黄晓明';

3. TRUNCATE 删除全部数据

语法

truncate table 表名;

4. DELETE 和 TRUNCATE 对比 (面试)

  • delete 可以加where 条件,truncate不能加
  • truncate删除,效率高一丢丢
  • 假如要删除的表中有自增长列,
    • 如果用delete删除后,再插入数据,自增长列的值从断点开始,
    • 而truncate删除后,再插入数据,自增长列的值从1开始。
  • truncate删除没有返回值,delete删除有返回值
  • struncate删除不能回滚,delete删除可以回滚.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值