~ DML 操作表记录 – 增、删、改
数据操作语言(DML):主要对表中的数据(记录)进行“增、删、改”。
插入数据记录 INSERT
在使用数据库之前,首先需要为数据表添加数据,可以使用 INSERT 语句为表插入数据。
[1] 插入单行数据
INSERT INTO 表名 [(字段列表)] VALUES (值列表);
说明:
1)表字段是可选的,可以选择一列或多列,如果省略,则依次插入所有字段;
2)多个列表和多个值之间使用逗号分隔;
3)值列表必须和字段名列表数量相同,且数据类型相符;
4)如果插入的是表中部分数据,字段名列表必须填写;
5)除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)
6)如果要插入空值,可以不写字段,或者插入 null。
如,INSERT INTO `student` (`loginPwd`,`studentName`,`gradeId`,`phone`,`borndate`)
VALUES ('12345','张三','1','15112345678','1997-3-1');
[2] 插入多行数据
MySQL 中,INSERT 语句支持一次插入多条语句,插入时可指定多个值列表,每个值列表之间用逗号隔开。
INSERT INTO (字段名列表) VALUES (值列表1),(值列表2),... (值列表n);
如,INSERT INTO `subject` (`subjectName`,`classHour`,`gradeID`)
VALUES ('Logic Java',200,1),('HTML',160,1),('Java OOP',230,2);
[3] 将查询结果插入到新表(将已有数据表中的数据备份到其他表中)
CREATE TABLE 新表 (SELECT 字段1,字段2,...FROM 旧表); 如,CREATE TABLE `phonelist` (SELECT `studentName`,`phone` FROM `student`); // 以上语句在执行的同时创建新表phonelist,无须提前创建;如果已存在表phonelist,则执行该语句会报错。
删除表中的数据记录 DELETE
从数据表中删除数据使用 DELETE 语句,也可以使用 WHERE 子语句添加删除条件。
DELETE FROM 表名 [WHERE 条件]; 如,DELETE FROM `phonelist` WHERE `studentName`='张三';
此外,也可以使用 TRUNCATE 语句删除表中所有行。
TRUNCATE TABLE 表名; 如,TRUNCATE TABLE phonelist; // TRUNCATE语句删除表中所有数据,删除后将重置自增列,表结构及其字段、约束、索引保持不变,执行速度比DELETE语句快。
[ 面试:删除表中所有数据的两种方式 ]
delete form 表名; # 删除表的所有数据,但自动增长值不会重置为1。 truncate table 表名; # 删除表中所有数据,自动增长值重置为1。 // truncate的底层是:直接将表删除,重新建表。
更新表中的数据记录 UPDATE
[1] 更新所有记录的指定字段
update 表名 set 字段1=值1,字段2=值2,...字段n=值n;
[2] 更新符合条件记录的指定字段
update 表名 set 字段1=值1,字段2=值2,...字段n=值n [where 条件]; 如,UPDATE student SET sname="joy" WHERE sid=1;
插入数据记录
- 插入单行数据
# 基本语法 insert into 表名 [(字段列表)] values (数据列表); # 代码示例 insert into hello (`studentNo`,`studentName`) values (20101854,'Lily');
- 插入多行数据
# 基本语法 insert into 表名 [(字段列表)] values (数据列表1),(数据列表2),...(数据列表n); # 代码示例 insert into hello values (1,'jack'),(2,'lily'),(3,'Lynn');
- 将查询结果插入到新表中(将已有数据表中的数据备份到其他的表中)
# 基本语法 create table 新表 (select 字段1,字段2,...字段n from 旧表); # 代码示例 create table student (select `studentNo`,`studentName` from hello);
删除表中的数据记录
# 基本语法 delete from 表名 [where 条件]; # 代码示例 delete from `student` where `studentNo`= 5;
[ 面试题 ] 删除表中的所有数据 — 两种方式:
# 方式一 delete from 表名; // 删除表中的所有数据,但自动增长值不会重置为1; # 方式二 truncate table 表名; // 删除表中的所有数据,自动增长值会重置为1; => 原理:直接将表删除,重新建表
更新表中的数据记录
- 更新所有记录的指定字段
updata 表名 set 字段1=值1,字段2=值2,...字段n=值n;
- 更新符合条件的记录的指定字段
# 基本语法 update 表名 set 字段1=值1,字段2=值2,...字段1=值1 [where 条件]; # 代码示例 update student set studentName='adrian' where studentNo=6;