union和union all & truncate语句&视图

本文详细介绍了SQL中的UNION和UNION ALL操作,用于合并查询结果,以及在报表制作和数据转换中的应用。同时,讲解了TRUNCATE语句在清空表数据时的高效性及其局限性。此外,讨论了视图作为虚拟表的功能,以及如何通过视图实现权限控制和简化查询。最后,提到了存储过程和触发器在业务流程封装和表操作自动化中的角色。
摘要由CSDN通过智能技术生成

一、union和union all

对两个查询结果集的行合并,union在合并时去掉重复的,union all合并不去重复的

select * from student
UNION all
select * from student

两个结果集union时,列数量一定要相同。

作用:

1.制作报表时,将一些结果集合并

select sname,amt from student
UNION all
select '合计',sum(amt) from student

2.进行列转行

-- 循环 score表中的 name
insert into score2(name,xueke,score)
(select name,'语文',yuwen from score where name = '小明')
union
(select name,'数学',shuxue from score where name = '小明')
union
(select name,'英语',yingyu from score where name = '小明')

二、truncate语句

清楚表中的数据,保留表结构,如果要删除表中的数据,用truncate效率高于delete,因为delete是行级操作,truncate属于表级操作。

truncate不能按条件删除,不能进行事务处理、回滚操作

truncate、delete和drop之间的区别

truncate写法

truncate table student2

用户的创建和权限的分配

create user ww IDENTIFIED by '000000'
grant all privileges on java2113.* to ww identified by '000000';

三、视图(view)

试图是一张虚拟的表,创建视图时定义一个查询语句,查询语句的结果就是视图的数据。也就是当检索了视图,就是执行了定义的查询语句,检索结果集。

视图的数据可以进行查询、修改、删除、增加的操作

视图的作用:

1.项目中多次使用到一些相同的复杂查询语句,复杂查询语句定义在视图中。

2.项目中对表的部分列进行权限的开放,将部分列的查询结果创建在视图中。

create or replace view v_student AS
select s.id,s.sname,c.id cid from student s inner join class c on s.classid = c.id
create or replace view v_student2 AS
select classid,avg(amt) avgamt from student group by classid
select * from v_student2
select * from v_student
update v_student set address = '中国黑龙江哈尔滨' where id = 1

四、存储过程

创建一个存储过程,存储过程中包含了一个SQL语句块,在执行这个存储过程时,就执行了那个SQL语句块,通常 可以使用存储过程封装一些业务流程。但不好维护。

五、触发器

可以为表创建一些触发器,例如创建update、insert、delete的触发器,当对表进行了update、insert、delete操作时,就会触发触发器,执行触发器中的SQL语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aigo-2021

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值