数据操作语言 - DML

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。

  • 对于文章中出现的任何错误请大家批评指出,一定及时修改。
  • 有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。
  • 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

数据操作语言 - DML

本文关键字:数据库、数据操作语言、DML


之前我们已经了解了SQL语言的分类,可以划分为:DDL(数据定义语言)、DML(数据操纵语言)、DQL(数据查询语言)、DCL(数据控制语言)、TPL(事务处理语言)、CCL(指针控制语言),本文将介绍DML。

一、INSERT

INSERT语句用于向数据表中插入数据,我们主要需要注意数据类型的匹配以及插入数据的顺序。

1. 全字段插入

全字段插入是指:根据数据表的表结构,向所有的列中均插入数据,此时可以在INSERT后省略列名,直接使用INSERT INTO语句即可,在插入之前可以先查看一下表结构,或使用DESC命令查看一下表结构。

DESC Student;


当进行全字段插入时,我们需要完全按照定义数据表时预设的字段顺序,来调整插入数据的顺序。数据库在进行插入数据校验时,只能进行数据类型是否匹配的校验。

INSERT INTO Student VALUES('001103','js0001','王小明','男','1981-10-07 00:00:00');

2. 指定字段插入

指定字段插入可以只向数据表中的某几列插入数据,其他列会被默认值或NULL值填充,在操作时需要注意未插入数据的列已经设置好了默认值或者允许为空,否则必须向该列插入数据。
由于我们插入的是数据表中的某几列,数据库自身并不能判断我们要向那几列插入数据,所以在表名后一定要指定目标列,并且VALUES中的值的顺序要与列的顺序一致。

INSERT INTO Student(S_no,Class_no,S_name) VALUES('001103','js0001','王小明');

3. 同时插入多条数据

如果想向一个数据表中插入多条数据,直接在VALUES后用逗号隔开。

INSERT INTO 
Student(S_no,Class_no,S_name) 
VALUES
('001103','js0001','王小明'),
('001104','js0002','张小明'),
('001105','js0003','李小明');

4. 将查询结果直接插入

如果想要复制一个表的数据到名外一个表,可以使用INSERT INTO SELECT语句。前提是两个表具有相似的结构,在数据类型上匹配,数据长度上能够兼容,即:查询出的数据到能够放入到目标数据表。

INSERT INTO `目标表`
SELECT * FROM `源数据表`;
INSERT INTO `目标表`(`列名`,...)
SELECT `列名`,... FROM `源数据表`;

二、DELETE

1. 清空数据

在使用DELETE时要尤其注意,在不加任何条件时,会清空数据表中的数据。

DELETE FROM `表名`;

2. DELETE与DROP的区别

之前在讲解DDL时介绍了DROP(传送门地址:数据定义语言 - DDL),在最开始的时候容易混淆,其实很容易理解。DROP删除的是表结构,既然结构都没有了,那数据也就一同被清除了。DELETE只是删除数据,而表结构依然存在。

3. 筛选删除

在执行删除操作时,只能以行为单位(如果要清空某一列,需要使用UPDATE),通过添加WHERE子句来实现,使用规则与查询时相同,可进传送门:数据库单表查询 - 简单筛选查询

DELETE FROM `表名`
WHERE 筛选条件;

三、UPDATE

1. 全量更新

与DELETE类似,当不添加筛选条件时将会更新整表的数据,可以同时更新多个列,使用逗号隔开,需要用到赋值运算符(=)。

UPDATE `表名` SET `列名` = 值或表达式,`列名` = 值或表达式;

2. 选择更新

通过WHERE子句可以添加筛选条件,对符合条件的数据进行更新。

UPDATE `表名` SET `列名` = 值或表达式,`列名` = 值或表达式
WHERE 筛选条件;

在这里插入图片描述

小山猪的沙塔 CSDN认证博客专家 全栈开发工程师 大数据高级开发 大数据金牌讲师
若非一番寒彻骨,哪得梅花扑鼻香。全栈开发工程师,大数据高级开发工程师。大数据金牌讲师,知名机构合作讲师,各云大学及平台合作讲师,高校外聘讲师。微信公众号:微光点亮星辰,在学习的道路上一同见证点点滴滴。