计算机二级MySQL笔记(第五章 数据更新)


插入数据


insert into语句

-- 最好指定出字段名,增加代码可读性,并防止出错。
--插入一条记录
insert into tb_student(studentNo, sex, birthday)
values('2013110102', '男', '1996-11-30');

--插入多条记录
inert into tb_student(studentNo, sex, birthday)
values('2013110102', '男', '1996-11-30'),
	  ('2013110103', '女', '1990-1-20'),
	  ('2013110102', '男', '1995-12-25');

--插入查询结果
insert into tb_student_copy(studentNo, studentName)
select studentNo, studentName from tb_student;

replace into语句

replace into tb_student(studentNo, sex, birthday)
values('2013110102', '男', '1996-11-30');
-- replace 语句可以再插入数据之前,将表中与待插入的新纪录相冲突的旧记录删除,从而保证新纪录能正常插入

insertreplace的区别:
1、两者用法相同,区别在于如何处理重复记录。
2、如果一个表中建立了主键索引或唯一索引,当我们向表中使用已经存在的键值插入一条记录,insert会报错,replace会在插入数据之前,将表中与待插入的新纪录相冲突的旧记录删除,从而保证新纪录能够正常插入。
3、如果表中定义了外键,使用replace语句仍然会报错,此时应该先更新外键所依赖的表中的记录,再回头更新表中的记录。


修改数据记录


update语句

-- 修改特定记录
update tb_student
set studentName='黄涛'
where studentNo='201410210';

-- 不指定 where 条件,则更新所有数据
update tb_student
set score=score*1.05;

-- 带子查询的修改,where子句也可以嵌套子查询
update tb_student
set score=0
where courseNo=(select courseNo from tb_course where courseName='程序设计');

删除数据记录


delete from语句

--删除特定记录
delete from tb_student
where studentName='王五';
-- where子句同样可以是嵌套查询
-- 如果不指定 where子句,将删除所有记录

truncate语句

truncate tb_student; -- 删除表中所有记录

deletetruncate的区别:
1、delete语句每次从表中删除一行,并同时将该行删除操作作为事务保存在日志中,以便回滚操作;truncate则一次性删除所有数据,并且不记录在日志中,所以不可恢复。
2、 delete操作不会减少表或索引所占的空间;truncate操作表和索引所占的空间会恢复到初始大小。
3、应用范围:truncate只能针对table(表),delete可以是table(表)或view(视图)。


课后习题


在这里插入图片描述
在这里插入图片描述
1、使用insert语句向各表中插入如下记录

inert into S(SNO, SNAME, STATUS, CITY) values
('S1', 'Smith', 20, 'London'),
('S2', 'Jones', 10, 'Paris'),
	  		...
('S5', 'Adams', 30, 'Athens');

--注意这里的 S6,status字段为空值,所以单独插入该行记录
insert into S values('S6', 'Brown', 'New York');

-- P 表和 SP 表的插入操作与 S 表相同,此处省略。

2、将表P中蓝色零件的重量增加20%

update P set WEIGHT=WEIGHT*1.2
where COLOR='Blue';

3、将表S中状态为空值的供应商信息删除

delete from S
where status is null;

4、删除没有供应商零件的供应商信息

--书中的 SPJ 应该是个错误,且个人觉得应该选取不重复的SNO,不过不影响结果
delete from S where SNO not in
(select distinct SNO from SP);
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值