数据库——DML(数据操作语言)
DML语言:数据操作语言
- insert 添加
- update 修改
- delete 删除
insert 添加
-- 插入语句(添加)
-- insert into 表名([字段名1,字段名2,字段名3])values('值1'),('值2'), ('值3')
-- 写插入语句,数据与字段要一一对应
INSERT INTO `grade`(`gradename`) VALUES ('大三')
-- 由于主键自增我们可以省略字段 相当于INSERT INTO `grade`(`gradeid`,`gradename`) VALUES('11114','大七')
INSERT INTO `grade` VALUES('11114','大七')
INSERT INTO `grade`(`gradeid`,`gradename`) VALUES('11114','大七')
-- 插入多个字段,用逗号隔开即可
INSERT INTO `grade`(`gradename`)
VALUES ('大一') , ('大二')
INSERT INTO `student`(`name`) VALUES ('张三')
INSERT INTO `student`(`name`) VALUES ('李四'), ('王五')
INSERT INTO `student`(`name`,`pwd`,`sex`,`birthday`,`address`,`gradeid`,`email`)VALUES('狗子','aaaaa','男','2020-3-02','赣州','111','email')
-- 省略字段
INSERT INTO `student`VALUES('13','张三','aaaaa','男','2020-3-12','广州','222','email')
update 修改
-- 修改语句 表名 属性 条件
UPDATE `student` SET `name`='狂铁' WHERE id=1;
UPDATE `student` SET `name`='虞姬' WHERE id <>2;
-- 如果不指定条件,会改变所有的列
UPDATE `student` SET `name`='夏洛特'
-- 修改多个属性,用逗号隔开
UPDATE `student` SET `pwd`='654321' ,`sex`='女' WHERE id=2;
-- 修改属性的值为变量 CURRENT_TIME 当前的时间
UPDATE `student` SET `birthday` = CURRENT_TIME WHERE `name` ='虞姬';
delete 删除
-- 用delete删除表
-- 删除指定命令 不加条件就会删除整个表
DELETE FROM `student` WHERE id=1;
-- 用TRUNCATE删除表 完全清空一个数据库表,表的结构和索引不会变
TRUNCATE `student`;
-- 用TRUNCATE不能删除指定条件的数据, truncate的工作机制就是直接清空表的内容,例如,在Oracle中实际上只是将高水位线设为0,并没有对实际的数据进行操作,所以这个操作就很快。既然如此,也就不可能实现你所说的有条件的删除了。
-- 测试DELETE和TRUNCATE的区别
-- 用delete删除表
INSERT INTO `test`(`coll`) VALUES('1'),('2'),('3') -- 此时表test的主键id自动增量为4
DELETE FROM `test`; -- 还是4,用delete不会影响自增
INSERT INTO `test`(`coll`) VALUES('1'),('2'),('3')-- 再执行一次,由于自增没变,所以id是从4开始
-- 用TRUNCATE删除表
TRUNCATE `test`;-- 表test的主键id自动增量为1,重置了
-- 补充
-- 用delete删除表的拓展:用delete删除后再重启数据库,如果引擎不一样,那重启的现象也不一样
-- 如果引擎是InnoDB ,自增列会重1开始(因为数据是存储在内存中,断电即失)
-- 如果引擎是MYISAM,继续从上一个自增量开始(因为是存在文件中的,不会丢失)