DML语句即数据操纵语言语句,是用于操作数据库中数据的指令。主要包含INSERT(插入数据)、UPDATE(更新数据)、DELETE(删除数据)等操作,能让用户便捷地在已有数据库表结构基础上对数据进行增、删、改、查处理。
与前文介绍的DDL(数据定义语言)相比,数据操纵语言(DML)主要聚焦于对数据库中已有数据的操作,作用对象是表内的数据行;而数据定义语言(DDL)侧重于数据库结构的定义与管理,负责创建、修改、删除数据库、表、索引等对象,二者在功能、操作对象上有明显区别,具体可以参考下表。
例如 INSERT 插入数据,UPDATE 修改数据,DELETE 删除数据
如 CREATE 创建对象,ALTER 修改对象结构,DROP 删除对象
- 本文主要介绍数据操作语言基本语句,包括INSERT(插入数据)、UPDATE(更新数据)、DELETE(删除数据)三部分。
- 本节思维导图如下,以供大家参考。视频教程参考B站黑马程序员,如有任何问题欢迎批评指正。
在前文介绍DDL语句时,我们创建了一个数据表用来存储学生的课程成绩信息,接下来我们继续使用该数据表,使用DML语句来将数据添加进我们创建好的字段,并进行相应的修改。
-------------------------------------------------------------
示例:在学校管理系统中,需要创建一个数据库来存储学生的课程成绩信息。我们要创建一个名为student_scores的表,用于记录每个学生每门课程的成绩以及相关的附属信息,以便学校管理人员、教师和学生能够方便地查询和管理成绩数据。
表格数据说明如下:
(1)score_id:每一条成绩记录都有一个独一无二的编号,方便在数据库中准确地定位和区分不同的成绩数据。
(2)student_id:学生学号字段,用于与学校管理系统中的学生信息表建立关联。
(3)course_id:课程信息字段,每一门课程在课程信息表中都有一个唯一的course_id。
(4)grade:这是记录学生在相应课程考试中实际取得的成绩数据。
(5)exam_date:记录考试发生的具体日期和时间。
(6)teacher_id:教师信息字段,表明是哪位教师教授了这门课程并给出了相应的成绩。
-------------------------------------------------------------
- 给指定字段添加数据
(1)INSERT INTO 、VALUES:是该语句的固定开头与关键字部分,表明接下来要进行插入数据的操作。
(2)表名指定要将数据插入到哪个具体的数据库表中,字段名必须是目标表中已存在的字段,要保证后面VALUES里的值的顺序与这里列出的字段顺序一一对应。
(3)值要按照前面列出的字段顺序,依次给出对应的值如果某个字段允许为空(NULL),且不需要插入具体值,可以在对应位置可以输入NULL 。
下面依照学生成绩表给出代码演示,先添加第一行数据,在指令台中输入如下命令,若已创建该表则无需重复执行命令:
如下图所示,执行命令后第一行数据已被创建。
- 给全部字段添加数据
与给指定字段添加数据相比,给全部字段添加数据要求提供的值的数量和顺序必须严格按照表中定义的列(字段)的顺序,如果表中有5个列,那么 VALUES 后面括号里就必须依次提供5个值,且第一个值对应表中的第一列,第二个值对应第二列,依此类推。
下面我们执行如下代码,实现将第二行数据写进表格内。
可以看到,执行代码后与给指定字段添加数据有相同的效果,已将第二行的数据添加进表格中。
- 批量添加数据
由此看出,第一段代码可以选择性地只针对表中的部分字段进行数据填充多行数据。
第二段代码则是对表中的所有字段都进行数据填充操作。所以在使用时,需要确保提供的值的数量和顺序与表中所有字段的顺序完全一致。
下面我们使用第二段代码完成表格中剩余数据的填充。
执行代码后如下图所示,目前已经将表格中数据全部写进数据表。
(1)UPDATE、SET 是关键字,用于指示数据库执行更新数据的操作。
(2)在 SET 后面列出了一系列要更新的字段及其对应的新值。‘字段名1 = 值1’ 表示要将表中 ‘字段名1 ’对应的列中的数据更新为 ‘值1’,依此类推。
可以同时更新多个字段的值,只需将各个字段及其更新值按照上述格式依次列出即可。
(3)WHERE 是SQL中用于筛选条件的关键字,可以省略。只有满足 WHERE 条件的记录才会被更新,不满足条件的记录则保持不变。
下面给出三个具体实例来说明该段代码的具体用法:
- 实例1:简单更新一条记录的某个字段值
(1)要求:将 student_id 为 1001 的学生在课程 201 上的考试成绩(grade 字段)更新为 90
(2)代码:
(3)运行结果:
可以看到,在运行代码后,学生1001的成绩从85.5分变为了90分。
-------------------------------------------------------------
- 实例2:更新多条记录的多个字段值
(1)要求:将所有在 2024-05-20 14:30:00 考试的学生的成绩(grade 字段)都增加 5 分,并且将他们的考试日期(exam_date)更新为 2024-05-21 14:30:00
(2)代码:
(3)运行结果:
运行代码后,有两行数据被修改。
-------------------------------------------------------------
- 实例3:更新所有记录的某个字段值
(1)要求:将 student_scores 表中所有记录的 teacher_id 字段值都更新为 3005
(2)代码:
(3)运行结果:
-------------------------------------------------------------
该语句的作用是在指定的数据库表中,根据WHERE条件筛选出符合要求的记录,然后将这些记录从表中删除。
- 实例:删除特定学生的所有考试记录
(1)要求:删除 student_id 大于等于 1003 的学生的所有考试记录
(2)代码:
(3)运行结果:
除此之外,还可以根据任务需求随意指定条件进行删除操作,如“删除某门课程的特定考试时间之后的所有记录”、“删除由特定老师教授的某门课程的所有记录”等等,感兴趣的读者可以自己尝试。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/7951.html