MySQL-3-DML

DML 数据操作语言

插入insert

  • 语法一:insert into 表名(列名,...)values(值1,...);
  • 语法二:insert into 表名 set 列名=值,列名=值,...
  • 插入的值的类型要与列的类型一致或兼容
# 语法一:支持多行插入;语法二不支持
INSERT INTO beauty VALUES
	(23,'唐艺昕1','女','1990-4-23','1898888888',NULL,2),
        (24,'唐艺昕2','女','1990-4-23','1898888888',NULL,2),
        (25,'唐艺昕3','女','1990-4-23','1898888888',NULL,2);
# 语法一:支持子查询,语法二不支持
INSERT INTO beauty(id,NAME,phone)
SELECT 26,'宋茜','11809866';

INSERT INTO beauty(id,NAME,phone)
SELECT id,boyname,'1234567' FROM boys WHERE id<3;

删除delete,truncate

  • 删除-->语法1:delete from 表名 where 筛选条件
  • 删除-->语法2:truncate(截断) table 表名:删除整张表
# 删除手机号带9的女生信息
DELETE FROM beauty WHERE phone LIKE '%9%';
  • 多表删除,语法:
      sq192语法:
# 删除表1的信息就是 delete 表1的别名 ...
# 删除表2的信息就是 delete 表2的别名 ...
# 两个表信息都删除则 delete 表1的别名 表2的别名 ...
delete 表1的别名,表2的别名 from 表1 别名,表2 别名 where 连接条件 and 筛选条件;

      sq199语法:
delete 表1的别名,表2的别名 from 表1 别名 inner|left|right join 表2别名 on 连接条件 where 筛选条件;

## 例子:
# 多表删除:删除张无忌的女朋友 只删除女朋友信息
DELETE b 
FROM beauty b
INNER JOIN boys bo
ON b.`boyfriend_id` = bo.`id`
WHERE bo.`boyName` = '张无忌';
# 删除黄晓明的信息以及他女朋友的信息
DELETE bo,b
FROM boys bo
INNER JOIN beauty b 
ON b.`boyfriend_id` = bo.`id`
WHERE bo.`boyName` = '黄晓明';

truncate和delete区别

  • delete 可以加where条件,truncate不能加
  • truncate删除,效率高一点
  • 假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,而truncate删除后,再插入数据,自增长列的值从1开始。
  • truncate删除没有返回值,delete删除有返回值
  • truncate删除不能回滚,delete删除可以回滚
CREATE TABLE major(
	id INT,
	mName VARCHAR(20)
);
# 使用delete 删除后 同时用回滚操作,则数据没有被删除
SET autocommit = 0;
START TRANSACTION;
DELETE FROM major
ROLLBACK
# 使用truncate 删除后 同时用回滚操作,则数据被删除
SET autocommit = 0; # 关闭事务的自动提交
START TRANSACTION; # 开始事务
TRUNCATE TABLE major; #删除表中所有数据
ROLLBACK # 回滚

修改update

  • 修改单表,语法:update 表名 set 列=新值,列=新值,... where 筛选条件;
  • 修改多表,语法:
/*
   sq192语法:
update 表1 别名,表2 别名 
set 列=值,.…
where 连接条件 and 筛选条件;
   sq199语法:
update 表1 别名
inner|left|right join 表2 别名 
on 连接条件
set 列=值,.…
where 筛选条件
*/

# 修改多表 例子:
# 修改
# 1. 修改张无忌的女朋友的手机号为110
UPDATE boys bo, beauty b
SET phone = 110
WHERE bo.`id` = b.`boyfriend_id` AND b.`boyfriend_id`= (
	SELECT `id` FROM boys WHERE boyName = '张无忌'
);
# 2. 修改没有男朋友的女生,让其男朋友编号都为2号
UPDATE beauty b
LEFT JOIN boys bo 
ON b.`boyfriend_id` = bo.`id`
SET b.`boyfriend_id` =  2
WHERE b.`boyfriend_id` IS NULL
原文地址:https://www.cnblogs.com/huyuqing/p/14406833.html