mySQL笔记(十二):DML语言

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删除数据,不支持事务回滚

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值