之前我们已经了解了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 筛选条件;