序列,insert 插入语法 ,创建视图语法

本文详细介绍了如何使用SQL进行行转列、列转行操作,结合案例展示了如何利用CASE WHEN进行数据聚合。同时,文章还探讨了创建和使用视图的基本语法,强调了视图在数据安全和性能上的优缺点。最后,讲解了序列的创建和应用,以及INSERT语句的多种插入方式,包括批量插入和条件插入。
摘要由CSDN通过智能技术生成

--行列转换
select *
from demo

select *
from kecheng

┌行转列
└列转行

--行转列
select id,name,
       max(case when course='语文' then score end) 语文,
       max(case when course='数学' then score end) 数学,
       max(case when course='英语' then score end) 英语,
       max(case when course='历史' then score end) 历史,
       max(case when course='化学' then score end) 化学      
from kecheng
group by id,name
order by id

参考:
select * from kecheng
--把kecheng表的course列行转列
--id,name肯定是要有的
select id,name,score     --这样看我们拿到的是score列的全部值,不能达到我们的目标,我们观察我们的目标结果集,是不是没有单独的score这个列,
from kecheng       --而是有course列中的元素,语文数学这些,那我们怎样才能将原来score列中的数据放到这些中呢,看到这个,分类讨论就想到了case when
      ↓
select id,name
sum(case course when '语文' then score end) 语文         --可以看到这样的结果集还是和我们想要的还有点不样,首先你们看这个列就非常的不美观,和我们目标差距很大,
       ,case course when '数学' then score end 数学    --这种情况我们一般都怎么处理来改变列名,给他们取个别名,按照目标结果集的样子来照葫芦画瓢,我们在运行一下,
       ,case course when '英语' then score end 英语    --是不是发现每个人的名字还是出现了很多次,而且仔细看看能发现,同样的名字在每一行都只有一个列中值,遇到多条数据累赘的时候,
       ,case course when '历史' then score end 历史    --我们应该想到聚合函数,向我们以前遇到的10部门有多少人,这里我们看目标结果是不是名字只有唯一值,那我们就可以用聚合函数把重复的多个名字聚合成一个名字
       ,case course when '化学' then score end 化学
from kecheng 
      ↓
select id,name
sum(case course when '语文' then score end) 语文         --这里报错了,聚合函数的查询列只能是聚合的列和用来聚合的列,我们这里只有用来聚合的列那这些case我们是不是该给他们处理成聚合的列,
       ,case course when '数学' then score end 数学    --从刚才的结果集看来,同一个id下的同一课成绩是不是只有一个数值,所以我们对他进行sum,min

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值