1.DML语言
INSERT (添加数据语句)
UPDATE (更新数据语句)
DELETE (删除数据语句)
2.INSERT命令
INSERT INTO 表名[(字段1,字段2,字段3,…)] VALUES(‘值1’,‘值2’,‘值3’)
两种方式
1.一一对应 字段名和添加的数据一个个对应起来
2.省略字段名 :但添加的值务必与表结构,数据列,顺序相对应,且数量一致
3.没有写的也可,默认添加
4.第二种注意主键的添加,别丢
INSERT INTO `student`(`name`,`pwd`,`sex`)
VALUES('章三','112233','男'),('李四','112233','女'),('王武','112233','男')
INSERT INTO `student`
VALUES(5,'王强','888888','男','2000-02-03','内蒙古','123@qq.com')
3.update命令
语法:
UPDATE 表名 SET column_name=value [,column_name2=value2,…] [WHERE condition];
注意 :
column_name 为要更改的数据列
value 为修改后的数据 , 可以为变量 , 具体指 , 表达式或者嵌套的SELECT结果
condition 为筛选条件 , 如不指定则修改该表的所有列数据
案例
将id=1的那一行修改。没有ID=1,全部更新了
UPDATE `student` SET `name` ='王羲之',`email`='123456@qq.com' WHERE id =1;
修改id为2-4的那一行
UPDATE `student` SET `name` ='王羲之',`email`='123456@qq.com' WHERE id BETWEEN 2 AND 4;
修改name是 xxx 并且 性别为x的那几行
UPDATE `student` SET `name` ='王羲之123',`email`='123456@qq.com' WHERE `name`='王羲之' AND `sex`='女'
修改为本地时间
UPDATE `student` SET `birthday` = CURRENT_TIME WHERE id BETWEEN 1 AND 4
4.删除数据
DELETE命令
DELETE FROM 表名 [WHERE condition];
注意:condition为筛选条件 , 如不指定则删除该表的所有列数据
TRUNCATE命令
TRUNCATE [TABLE] table_name;
作用:用于完全清空表数据 , 但表结构 , 索引 , 约束等不变 ;
注意:区别!!
相同 : 都能删除数据 , 不删除表结构 , 但TRUNCATE速度更快
不同 :使用TRUNCATE TABLE 重新设置AUTO_INCREMENT计数器
使用TRUNCATE TABLE不会对事务有影响
案例:创建一个表
CREATE TABLE `test` (
`id` INT(4) NOT NULL AUTO_INCREMENT,
`coll` VARCHAR(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
INSERT INTO test(coll) VALUES('row1'),('row2'),('row3');
第一次测试
DELETE FROM test;
在添加数据 ID会从4开始
第二次测试
TRUNCATE TABLE test;
id从一开始
结论
truncate删除数据,自增当前值会恢复到初始值重新开始;不会记录日志.
– 同样使用DELETE清空不同引擎的数据库表数据.重启数据库服务后
– InnoDB : 自增列从初始值重新开始 (因为是存储在内存中,断电即失)
– MyISAM : 自增列依然从上一个自增数据基础上开始 (存在文件中,不会丢失)