【SQL Server 第2篇】SQL数据查询

2016-08-03  本文已影响70人  晟文刀

查询是SQL语言的中心内容,而用于表示SQL查询的select语句,是SQL语句中功能最强大也是最复杂的语句。

with子句

用于指定临时命名的结果集,这些结果集称为公用表表达式(CTE)。
该表达书源自简单查询,并且在单条select、insert、update、delete语句的执行范围内定义。
语法格式:

              [ with 指定临时命名的结果集 [,……n] ]
              指定临时命名的结果集>::=
                      公用表表达书的有效标识符[ (在公用表达式中的指定列名[,……])]
                as
                     (指定一个其结果集填充公用表达式的select语句)

举例:
创建公用表表达式,计算雇员数据表中年龄字段中每一年龄员工的数量。

               use 数据库
                with agereps(age,agecount) as
              (
                   select 
                     age,
                     count(*)
                  from 雇员表 as agereports
                  where age is not null
                  group by age     
             )
               select  age,agecount
               from agereps

创建公用表表达式,计算雇员数据表中员工age的平均值

              use 数据库
              with avgagereps(age,agecount) as
              (
              select 
                  age,
                  count(*)
              from 雇员表 as agereports
              where age is not null
              group by age
              )
             select avg(age) as [avgage of 雇员表]
             from avgagereps

select……from子句

该语句常用的行聚合函数有

into子句

创建新表并将来自查询的结果行插入新表中
use 数据库
select
id,
age
into 新的雇员表
from 雇员表

where子句

1、逻辑运算符
not、and、or
use 数据库
select
name
sex
age
from 雇员表
where sex='女' and not age>=20
or sex='男' and age<=23
--查询雇员表中年龄不大于等于20的女员工,或者年龄小于等于23的男员工。
2、比较运算符
=
<>、!=
<、<= 、>、>=、!<、!>
3、like关键字
%
_
[]
[^]
use 数据库
select
*
from 雇员表
where name like '%李'
or name like '王_行'
and age like 2[2-4]
or age like 3[^3-4]
--查询雇员表中姓李,或者姓王某行,并且年龄在22-24或者年龄不在33-34岁之间的员工。

in 关键字

all、some、any关键字

需要与比较运算符和子查询一起使用

all,表示大于条件的每一个值,即大于条件的最大值
some,表示大于条件的一些值
any,表示至少大于条件的一值,即大于条件的最小值
use 数据库
select * from 雇员表
where age >all
(select age from 雇员表 where sex='男')

exists关键字

指定一个子查询,测试行是否存在

group by子句

按一个或多个列或表达式的值将一组选定行组合成一个摘要行集,针对每一组返回一行。

having子句

指定或聚合的搜索条件
having只能与select语句一起使用。having通常在group by子句中使用,如果不使用group by 子句,则having的行为与where子句一样

order by子句

降序:oder by ……desc
升序:oder by ……asc

compute子句

生成合计作为附加的汇总列出现在结果集的最后。当与by一起使用时,compute子句在结果集内生成控制中断和小计。

distinct子句

top子句

限制查询结果集的行数。
举例:查询雇员表中name/age列前五条记录
use 数据库
select top 5 name,age from 雇员表

上一篇下一篇

猜你喜欢

热点阅读