MySQL数据库操作DML 插入数据,删除数据,更新数据
目录
- DML介绍
- 数据插入
- 数据修改
- 数据删除
DML介绍
DML是指数据操作语言,英文全称是Data Manipulation Language,用来对数据库中表的数据记录进行更新。
关键字:
- 插入insert
- 删除delete
- 更新update
数据插入
insert into 表 (列名1,列名2,列名3...) values (值1,值2,值3...); //向表中插入某些 insert into 表 values (值1,值2,值3...); //向表中插入所有列
这里的两种方式,第一种需要指定插入的列,有时候,我们需要把某些值赋值为NULL,不需要插入这些为空的数据,那么此时第一个方式就比较好。
insert into student(sid,name,gender,age,birth,address,score) values(1001,'王小王-123','男',18,'1996-12-23','北京',83.5);

如果要使用第二种方式就需要,将所有的数据全部填充,少一个也不可以的
数据修改
首先我们准备数据:

update 表名 set 字段名=值,字段名=值...; update 表名 set 字段名=值,字段名=值... where 条件;
第一种方法会将所有的列进行修改,而第二种只会通过where条件进行匹配到对应的数据进行修改
-- 将所有学生的地址修改为重庆 update student set address = '重庆'; -- 讲id为1004的学生的地址修改为北京 update student set address = '北京' where id = 1004 -- 讲id为1005的学生的地址修改为北京,成绩修成绩修改为100 update student set address = '广州',score=100 where id = 1005

数据删除
delete from 表名 [where 条件]; truncate table 表名 或者 truncate 表名
注意这里的两种语法虽然都是对数据进行删除,但是二者的内部方法却是不一样的;
truncate和delete只删除数据不删除表的结构;drop删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index),依赖于该表的存储过程/函数将保留,但是变为invalid(无效的)状态
- 1、delete一般用来删除表中的某一条或者一行数据,在不设置WHERE条件下可以删除表中的所有信息,将该操作保存在事务日志中在以后需要的时候还可以进行回滚操作。对表执行delete之后,该表不会减少表或者索引所占用的空间。也就是说还可以恢复
- 2、truncate是清空的意思,从字面就可以理解为一次删除就可以将表里的数据全部清除,没有回滚操作。对表执行truncate之后,表和索引就会恢复到初始的大小,但是对于delete删除之后,索引会接着上面的继续创建,这就是二者的本质区别
- 3、drop可以将表的结构和数据内容都删除。对表执行drop之后,该表所占用的空间全部释放。
- 4、delete和truncate都是对数据进行操作,区别是范围不同。delete可以针对数据中的table、view两种类型。而truncate只能针对table类型。
- 5、速度上:drop>truncate>delete;
- 6、在没有备份的时候,尤其小心使用drop和truncate,删除部分数据行用delete带上where子句,回滚段要足够大。删除表用drop。想要保留表而将所有数据删除,如果和事务无关,用truncate即可,如果和事务有关,或者想触发trigger,还是用delete。如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据
- 7、delete是DML(数据操作语言)语句,执行后不会自动提交;drop、truncate都是DDL(数据定义语言)语句,执行后会自动提交。
-- 1.删除sid为1004的学生数据 delete from student where sid = 1004; -- 2.删除表所有数据 delete from student; -- 3.清空表数据 truncate table student; truncate student;
上一篇:MySQL脏读幻读不可重复读及事务的隔离级别和MVCC、LBCC实现
栏 目:其它数据库
本文标题:MySQL数据库操作DML 插入数据,删除数据,更新数据
本文地址:https://zz.feitang.co/shujuku/28481.html
您可能感兴趣的文章
- 12-22使用mysql记录从url返回的http GET请求数据操作
- 12-22详解sql中exists和in的语法与区别
- 12-22hive从mysql导入数据量变多的解决方案
- 12-22如何为PostgreSQL的表自动添加分区
- 12-22postgresql 实现得到时间对应周的周一案例
- 12-22sqoop export导出 map100% reduce0% 卡住的多种原因及解决
- 12-22mysql查询条件not in 和 in的区别及原因说明
- 12-22解决mysql使用not in 包含null值的问题
- 12-22解决从集合运算到mysql的not like找不出NULL的问题
- 12-22postgresql 实现多表关联删除


阅读排行
推荐教程
- 12-11mysql代码执行结构实例分析【顺序、分支、循环结构】
- 12-08添加mysql的用户名和密码是什么语句?
- 12-20PhpMyAdmin出现错误数据无法导出怎么办?
- 12-19Redis中实现查找某个值的范围
- 12-15浅析mysql迁移到clickhouse的5种方法
- 12-15CentOS7 64位下MySQL5.7安装与配置教程
- 12-14Mysql大型SQL文件快速恢复方案分享
- 12-14mysql 5.7.27 安装配置方法图文教程
- 12-13MySQL给新建用户并赋予权限最简单的方法
- 12-13关于MySQL索引的深入解析





