MySQL——DML数据增、删、改

插入

方式一(经典)

语法:

insert into 表名(列名,...) values(值,...);

若要一次插入多行

create table if NOT EXISTS user(
	name VARCHAR(20),
	sex VARCHAR(2),
	age INT
)
INSERT INTO `user` VALUES('丸子','male',23),('莉香','female',22)

【说明】

  1. 要求值的类型和字段的类型一致或兼容
  2. 字段的个数和顺序可以与原始表中的字段个数和顺序不一致,但必须保证值和字段的类型一一对应
  3. 假如表中有可以为null的字段,可以通过以下两种方式插入null值
    ①字段和值都省略
    ②字段写上,值使用null
  4. 字段和值的个数必须一致
  5. 字段名可以省略,默认所有列,且顺序与默认顺序相同
  6. 字符和日期型数据应包含在单引号

方式二

语法:

insert into 表名 set 字段=值,字段=值,...;

两种方式的区别:

  1. 方式一支持一次插入多行,方式二不支持
  2. 方式一支持子查询,即从其他表中拷贝数据,方式二不支持

批量插入

批量插入,用的是insert语句的子查询,数据量大的时候提高效率格式:

insert into 表名(字段1,字段2...)
select 字段1,字段2 from 表名

使用insert子查询不仅能够实现简单的将一个表中的数据导出到另外一个表中的功能,还能在插入目标表之前对数据进行处理


修改

修改单表的记录 (重点)

update 表名 set 字段=值,字段=值 where 筛选条件;

修改多表的记录【补充】

update 表1 别名 
left|right|inner join 表2 别名 
on 连接条件  
set 字段=值,字段=值 
where 筛选条件;

案例

#修改张无忌的女朋友的手机号为114
UPDATE boys bo
INNER JOIN beauty b ON bo.id=b.boyfriend_id
SET b.phone='119',bo.userCP=1000
WHERE bo.boyName='张无忌';

删除

方式一:delete

删除单表的记录★

语法:

delete from 表名 where 筛选条件 limit 条目数

注意:使用 WHERE 子句 删除指定的记录。如果省略 WHERE 子句,则表中的全部数据将被删除

多表级联删除[补充]

语法:

delete 别名1,别名2 from 表1 别名 
inner|left|right join 表2 别名 
on 连接条件
where 筛选条件

方式二:truncate

语法:

truncate table 表名

两种方式的区别【面试题】★

  1. truncate删除后,如果再插入,标识列从1开始; delete删除后,如果再插入,标识列从断点开始
  2. delete可以添加筛选条件,truncate不可以添加筛选条件
  3. truncate效率较高
  4. truncate没有返回值,delete可以返回受影响的行数
  5. truncate不可以回滚,delete可以回滚
posted @ 2021-07-15 15:54  至安  阅读(73)  评论(0编辑  收藏  举报