再次认识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;

   




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

再次认识Spring(二)

AOP(Aspect Oriented  Programing) 面向切面编程 AOP  采取横向抽取的机制 取代了传统的纵向集成体系  重复性代码(性能监视  事务管理 安全检查  缓存) Join...
  • u010094934
  • u010094934
  • 2016年12月14日 00:12
  • 146

再次认识mysql(一)

mysql:管理数据的软件 mysqld.exe:服务器端 mysql.exe:客户端 sql:structured query language  结构化查询语言  分为三个部分 dml dd...
  • u010094934
  • u010094934
  • 2016年08月29日 17:03
  • 274

再次认识Hibernate(二)

Hibernate的持久化类状态 持久化类:实体类  与数据库表建立了映射  Hibernate中的持久化类有三种状态 transient 瞬时态(临时态) 持久化对象没有唯一标识oid    没有纳...
  • u010094934
  • u010094934
  • 2016年10月17日 00:44
  • 157

再次认识Struts2(二)

hh
  • u010094934
  • u010094934
  • 2016年09月04日 00:13
  • 103

再次认识mysql(四)

视图  view 虚拟表(sql的查询结果) 创建  create view vuser as  select cat_id,avg(shop_price) as pj  from goods gr...
  • u010094934
  • u010094934
  • 2016年08月31日 22:53
  • 149

再次认识mysql(五)

mysql常用函数 floor(x) 返回小于x的最大整数值 rand(x) 返回0到1之间的随机数 position(substr in str)  返回substr的位置 now() 返回...
  • u010094934
  • u010094934
  • 2016年08月31日 23:29
  • 91

再次认识mysql(三)

创建表
  • u010094934
  • u010094934
  • 2016年08月31日 13:19
  • 177

再次认识mysql(七)存储过程

存储过程   将若干条sql封装起来执行 将此过程存储在数据库中     创建语法  create procedure procedureName()   查看已经存在的   show procedu...
  • u010094934
  • u010094934
  • 2016年10月01日 19:41
  • 95

再次认识mysql(六)触发器

触发器(Trigger) 进行数据库开发时,有 当某些数据变化时,希望其他相关数据改变  的需求 利用触发器 能够完成这样的动作   触发器是一类特殊的事务,可以监视某种数据操作(insert/...
  • u010094934
  • u010094934
  • 2016年09月27日 00:09
  • 113

《数据挖掘》学习笔记——认识数据(1)

一、数据属性定义:属性即一个数据的字段,在不同的领域有不同的等价叫法,例如:维度、特征、变量。 从具体事例角度看,数据的属性就像Excel表格的列,比如:...
  • qqmindyourwill
  • qqmindyourwill
  • 2016年05月19日 20:42
  • 384
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:再次认识mysql(二)
举报原因:
原因补充:

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