~ 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;