`

sql查询总结

SQL 
阅读更多
引用

sql查询方式总结

简单查询、选择行查询、生成总结查询(进行分组,计算过滤查询)
1,检索表中所有列
select * from <表名>
2,检索表中特定列
select <列名表列> from <表名>
3,重排列顺序
select cloumn_3,cloumn_1 from <表名>
4,用单引号加入字符串
select cloumn_3,cloumn_1 '所要加的字段名'   from<表名>
5,改变列标题
select cloumn_3,cloumn_1 as '新列名' from <表名>
6,消除重复行
select distinct cloumn_3 from <表名>
7,返回有限的结果
select top n [percent]*   from   <表名>
8,使用算数运算符操纵列
example:
select   cloumn_1+'('+cloumn_2+')' [as] '新列名',cloumn_3*cloumn_4 '新列名' from <表名>
9,使用函数操纵列
--常用函数有substring()[取子字符串]、getdate()[返回当前日期和时间]、year(data)[返回日期中的年份]、convert()[类型转换]
example:
select distinct substring(title,1,5) from pubs
又如:返回当前服务器的用户名
select 'login'=suser_sname()
再如查询pubs数据库的titles表中所有书的价格信息,对于书名长度超过38个字符的,将其余部分截掉
use pubs
select convert(char(38),title)+'IS $'+ convert(varchar(10),price) from titles

选择行查询
1,基于比较选择行
example:
select 价格,* from goods where 价格>=1000
2,基于范围选择行
select * from goods where 价格 between 20 and 2000
--3,基于列表选择行
select * from goods where 品名 not in('方正A','联想')
4,基于字符串选择行
   --百分号(%):代表任意多个字符
   --下划线(_):代表单个字符
   --中括号([]):代表指定范围内的单个字符
   --复合符号([^]):代表不在指定范围内的单个字符
--5,基于未知选择行
--使用IS NULL   IS not NULL
select 姓名,职业 from students where 联系电话 IS null
--6,基于多个搜索条件选择行
select 姓名,职业,联系电话,地址 from students
where (联系电话 like '%3%'or 联系电话 like '%5%')
and (地址 like '河南')
--7,结果排序
select * from goods
select 价格 from goods
order by 价格 ASC


生成总结查询
    使用SQL查询语言,用户可以方便地为查询到的结果进行分组、计算或对其进行过滤等,从而得到总结性的数据结果集。
1,使用集合函数进行统计
(1)AVG 该函数用于计算查询结果的平均值。其语法格式如下:
AVG([all | distinct] 算数表达式) 其中各参数的意义如下:
all:全部数据都参与计算,为默认的选项。
distinct:消除重复的数据,只计算不同的值的平均值。
算数表达式:该表达式即可以只涉及一列,也可涉及多列
example:要计算Sales数据库中Goods表中的所有货品的平均价格
use Sales
select avg(价格) from goods
(2)min、max 这两个函数用于查询最小值和最大值,语法格式如下:
min([all | distinct] 算数表达式)
(3)sum 该函数用于计算查询到的数据值得总和
example:计算Pubs数据库中的titles表中所有商业类书籍的平均预付款和本年度迄今为止的全部销售额。
use pubs
select avg(advance),sum(ytd_sales) from titles where type='business'
(4)count 该函数可以计算查询到的结果的数目
example:查询sales数据库中customers表中客户地址的数量。
use sales
select count(distinct 地址) from customers
2,数据分组
(1)group by子句
在SQL Sever中,可以按照一定的条件对查询到的结果进行分组,然后对每一组数据计算统计信息。
说明:1,使用group by 子句能按列或表达式分组,一般与集合函数一起使用,每组差生一个值。
          2,在包含group by子句的查询语句中,select语句后的所有字段列表,除集合函数外,都应该包含    在group by子句中,否则会出错。
           3,对数据进行分组时,也可以用条件进行选择,这就是having子句。
(2)having子句
having子句可以用来向使用Group by子句的查询中添加过滤准则,即检查分组之后的各组是否满足条件。having子句语法与where子句一样,但两者之间还是存在一定区别,具体如

下:
      1,where子句的作用是检查每条记录是否满足条件,而having子句是检查分组之后的各组是否满足条件。
      2,having子句是针对Group by子句的,没有Group by子句时不能使用having子句。
      3,having子句可以在条件中包含集合函数,但where子句不行
exam:显示sales数据库中Goods表中存货量大于70的货品及库存数量,具体代码如下:
      use sales
----select 品名,库存数量 from Goods where 库存数量>70 
      select 品名,库存数量=sum(库存量) from Goods group by 品名 having sum(库存量)>7
①where子句排出不满足条件的行
②group by子句收集满足where子句的搜索行,并将这些行分组
③having子句排出不符合其条件的组
此外,使用group by all能够显示所有的组,即便是被where子句排除的组也将会显示出来
3,计算汇总数据
(1)compute子句
可以使用该子句计算汇总数据,该汇总数据将作为附加的汇总列出现在结果集的最后
exam:在pubs数据库的titles表中查询类型是以cook结尾的书的价格和总价
use pubs
select type,price from titles where type like '%cook'
order by type,price
compute sum(price)
(2)compute by 子句
在查询中使用该子句可以按给定的条件将查询结果分组,并为每种结果计算汇总数据。
exam:在pubs数据库的titles表中查询类型是以cook结尾的书的价格和每种类型的总价
use pubs
select type,price from titles where type like '%cook'
order by type,price
compute sum(price) by type
(3)计算汇总数据时的注意事项
在使用compute子句和compute by 子句时,应注意下面的限制条件:
1,关键字distinct不允许同集合函数一起使用
2,compute子句中的列必须在select后面的选择列表
3,select into 不能和compute子句一块使用
4,若使用compute by子句,则必须使用order by子句。此时,compute by子句后出现的列必须与order by后出现的列相同,最少也应该是其子集,而且必须具有相同的从左到右的

顺序并且以相同的表达式开头,不能跳过任何表达式。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics