我对mysql的深入了解

      在对结构复杂的数据库时,我发现对数据库的子查询、进行存储过程以及建立视图尤其重要。现在针对我对自己学习的知识进行总结一下。

      一、对数据库的子查询

      1.例子:从两张表中查询想要的数据再对它们进行整合

              select name,t.total from stu1,

              (select sum(yield) as 'total' from stu2 ) as t

              where name='林六';

              可以说上面的一条sql语句为两条sql语句的组合,这用法的好处是即使表stu1、stu2两张表没关联,把select sum(yield) as 'total' from stu2语句付给t,然后再另一条sql语句上对t进行操作。

       2.group by 用法

           对数据库进行集合处理时,group by 非常好用,但是要清楚它的逻辑

       例子:

          select sum(mark) from stu group by name;

          算出每个同学的总成绩。

   3.union用法
     

SELECT '主原料' AS 'costItem',sum(preUnitconsume)AS'actualCost' FROM report_fivefactoranalysis WHERE elmtGroupName='主原料'

UNION

SELECT '燃料' AS 'costItem',sum(preUnitconsume)AS'actualCost' FROM report_fivefactoranalysis WHERE elmtGroupName='燃料'

UNION

SELECT '能源' AS 'costItem',sum(preUnitconsume)AS'actualCost' FROM report_fivefactoranalysis WHERE elmtGroupName='能源'

UNION

SELECT '辅助材料' AS 'costItem',sum(preUnitconsume)AS'actualCost' FROM report_fivefactoranalysis WHERE elmtGroupName='辅助材料'

UNION

SELECT '人工费用' AS 'costItem',sum(preUnitconsume)AS'actualCost' FROM report_fivefactoranalysis WHERE elmtGroupName='人工费用'

UNION

SELECT '修理费' AS 'costItem',sum(preUnitconsume)AS'actualCost' FROM report_fivefactoranalysis WHERE elmtGroupName='修理费'

UNION

SELECT '服务费' AS 'costItem',sum(preUnitconsume)AS'actualCost' FROM report_fivefactoranalysis WHERE elmtGroupName='服务费'

UNION

SELECT '一般厂务' AS 'costItem',sum(preUnitconsume)AS'actualCost' FROM report_fivefactoranalysis WHERE elmtGroupName='一般厂务';

4.存储过程

建立存储过程

CREATE PROCEDURE demo_out_parameter(OUT p_out int) 存储过程就是在数据库里面定义的函数 个人觉得得的好处: 数据自行在数据库内部处理,无需把数据从数据库取出后再处理,这样让数据处理更简单了些,还可以提高速率 5.视图 建立视图 CREATE VIEW teams(TEAMNO,PLAYERNO,DIVISION) AS SELECT  DISTINCT TEAMNO,CAPTAIN,DIVISION FROM result 视图可以把多张表的数据集合为一张虚表 优点:对数据的集合不花耗时间,实现简单,实表变,视图自动跟着变。 缺点:不能进行子查询 个人觉得:对操作难的数据库处理时,最好采用视图与存储过程结合,能用视图尽量用视图,尽量别用临时表。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值