MySQL | DML语句

128 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第18天,点击查看活动详情

五、DML语句

(一)插入数据

1.语法格式

insert into 表名(字段名1,字段名2,字段名3...) values(值1,值2,值3);

注意:字段名和值要一 一对应。什么是一一对应? 数量要对应。数据类型要对应。

例:向学生表中插入数据

insert into t_student(no,name,sex,age,email) values(1,'啵啵鱼','男',20,'boboyu@qq.com');

在这里插入图片描述

下面这样也可以:(只要数据和字段名对应就可以)

insert into t_student(name,no,sex,age,email) values('酸菜鱼',2,'男',20,'suancaiyu@qq.com');

在这里插入图片描述

  • insert语句中的“字段名”可以省略吗?可以。

    insert into t_student values(2); //错误的

    注意:前面的字段名省略的话,等于都写上了!所以值也要都写上!

     insert into t_student values(2, '啵啵鱼', '男', 20, 'boboyu@qq.com');
    

2.注意事项

  • insert如果直插入了一个字段的数据,那么其他字段的数据就会为NULL
insert into t_student(no) values(1);

在这里插入图片描述

  • insert语句插入完数据后就只能修改数据,不能向已经插入的数据中继续插入数据。
insert into t_student(name) values('烤鱼');

在这里插入图片描述

3.一次插入多条记录

 insert into t_user(id,name,birth) values
  (1,'zs','1980-10-11'), 
  (2,'lisi','1981-10-11'),
  (3,'wangwu','1982-10-11');

在这里插入图片描述

4.将查询结果插入到一张表中(很少用)

emp_bak插入前:

create table dept_bak as select * from dept;  #as可写可不写

在这里插入图片描述

将查询结果插入到emp_bak中:

insert into dept_bak select * from dept;   #这里不能写as

在这里插入图片描述

(二)修改数据

1.语法格式

update 表名 set 字段名1=值1,字段名2=值2,字段名3=值3... where 条件;

例:t_user表修改前:

在这里插入图片描述

修改后:

update t_user set name = '酸菜鱼', birth = '2020-1-1' where id = 1;

在这里插入图片描述

2.注意事项

  • 没有条件限制会导致更改的字段下面全部的数据全都更新
update t_user set name = '啵啵鱼';

在这里插入图片描述

(三)删除数据

1.语法格式

delete from 表名 where 条件;

删除前:

在这里插入图片描述

删除后:

delete from t_user where id = 2;

在这里插入图片描述

2.注意事项

  • 没有条件,整张表的数据会全部删除!
delete from t_user;  #删除所有

在这里插入图片描述

3.delete删除数据的原理

表中数据被删除了,但是这个数据在硬盘上的真实存储空间不会被释放!

这种删除缺点是:删除效率比较低。 这种删除优点是:支持回滚,后悔了可以再恢复数据!!!

4.快速删除表中数据

  • truncate语句删除数据的原理:

    这种删除效率比较高,表被一次截断,物理删除。

这种删除缺点:不支持回滚。 这种删除优点:快速。

用法:(这种操作属于DDL操作。)

truncate table dept_bak;

大表非常大,上亿条记录 删除的时候,使用delete,也许需要执行1个小时才能删除完!效率较低。 可以选择使用truncate删除表中的数据。只需要不到1秒钟的时间就删除结束。效率较高。 但是使用truncate之前,必须仔细询问客户是否真的要删除,并警告删除之后不可恢复!