码迷,mamicode.com
首页 > 数据库 > 详细

MySQL学习笔记(10)之select查询语句

时间:2015-11-09 01:49:49      阅读:297      评论:0      收藏:0      [点我收藏+]

标签:mysql   学习笔记   mysql入门   

select查询语句

格式:

Select 选项 字段列表 from、where like、group by、haring、order by、limit;

 

字段列表:select * from 表名;

  Select (字段名) from 表名;

 

字段部分可参与的运算。

Select 字段±数字 from 表名;

 

1、别名:

Select 字段名 as 别名 from 表名;

 

2、From子句:

查询多个表:

select 表1.字段1,表1.字段2...表2.字段1... From 表1,表2;

 

3、Where子句:查询条件,过滤数据。

当where为假时,不能进行查询。

可进行关系运算符和逻辑运算符。

还可以使用like匹配:

Like ‘%.....%’;

范围提取:

[In/not in/not like]

In (X,Y)第X行到第Y行。

Between A and B A和B之间的值。

Not between A and B 排除A和B之间的值。

 

4、Group by子句:进行分组操作,合并项。

Group by 字段1 查看字段1的排序且合并多余。

 

统计:select id字段,count(*) from 表名 group by id字段;

 

合并且统计:count(*)* = 每合并一项则+1(*++)

 

求和:sum(字段名)

 

求平均值:avg(字段名)

 

最大最小值:max(字段名)/min(字段名)

 

连接字段值:id--->1,2,3.....

Select group_comat(字段名) from 表名;

 

5、Haring子句:与where相似。

区别:

where:第一次查询时使用的过滤条件

Haring:针对已过滤并且分组好的数据再次过滤。

不支持字段别名。

 

6、Order by:排序。

Asc:升序

Desc:降序

默认升序。

 

7、Limit子句:限制记录数。

Limit start,num

Limit num = limit 0,num

Start:记录开始的索引号

Num:记录数

 

8、选项:

Distinct不重复记录

 

Union联合查询

把多个查询语句结合在一起。

两个查询语句的字段名不同,则使用第一个语句的。

如果联合里有子句,则分别用括号括起来。

联合时可用distinct选项。

 

9、表链接:

通过联接,可以从两个或多个表中根据各个表之间的逻辑关系来检索数据。

联接条件可通过以下方式定义两个表在查询中的关联方式:

 

内联接[inner] join
               仅当两个表中都至少有一个行符合联接条件时,内部联接才返回行,内部联接消除了与另一个表中的行不匹配的行.
         

外连接 [LEFT |RIGHT|FULL] outer join 
               外部联接会返回from子句中提到的至少一个表或视图中的所有行,只要这些行符合任何whereharing搜索条件。将检索通过左外部联接引用的左表中的所有行,以及通过右外部联接引用的右表中的所有行。在完全外部联接中,将返回两个表的所有行
                    其分为:
                    左外部联接,数据列表包括了满足查询条件的左边表的所有行。
                    右外部联接,数据列表包括了满足查询条件的右边表的所有行。
                    完全外部联接,数据包含了所有满足查询条件的
          

交叉联接cross join 
                    返回满足查询条件记录的笛卡尔积运算的集合(N×M)。
          

自联接表可以通过自联接与自身联接

 

NULL和联接:
                 联接表的列中的空值(如果有)互相不匹配。如果其中一个联接表的列中出现空值,只能通过外部联接返回这些空值(除非 WHERE 子句不包括空值)。


10、Select语句使用顺序:

Where-->group by -->haring -->order by-->limit

 

11、结果集的操作:

[allunion 运算符组合结果集
                 union 运算符使您得以将两个或多个select语句的结果组合成一个结果集。使用uninon运算符组合的结果集都必须具有相同的结构。而且它们的列数必须相同,并且相应的结果集列的数据类型必须兼容。
                默认情况下,union运算符将从结果集中删除重复的行。如果使用 ALL 关键字,那么结果中将包含所有行而不删除重复的行。
           

exceptintersect执行半联接操作 
            exceptintersect运算符使您可以比较两个或多个select语句的结果并返回非重复值。except运算符返回由except运算符左侧的查询返回、而又不包含在右侧查询所返回的值中的所有非重复值。
            intersect返回由intersect运算符左侧和右侧的查询都返回的所有非重复值。使用exceptintersect比较的结果集必须具有相同的结构。
          

公用表表达式(cte)递归查询
                 公用表表达式(cte)具有一个重要的优点,那就是能够引用其自身,从而创建递归cte。递归cte是一个重复执行初始cte以返回数据子集直到获取完整结果集的公用表表达式。
            

递归cte由下列三个元素组成:
                    例程的调用:递归 CTE 的第一个调用包括一个或多个由 union allunionexcept 或 intersect 运算符联接的 cte_query_definitions。由于这些查询定义形成了cte 结构的基准结果集,所以它们被称为“定位点成员”。
                     例程的递归调用。递归调用包括一个或多个由引用 cte 本身的 union all 运算符联接的cte_query_definitions。这些查询定义被称为“递归成员”。
                      终止检查。 终止检查是隐式的;当上一个调用中未返回行时,递归将停止。

 

11、汇总数据 :cube
          cube汇总数据:

cube运算符生成的结果集是多维数据集。多维数据集是事实数据的扩展。扩展是基于用户要分析的列建立的。这些列称为维度
              如:根据区域(areaid)汇总各商品(productid)的销售情况
             select areaid,productid,sum(total) from cw_orderdetail where ostate=1   group by areaid ,productid with  cube 
          

rollup汇总数据。

rollup 运算符生成的结果集类似于 cube 运算符生成的结果集。cube 生成的结果集显示了所选列中值的所有组合的聚合;rollup 生成的结果集显示了所选列中值的某一层次结构的聚合。
          

computecompute by汇总数据:
                     compute by子句使您得以用同一select语句既查看明细行,又查看汇总行。可以计算子组的汇总值,也可以计算整个结果集的汇总值。
          

for子句:
                      for子句用来指定browsexml选项
                      select id,name from content for xml auto,xmldata --

 


本文出自 “一起学习交流” 博客,请务必保留此出处http://chenhaolinux.blog.51cto.com/9609922/1710807

MySQL学习笔记(10)之select查询语句

标签:mysql   学习笔记   mysql入门   

原文地址:http://chenhaolinux.blog.51cto.com/9609922/1710807

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!