再次认识mysql(二)

原创 2016年08月29日 17:35:12

group 分组与统计函数

max()求最大  min()求最小   sum()求总和  avg()求平均   count()求行数 有多少行

select sum(goods_num*shop_price) from goods; 查询库存所有的价值金额 

select cat_id,avg(shop_price) from goods group by cat_id; 根据id分组  计算平均值

select cat_id,count(*) from goods group by cat_id;  查询每个栏目下商品数量

select cat_id,max(shop_price) from goods group by cat_id;查询每个栏目下最贵的商品价格


having:对结果集的再次筛选

select goods_id,goods_name,<market_price-shop_price> as jieyue from goods where jieyue>300;  典型错误 where会在磁盘中进行筛选  发现并没有jieyue 列

select goods_id,goods_name,<market_price-shop_price> as jieyue from goods having jieyue >300;


查询成绩2门及2门以上不及格的 学生 的平均分

思路:以结果为导向 先查找 所有学生 平均分和不及格数目    再在结果集中寻找2门以上挂科的

select name,avg(score) as pingjunfen,sum(score<60) as guake  from user  group by name   having  guake>=2;


order by 排序

利用行字段排序

升序 默认 asc       降序 desc 

多列排序  逗号隔开

select goods_id,cat_id,goods_name from goods order by cat_id  asc,shop_price,goods_id desc;


limit 限制取出条目

常用于分页

select  goods_id from goods order by shop_price desc  limit 3; 取出前三名价格最高的

select  goods_id from goods order by shop_price desc  limit 2,3; 取出  前  第三名  到第五名 价格的商品


查询陷阱

where group  by  having order by limit   五种限定词的顺序不可颠倒


子句查询

寻找最新的商品

1   select goods_id from goods order by goods_id dedc limit  0,1;

2   select goods_id from goods where  goods_id=(select max(goods_id) from goods);   where类型子查询  内层查询结果是外层的比较条件

from类型子查询   

select goods_id from (select goods_id from  goods order by cat_id asc,goods_id desc) group by cat_id;

exist类型子查询

select *from category where exists (select *from goods where goods.cat_id=cate.cat_id);


内连接

select * from table1 inner join table2  on table1.xx=table2.xx;

左右连接

select * from table1 left join table2 on table1.xx=table2.xx;    侧重于显示左侧  查不到 的null

select *from table2 right join table2 on table1.xx=table2.xx;   侧重于显示右侧  查不到的null


单张表连续左连接

select mid,t1,tname as hteam,mres,t2.tname as gteam,matime

            from m inner join t as t1 on m.hid=t1.tid inner join t as t2  on m.gid=t2.tid

            where matime between '2006-6-1'and '2006-7-1';


union查询 

  将多条sql查询结果合并成一个结果集  必须满足 各语句取出的列数相同   列名称以第一条为准   

   完全相等的列 将会被合并   合并过程非常耗时

   不丢失列  union  all       

   select  id,sum(num)  from (select *from a union all select *from b) as tmp group by id;

   




版权声明:本文为博主原创文章,转载请注明出处,谢谢!

再次认识mysql(四)

视图  view 虚拟表(sql的查询结果) 创建  create view vuser as  select cat_id,avg(shop_price) as pj  from goods gr...

再次认识Hibernate(二)

Hibernate的持久化类状态 持久化类:实体类  与数据库表建立了映射  Hibernate中的持久化类有三种状态 transient 瞬时态(临时态) 持久化对象没有唯一标识oid    没有纳...

zhphp framework (十二) 数据链接层,首先pdo,其次mysqli,再次mysql接口

linux下完全删除mysql并再次安装

http://wuyanzan60688.blog.163.com/blog/static/12777616320122921232402/ 与很多软件安装一样,如果是第二次安装,比第一...
  • llwan
  • llwan
  • 2014年11月25日 21:42
  • 3360

HIVE再次尝试 用 Mysql 环境搭建 以及 mysql中文乱码完美解决

上文说道hive用默认的Derby作为metadata的存放处,但是这个缺点比较多,只能同时让一个用户登陆,不能用于真正的集群,下面讲解用mysql作为数据的搭建方法。 第一步:安装mysql 因...
  • on_way_
  • on_way_
  • 2013年09月17日 18:10
  • 2392

mysql 的卸载后再次安装,以前的mysql服务还在的问题原因和解决办法

我是mysql的初学者,在第一次安装mysql时因为配置不对的问题,我把mysql卸载后再次安装后,安装到要输入服务器名字时,使用默认名字会出错,我就随便改了个名字就可以继续安装,安装完成后。我打开服...

mysql root用户没有超级权限或忘记密码 【为root设置密码后,再次登录,就看不到mysql数据库了,原来】

为root用户设置密码这样才正确: pdate user set password = password('111111') where user='root'; 文章来源:http://liangf...

再次认识Hibernate(三)

Hibernate

对你的再次认识——机房的整体分析

从开始机房到现在已经过去了不少时间,可我的进度始终很慢,感觉自己对机房的了解还不够,师傅也一再强带这一点,我觉得是时候再次总结总结了。(个人总结,有问题谢谢指出!)      先来看看三大块中每个操...

再次认识Struts2(四)

ognl object-graph navigation  功能强大的表达式语言 struts2默认表达式语言 valueStack 值栈 作用:将action中的数据携带到jsp页面上进行展示...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:再次认识mysql(二)
举报原因:
原因补充:

(最多只允许输入30个字)