DML(Data Manipulation Language)数据操纵语言:
涉及到的关键字:insert update delete
对表中的数据的增删改
#DML语言
#一、数据的插入
/*
语法:
插入单行:
insert into 表名(字段名1,字段名2 ,...) values (值1,值2,...);
插入多行:
insert into 表名(字段名1,字段名2 ,...) values
(值1,值2,...),(值1,值2,...),(值1,值2,...);
特点:
1、字段和值列表一一对应
包含类型、约束等必须匹配
2、数值型的值,不用单引号
非数值型的值,必须使用单引号
3、字段顺序无要求
*/
#一)插入单行
#案例1:要求字段和值列表一一对应,且遵循类型和约束的限制
INSERT INTO `stuinfo`(`stuid`,`stuname`,`stugender`,`email`,`age`,`majorid`)
VALUES(1,'熊红','男','18787183@qq.com',12,1);
INSERT INTO `stuinfo`(`stuid`,`stuname`,`stugender`,`email`,`age`,`majorid`)
VALUES(2,'吴京','男','18787183@qq.com',45,1);
INSERT INTO `stuinfo`(`stuid`,`stuname`,`stugender`,`email`,`age`,`majorid`)
VALUES(3,'李宗盛','男','18787183@qq.com',45,2);
#案例2:可以为空字段如何插入
#方案1:字段名和值都不写
INSERT INTO `stuinfo`(`stuid`,`stuname`,`email`,`majorid`)
VALUES(4,'齐秦','huiew@qq.com',1);
#方案2:字段名写上,值使用null
INSERT INTO `stuinfo`(`stuid`,`stuname`,`stugender`,`email`,`age`,`majorid`)
VALUES(5,'齐与','女','huiew@qq.com',NULL,2);
#案例3:默认字段如何插入
#方案1:字段名写上,值使用default
INSERT INTO `stuinfo`(`stuid`,`stuname`,`stugender`,`email`,`majorid`)
VALUES(6,'齐小雨',DEFAULT,'huiew@qq.com',2);
#方案2:字段名和值都不写
INSERT INTO `stuinfo`(`stuid`,`stuname`,`email`,`majorid`)
VALUES (7,'齐小','huiew@qq.com',2);
#案例4:可以省略字段列表,默认所有字段
INSERT INTO `stuinfo` VALUE(8,'郭顶','女','huwque@qq.com',32,1);
#二)插入多行
INSERT INTO `stuinfo` VALUE(9,'郭多','男','huwque@qq.com',32,1),(10,'郭饿','女','huwque@qq.com',32,2);
-- ################设置自增长列
/*
1、自增长列要求必须设置在一个键上,比如主键或唯一键
2、自增长列要求数据类型为数值型
3、一个表至多有一个自增长列
*/
#1、用图形界面勾选自增
INSERT INTO `stuinfo` VALUE(NULL,'小黄','女','huwque@qq.com',32,1);
#2、通过代码
CREATE TABLE gradeinfo(
gradeID INT PRIMARY KEY AUTO_INCREMENT,
gradeName VARCHAR(20)
);
SELECT *FROM `gradeinfo`;
INSERT INTO `gradeinfo` VALUES(NULL,'1年级'),(NULL,'2年级'),(NULL,'3年级');
INSERT INTO `gradeinfo`(`gradeName`) VALUES('4年级'),('5年级'),('6年级');
#二、数据的修改
/*
语法:
update 表名 set 字段名 = 新值,字段名=新值,...
where 筛选条件;
*/
#案例1:修改年龄<20的专业编号为2号,且邮箱更改为 xx@qq.com
UPDATE `stuinfo` SET `majorid` = 2,`email` = 'xx@qq.com'
WHERE `age`<20;
#三、数据的删除
/*
方式1:delete语句
语法:delete from 表名 where 筛选条件;
一删删一行
方式2:truncate语句
语法:truncate table 表名;
删除数据,不删除表结构
*/
SELECT * FROM stuinfo;
#案例1:删除姓李所有信息
DELETE FROM stuinfo WHERE stuname LIKE '李%';
#案例2:删除表中所有数据
TRUNCATE TABLE stuinfo;
SELECT * FROM gradeinfo;
DELETE FROM gradeinfo WHERE gradeID = 8;
INSERT INTO gradeinfo(gradename)VALUES('七年级'),('八年级');
#delete和truncate的区别
1、DELETE可以添加WHERE条件
TRUNCATE不能添加WHERE条件,一次性清除所有数据
2、TRUNCATE的效率较高
3、如果删除带自增长列的表,使用DELETE删除后重新插入数据,记录从断点开始;
使用TRUNCATE删除后重新插入数据,记录从1开始
4、DELETE删除数据,会返回受到影响的行数
TRUNCATE删除数据,不返回受影响的行数
5、DELETE删除数据,可以支持事务回滚
TRUNCATE删除数据,不支持事务回滚