DML(Data Manipulation Language)
一、数据的插入
语法:
单行插入:INSERT INTO 表名(字段名1,字段名2,...)values(值1,值2,...)
多行插入:INSERT INTO 表名(字段名1,字段名2,...)
values(值1,值2,...),values(值1,值2,...);
特点:
- 字段和值列表一一对应:包含类型、约束必须匹配
- 数值型的值,不用单引号;非数值型的值,必须使用单引号
- 字段顺序无要求
# 案例1:要求字段和值列表一一对应,且遵循类型和约束的限制
INSERT INTO stuinfo(stuid,stuname,email,stugender,age,majorid)
VALUES (1,'吴倩','女','qiqin@qq.com',12,1);
INSERT INTO stuinfo(stuid,stuname,email,stugender,age,majorid)
VALUES (3,'李宗盛','男','qiqin@qq.com',45,1);
# 案例2:可以为空字段如何插入
INSERT INTO stuinfo(stuid,stuname,email,smajorid)
VALUES (5,'齐鱼','qiqin@qq.com',2);
INSERT INTO stuinfo(stuid,stuname,email,age,smajorid)
VALUES (5,'齐鱼','qiqin@qq.com',NULL,2);
# 案例3:默认字段如何插入
# 方案1:字段名写上,值使用default
INSERT INTO stuinfo(stuid,stuname,email,stugender,majorid)
VALUES (7,'齐小鱼','qiqin@qq.com',DEFAULT,2);
# 方案2:字段名和值都不写
INSERT INTO stuinfo(stuid,stuname,email,majorid)
VALUES (7,'齐小鱼','qiqin@qq.com',2);
# 案例4:可以省略字段列表,默认所有字段
INSERT INTO stuinfo VALUES(8,'林忆莲','女','lin@126.com',12,3);
补充:设置自增长列
- 自增长列要求必须设置在一个键上,比如主键或唯一键
- 自增长列要求数据类型为数值型
- 一个表至多有一个增长列
CREATE TABLE gradeinfo(
gradeID INT PRIMARY KEY AUTO_INCREMENT,
gradeName VARCHAR(20)
);
INSERT INTO gradeinfo VALUES(NULL,'一年级'),(NULL,'二年级'),(NULL,'三年级');
INSERT INTO gradeinfo(gradeName) VALUES('四年级'),('五年级'),('六年级');
二、数据的修改
语法:
update 表名 set 字段名 = 新值,字段名 = 新值,...
where 筛选条件;
案例1:修改年龄<20的专业编号为3阿红,且邮箱更改为xx@qq.com
UPDATE stuinfo SET majorid = 3, email = 'xx@qq.com'
WHERE age < 20;
三、数据的删除
方式1:delete语句
语法:delete from 表名 where 筛选条件;
方式2:truncate语句
语法:truncate table 表名;
# 案例1:删除姓李所有信息
DELETE FROM stuinfo WHERE stuname LIKE '李%';
# 案例2:删除表中所有数据
TRUNCATE TABLE stuinfo;
【面试题】delete和truncate的区别
- delete可以添加where条件,truncate不能添加where条件,一次性删除所有数据
- truncate效率较高
- 如果删除带自增长的列的表
使用delete删除后,重新插入数据,记录从断点处开始
使用truncate删除后,重新插入数据,记录从1开始 - delete删除数据,会返回受影响的行数
truncate删除数据,不返回受影响的行数 - delete删除数据,可以支持事务回滚
truncate删除数据,不支持事务回滚