5.1 insert语句
5.1.1 插入全部字段
insert into 表名 values(值1,值2,值3,....);
5.1.2 插入部分字段
insert into 表名(字段1,字段2,字段3,...) values(值1,值2,值3,...);
5.1.3 插入多条数据
insert into 表名[(字段1,字段2,字段3.....)]
values
(值1,值2,值3,...),
(值1,值2,值3,...),
(值1,值2,值3,...),
......
5.1.4 insert与select的使用
insert into 表名1[(字段1,字段2,字段3,...)]
select 字段1,字段2,字段3... from 表名2;
例子:
insert into message(`id`,`name`)
select `id`,`name` from student;
5.2 replace语句的使用
5.2.1 repalece与insert的区别
若一张表中存在主键约束或唯一约束,当要插入的数据的主键字段或唯一约束字段,与表中原有数据冲突,那么insert会插入失败,此时需要用replace语句进行插入。插入时,会删除表中原有的冲突记录,然后再插入新记录。
例子如下:
create table if not exists student(
id int(8) not null auto_increment,
`name` char(20) not null,
primary key(`id`)
)Engine=InnoDB default charset = utf8;
上述语句创建了一个 student 表,其中有 学号 与 姓名 两个字段,其中学号作为主键。
假设表内数据如下:
id | name |
---|---|
123456 | 张三 |
此时我们执行一下语句便会报错:
insert into student values(123456,'李四');
错误:1062 - Duplicate entry '123456' for key 'PRIMARY'
但是此时我们使用 replace 语句便可以插入成功:
replace into student values(123456,'李四');
输出信息:
> Affected rows: 2
> 时间: 0.002s
表内数据如下:
id | name |
---|---|
123456 | 李四 |
5.2.2 语法
语法一:
replace into 表名[字段1,字段2,字段3,...] values(值1,值2,值3,...);
语法二
replace into 表名1[字段1,字段2,字段3,....] select 字段1,字段2,字段3,... from 表名2;
语法三
replace into 表名 set 字段1=值1,字段2=值2,字段3=值3,...
5.3 修改表记录
5.3.1 语法
update 表名 set 字段1=值1,字段2=值2,字段3=值3,...
where 条件;
例子:
update student set `name`='王二麻子' where id=123456;
5.3.2 删除表记录
delete from 表名 where 条件;
例子:
delete from student where id=1;
5.3.3 清空表记录
Truncate [table] 表名;
例子:
truncate table student;
注意:
1.使用truncate清空表记录之后,表内的auto_increment计数器将回到初始值;
2.truncat语句并不适用于参与视图和索引的表,此时,需要使用delete语句删除记录。
3.truncate语句比delete语句耗费的系统与事务日志资源少,delete每删除一条记录,都会向事务日志中插入一条记录。
随便一提,删除表的语句是:
drop talbe 表名;
例子:
drop table student;
2021.07.24