DML语言(数据库操纵语言)
- 插入语句:
insert into 表名 (字段1,字段2,字段3...) values ('值1','值2','值3',...)
--如果不写表的字段(字段省略),值会一一匹配
insert into 表名 values('值1','值2','值3',...)
--插入多个值
insert into 表名 (字段1,...) values ('值1',...),('值2',...)
示例:
--标准插入数据
insert into `student` (`id`,`name`,`pwd`,`sex`,`birthday`,`address`,`email`) values(6,'chen',123456,'男','1998-10-18 10:44:55','广东省','[email protected]')
--省略字段
insert into `student` values(1,'chen',123456,'男','1998-10-18 10:44:55','广东省','[email protected]')
--插入多个字段
insert into `student` values(2,'chen',123456,'男','1998-10-18 10:44:55','广东省','[email protected]'),(3,'chenhui',123456,'女','1998-11-18 10:44:55','广东省','[email protected]'),(4,'c',123456,'男','1998-12-18 10:44:55','广东省','[email protected]')
- 修改语句:
--指定条件修改
update 表名 set 字段=值 where (字段+条件)
--不指定条件的情况下,会修改表的所有值
update 表名 set 字段=值
--修改多个属性值,则用逗号隔开
update 表名 set 字段1=值,字段2=值 where (条件)
示例:
--根据条件修改
update `student` set `name`='sss' where id between 2 and 4;
--不指定条件修改表的所有值
update `student` set `name`='chen' ;
--修改多个属性值
update `student` set `name`='chen',`pwd`=66666 where `id`=1 or `id`=3 ;
- 删除语句:
--删除指定条件数据
delete from 表名 where 条件
--删除表的全部数据
delete from 表名
--删除表的全部数据(推荐使用)
truncate table 表名
测试示例:
--删除指定条件数据
delete from `student` where `id`=1
delete 和truncate删除表数据的区别
- 相同点:都能删除数据,不会删除表的结构
- 不同点:truncate删除表数据后会重置自增列,计数器会归零;不会影响事务
测试示例:
- 使用delete删除表数据后:
删除前:
删除后添加一个数据查看自增索引数:
insert into `student` (`name`,`pwd`,`sex`,`birthday`,`address`,`email`) values('chen',123456,'男','1998-10-18 10:44:55','广东省','[email protected]')
总结:从上面可以看出,当表数据用delete删除后,添加一条数据后,自增数并未重置为0,而是继续自增
- 使用truncate删除表数据后
删除前:
删除后,添加一个数据:
insert into `student` (`name`,`pwd`,`sex`,`birthday`,`address`,`email`) values('chen',123456,'男','1998-10-18 10:44:55','广东省','[email protected]')
总结:当用truncate删除表数据时,自增数会重置为0
delete删除问题也和数据库引擎有关
当用delete删除数据表数据时,重启数据库
- InnoDB引擎: 自增数会重置,从1开始(即存在内存中,断开即失)
- MyISAM引擎:继续从上一个自增量开始(即存在文件中,不会丢失)