开启掘金成长之旅!这是我参与「掘金日新计划 · 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之前,必须仔细询问客户是否真的要删除,并警告删除之后不可恢复!