select-没有你想象那么难.
2012-06-13 13:24
363 查看
首先select的基本语法结构如下:
All 指明查询结果中可以显示值相同的列,且为系统默认Distinct 指明查询结果中如有值相同的列,则只显示其中的一列.
第二行语句中Into子句用于把查询结果存放到一个新建的表中new_table-name 指明新建表的名称
第三行语句中Form 子句指定需要查询的表注:只要Select中又要查询的列就必须使用From子句table_name / view_name 指明Select 语句要用到的表,视图等数据源,该列表中的数据表名和视图名之间使用逗号分隔. 第四行语句中 Where子句是制定数据检索的条件,以限制返回的数据行.
第五行语句中Group By 子句指定查询结果的分组条件.
第六行语句中 Having 子句指定分组搜索条件,通常与Group By子句一起使用,它与Where语句类似只是其作用对象不同,Where子句作用于表和视图,Having子句作用于组. 最后一行语句Order By 子句指定查询结果的排序方式,ASC是升序(系统默认),DESC 降序.
下面具体介绍一下Group By 子句
ALL:表示返回所有可能的查询结果组合,即使此组合中没有任何满足Where子句的数据,分组的统计列如果不满足查询条件,则将由null值构成其数据
Cube:除了返回由Group By子句指定的列外,还返回按组统计的行,返回的结果按分组的第一个条件列排序显示,以此类推。统计行包括了Group By子句指定的列的各种组合的数
据统计 Rollup:只返回第一个分组条件指定的列的统计行,改变列的顺序会使返回的结果发生变化
如何提高Select语句的效率
使用exists关键字检查结果集:不要用count(*)来检查结果集中是否包含行
使用标准连接代替嵌套查询:在执行嵌套查询时,SQL Server将执行内部的子查询,然后将查询结果返回给外部查询作为检索的数据源,最后执行外部的主查询。而在执行包含标准联接的查询时,SQL Server将要查询的仅仅是一个查询
有效避免整表扫描:使用索引,除了缺失索引外,可能导致整表扫描的另一种情况是在like子句的匹配条件的开始使用了%,如果这样将会调用整表扫描。
Select [All | Distinct] select_list [Into [new_table-name]] Form {table_name | view_name} [,{table_name2 | view_name2} ….,{table_name10|view_name10}] [Where search_conditions] [Group By group_by_list] [Having search_conditions] [Order By order_list [ASC| DESC]] 第一行语句中select_list表示需要检查的字段的列表,字段名称间用逗号分隔
All 指明查询结果中可以显示值相同的列,且为系统默认Distinct 指明查询结果中如有值相同的列,则只显示其中的一列.
第二行语句中Into子句用于把查询结果存放到一个新建的表中new_table-name 指明新建表的名称
第三行语句中Form 子句指定需要查询的表注:只要Select中又要查询的列就必须使用From子句table_name / view_name 指明Select 语句要用到的表,视图等数据源,该列表中的数据表名和视图名之间使用逗号分隔. 第四行语句中 Where子句是制定数据检索的条件,以限制返回的数据行.
第五行语句中Group By 子句指定查询结果的分组条件.
第六行语句中 Having 子句指定分组搜索条件,通常与Group By子句一起使用,它与Where语句类似只是其作用对象不同,Where子句作用于表和视图,Having子句作用于组. 最后一行语句Order By 子句指定查询结果的排序方式,ASC是升序(系统默认),DESC 降序.
下面具体介绍一下Group By 子句
ALL:表示返回所有可能的查询结果组合,即使此组合中没有任何满足Where子句的数据,分组的统计列如果不满足查询条件,则将由null值构成其数据
Cube:除了返回由Group By子句指定的列外,还返回按组统计的行,返回的结果按分组的第一个条件列排序显示,以此类推。统计行包括了Group By子句指定的列的各种组合的数
据统计 Rollup:只返回第一个分组条件指定的列的统计行,改变列的顺序会使返回的结果发生变化
如何提高Select语句的效率
使用exists关键字检查结果集:不要用count(*)来检查结果集中是否包含行
使用标准连接代替嵌套查询:在执行嵌套查询时,SQL Server将执行内部的子查询,然后将查询结果返回给外部查询作为检索的数据源,最后执行外部的主查询。而在执行包含标准联接的查询时,SQL Server将要查询的仅仅是一个查询
有效避免整表扫描:使用索引,除了缺失索引外,可能导致整表扫描的另一种情况是在like子句的匹配条件的开始使用了%,如果这样将会调用整表扫描。
相关文章推荐
- java——覆盖equals方法没有想象中那么简单
- 机器学习没有想象中的那么难
- ExtJS4.2:快捷键支持(没有你想象的那么简单)
- 人生感悟:你其实远没有自己想象中那么努力
- SCJP通过,没有想象中的那么开心
- 单例模式_没有想象中那么简单
- 其实,程序员没有我想象得那么简单(算是2016的简单总结吧...)
- 事情永远都没有想象中那么好
- 放纵的感觉其实没有想象的那么好!
- 手机其实没有你想象得那么安全!
- 制作数据地图:没有想象中的那么难!
- 上海IT培训达内科技告诉你学习语言没有想象中那么难
- 瑞耐斯实测:MLC转成SLC模式没有想象的那么好
- 勒索软件没有你想象中的那么挣钱
- 矩阵的平移(translate)没有想象的那么简单
- java——覆盖equals方法没有想象中那么简单
- 英语对话听力没有一些小孩想象当中那么难
- 写作其实没有你想象的那么难
- strlen源码,远没有想象中的那么简单、、、、
- 学习这事没有你想象那么难