当前位置: 首页 > news >正文

三、MySQL 高级(DML 增删改)

三、MySQL 高级(DML 增删改)

3.1 DML 数据操纵语言

DML(Data Manipulation Language)DML对数据库中表记录的执行操作

  • 插入(INSERT)

    • 插入单行数据

    • 插入多行数据

    • 将查询结果插入到新表

  • 更新(UPDATE)

  • 删除(DELETE)

软件开发人员日常使用最频繁的操作,必备技能!!!


3.2 插入数据

  • INSERT 一次向表中插入一条记录
INSERT INTO 表名 [(字段名列表)]  VALUES (值列表);
# 增
INSERT into gradeinfo (grade) VALUES ('ACCP');
  • 字段名是可选的,如省略,则依次插入所有字段

  • 多个列表和多个值之间使用逗号分隔

  • 值列表和字段名列表一 一对应

  • 如果插入表中的部分字段数据,则字段名列表必填

  • 每个数据值的数据类型、精度和小数位数必须与相应的列匹配

  • 不能为标识列指定值(主键)

  • 如果在设计表的时候就指定了某列不允许为空,则必须插入数据

  • 如果字段具有默认值,可以使用DEFAULT关键字来代替插入的数值

  • INSERT 一次向表中插入多行数据
INSERT INTO 表名 [(字段名列表)] VALUES (值列表1), (值列表2), (值列表n);
# 增
INSERT INTO gradeinfo (grade) VALUES ('ACCP'),('BCSP');

为避免表结构发生变化引发的错误,建议插入数据时写明具体字段名!

  • INSERT 将查询结果插入到新表
INSERT INTO 表名(字段1,字段2 , ……) SELECT 字段1,字段2 , …… FROM 原表;
# 事先创建且与插入数据字段相符
CREATE TABLE patient_address (SELECT  patientName, address  FROM patient ) ;
# 无须事先创建

如果新表已存在,将会报错!


3.3 更新数据

  • UPDATE 更新数据记录
UPDATE 表名 SET 字段1=值1, 字段2=值2, …, 字段n=值n [WHERE 条件];
# 更新表数据
UPDATE gradeinfo SET gradeinfo.grade='BCSP' WHERE gradeinfo.id=2;

3.4 删除数据

  • DELETE 删除数据记录
DELETE FROM 表名 [WHERE条件];
# 删除表信息
DELETE FROM patient WHERE patientID =1

DELETE条件删除语句中,如果未指定WHERE条件语句,则将删除表中的所有数据

DELETE FROM gradeinfo WHERE gradeinfo.id=1;
  • TRUNCATE 格式化表记录
TRUNCATE TABLE 表名;
# 格式化表
TRUNCATE TABLE gradeinfo;

使用 TRUNCATE 语句删除表中记录后,将重置自增列,表结构及其字段、约束、索引保持不变,执行速度比 DELETE 语句快

3.5 比较 DROP、DELETE 与 TRUNCATE 语句

DROPDELETETRUNCATE
类型DDL 会隐式提交,不能回滚DML 每次从表中删除一行数据的同时将改行的删除操作记录在redo和undo表空间中,以便进行回滚和重做操作 需要手动提交操作才能生效,可通过ROLLBACK撤销操作DDL 会隐式提交,不会记录日志,不能回滚
功能删除表结构及所有数据,并将标所占用的空间全部释放可根据条件删除表中满足条件的数据,如果不指定WHERE子句,则删除表中所有记录删除表中所有记录,并将重建表结构
  • 执行速度

    • 一般来说,DROP>TRUNCATE>DELETE
  • 使用 DROP、TRUNCATE 语句时,要慎重

  • 如果使用 DELETE 语句删除表中部分数据要带上 WHERE 子句,且要注意表空间要足够大

  • 如果要删除表,使用 DROP 语句

  • 如果要保留表但删除表中所有数据,如果与事务无关可以使用 TRUNCATE 语句

  • 如果与事务有关,则使用 DELETE 语句


http://www.lryc.cn/news/45525.html

相关文章:

  • 面向AI编程的本质是什么?
  • 深入浅出——深度学习训练中的warmup
  • 你知道如何用C语言将格式化数据和字符串相互转换吗?
  • 免费一键生成原创文章-原创文章批量生成
  • 【数据库管理】④重做日志Redo Log
  • 5-python文件操作
  • 企业级Oracle入门Linux/Unix基础①
  • NexNoSQL Client:Elasticsearch、Redis、MongoDB三合一的可视化客户端管理工具
  • 如果大学能重来,我绝对能吊打90%的大学生,早知道这方法就好了
  • FactoryBean是现在的执行时机
  • 自定义注解使用
  • 2023年全国最新高校辅导员精选真题及答案42
  • Python模拟星空
  • IDE集成开发工具-IDEA(一)之IDE的概念
  • 基于Java+Springboot+vue的汽车租赁系统设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】
  • 【笔记】关于Maven中<optional>标签的理解
  • JavaScript函数及面向对象
  • 【chartGPT】我们要不要搞chartGPT?
  • java——date时间类型操作
  • 应急响应——IDSIPSmsf流量后门分析
  • 项目二:电子骰子
  • D. Genius‘s Gambit(很多情况)
  • jsp824汽车维修保养管理系统javaEE+mysql
  • Linux下C/C++ redis协议(RESP)解析
  • IDEA 性能优化设置
  • 蓝桥杯刷题冲刺 | 倒计时4天
  • 阿里测试7年经验,从功能测试到自动化测试,我整理的超全学习指南
  • jar加密后当作SDK给别人使用(可maven引入)
  • 【编程基础】032、C语言中结构体在解题中的应用
  • Kotlin 是后端开发的未来