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子句中提到的至少一个表或视图中的所有行,只要这些行符合任何where或haring搜索条件。将检索通过左外部联接引用的左表中的所有行,以及通过右外部联接引用的右表中的所有行。在完全外部联接中,将返回两个表的所有行
其分为:
左外部联接,数据列表包括了满足查询条件的左边表的所有行。
右外部联接,数据列表包括了满足查询条件的右边表的所有行。
完全外部联接,数据包含了所有满足查询条件的行。
交叉联接:cross join
返回满足查询条件记录的笛卡尔积运算的集合(N×M)。
自联接:表可以通过自联接与自身联接。
NULL和联接:
联接表的列中的空值(如果有)互相不匹配。如果其中一个联接表的列中出现空值,只能通过外部联接返回这些空值(除非 WHERE 子句不包括空值)。
10、Select语句使用顺序:
Where-->group by -->haring -->order by-->limit
11、结果集的操作:
[all] union 运算符组合结果集:
union 运算符使您得以将两个或多个select语句的结果组合成一个结果集。使用uninon运算符组合的结果集都必须具有相同的结构。而且它们的列数必须相同,并且相应的结果集列的数据类型必须兼容。
默认情况下,union运算符将从结果集中删除重复的行。如果使用 ALL 关键字,那么结果中将包含所有行而不删除重复的行。
except和intersect执行半联接操作 :
except和intersect运算符使您可以比较两个或多个select语句的结果并返回非重复值。except运算符返回由except运算符左侧的查询返回、而又不包含在右侧查询所返回的值中的所有非重复值。
intersect返回由intersect运算符左侧和右侧的查询都返回的所有非重复值。使用except或intersect比较的结果集必须具有相同的结构。
公用表表达式(cte)递归查询
公用表表达式(cte)具有一个重要的优点,那就是能够引用其自身,从而创建递归cte。递归cte是一个重复执行初始cte以返回数据子集直到获取完整结果集的公用表表达式。
递归cte由下列三个元素组成:
例程的调用:递归 CTE 的第一个调用包括一个或多个由 union all、union、except 或 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 生成的结果集显示了所选列中值的某一层次结构的聚合。
compute和compute by汇总数据:
compute by子句使您得以用同一select语句既查看明细行,又查看汇总行。可以计算子组的汇总值,也可以计算整个结果集的汇总值。
for子句:
for子句用来指定browse或xml选项
select id,name from content for xml auto,xmldata --
本文出自 “一起学习交流” 博客,请务必保留此出处http://chenhaolinux.blog.51cto.com/9609922/1710807
原文地址:http://chenhaolinux.blog.51cto.com/9609922/1710807