SqlServer教程

Sql Server(2)Select学习

本文主要是介绍Sql Server(2)Select学习,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一:学会select查询

①select语句基本应用:

select子句
指定字段名
ALL与DISTINCT  -------我们平时不写的话,就代表的是All ,当我们加入Distinct后,就不会出现重复的数据(去重)
使用字段別名  -----------字段别名我们只能在我们的select 查询显示的时候用,它的使用范围是受限制的。
使用表別名----------------表别名是不受限制的
where子句   ------------条件
Order by 子句----------排序
GROUP BY子句--------分组

②select的语法

SELECT select_list
[INTO new_table]
FROM table_source
[WHERE search_condition]
[GROUP BY group_by_expression]
[HAVING search_condition]
[ORDER BY order_expression[ASC | DESC] ]

 ③设置指定的字段

①*:代表查询数据表中所有的字段 
示例   查询JOBS数据表中所有的字段。 
SELECT * FROM JOBS 

②column_name:只要查询数据表中的某些字段时,就直接将欲查询的字段列出,字段与字段之间要用逗号相隔。
示例  查询EMPLOYEE表中的多个字段。
SELECT fname,lname,minit,emp_id,job_id FROM EMPLOYEE

③expression:利用表达式来指定字段,表达式的内容可以是字段名、常数、函数…等的组合 。
示例 利用SQL语法的表达式子句计算书店的利润。 
SELECT title 书名,
((price * ytd_sales) * CAST( ( (100-royalty) / 100.0 ) AS MONEY)) 
AS 年收入  FROM titles WHERE royalty <> 0

 

④ALL与Distinct的区别

SELECT子句后加上ALL的功能是指定结果集内可显示有重复数据的数据列。
而加入DISTINCT参数后,则代表所查询的结果中如果有重复的多笔数据,将只会显示一笔数据。
SQL Server 的默认值是ALL,因此通常不须使用ALL参数,只有在不显示重复数据时才要用DISTINCT来指定。

⑤TOP的使用(Sql server 的)前几条记录

 参数TOP n [PERCENT]
如果想查询数据表中的最前面n笔记录,可以利用TOP n 的指令。(n为介于0到 4294967295 之间的整数。) 

示例 使用参数TOP的SELECT查询语句。
	select top 2 * from cv_Po

 ⑥TOP   (PERCENT) 的前百分之几的数据

如果同时指定 PERCENT,则结果集只输出头n个百分比的数据列。以 PERCENT 指定时,n 必须为介于 0 到 100 之间的整数
示例 使用TOP n [PERCENT]的SELECT查询语句。
	select top 20 percent * from cv_Po

 ⑦习题视图中有一笔记录“金额”不等于“单价*数量”,请找出来
      找出我们采购过的物料名称(要求结果集不重复)

 

 

 

二:对From的新的了解(SELECT语句加上FROM子句,是用来设置要查询的数据源,如数据表名称、视图名称,语法如下:)

SELECT语句加上FROM子句,是用来设置要查询的数据源,如数据表名称、视图名称,语法如下:

FROM table_name [ [AS] table_alias ] [ ,….n]
或
FROM { table_name1[ [AS] table_alias ] }
[ INNER | {{LEFT | RIGHT | FULL } 
[ OUTER ] } ] JOIN table_name2 [AS] table_alias ]
ON search_condition| < table_source > CROSS JOIN<table_source>
 } [ , … n]

 三:内连接,左连接,右连接,全连接

 

 

 

 

 

 四:兄弟们这个是重点啊(看懂他,会写的sql会越来越多)底下又有列子

 

 

 习题:

 

 

 

五:where 的使用

SELECT语句若加上WHERE子句时,是用来设置查询条件,以便过滤需要的数据。其语法如下: 
[ WHERE <search_condition> ]
参数: 
<search_condition>:设置条件 
示例 使用WHERE参数指定关联条件。
USE PUBS
SELECT titles.title, titleauthor.title_id
FROM titles, titleauthor
WHERE titles.title = titleauthor.title_id 

 ①inner join  与where 的区别(一般我们选择用inner join)

 

 ②where与having可以同时存在

select jCode,jName,sum(jQty) from jProduct where jCode like '%0123%' group by jCode,jName having sum(jQty)>100

上面这句的执行过程大致应该是这样的

先根据where条件子句进行过来

再根据group by子句进行聚合

最后再根据having子句对聚合结果进行过滤

 ③order by 的使用

如果想将查询的结果做排序,可使用ORDER BY子句,语法如下: 
ORDER BY { order_by_expression [ ASC | DESC ]}
[ ,...n ] 
参数
order_by_expression:设定排序的依据,可用字段名、字段别名或字段值的表达式。来作为排序依据的字段可以不是SELECT子句所查询的字段,但如果是使用SELECT DISTINCT就一定必须是。
另外,我们亦可以使用大于0的整数,来表示所要依照SELECT列表中的第几个项目值做为排序,例如2,即代表用SELECT的第二个字段排序。
ASC:以升序的方式或由小至大的方式来排序。但NULL将被视为最小的值。 
DESC:以降序的方式或由大至小的方式来排序。但NULL将被视为最小的值。 

 列:

 

 

 

 六:group  by 的使用

当需要显示分组的汇总数据时,就应使用GROUP BY子句。该子句的功能是根据指定的列将表中数据分成多个组后进行汇总
其语法格式为:
SELECT column_name1[,…n]
FROM table_name
WHERE search_condition
GROUP BY [ ALL ]colum_name1[,…n]
[ HAVING search_condition ]

 ①:分组的条件

使用GROUP BY分组,每个组在结果集中只有一行。
SELECT子句中指定的列必须是分组字段,其它字段要与聚合函数一起使用。
如果包含WHERE子句,则只对满足WHERE条件的行进行分组汇总。
HAVING子句与Group by一起使用,进一步排除不满足条件的组。

select 供应商,sum(金额) as '订货总金额' from cv_po group by 供应商

②聚合函数

avg:对数值类型的字段值求平均,忽略 Null 值。
count:对记录进行计数。
max:返回最大值。
min:返回最小值。
sum:对某个数值型字段进行求和。

 列:

示例2:统计向各个供应商订货的次数,找出订货次数一次以上的供应商
select FSupplyID,count(*) as 订货次数 
from po 
group by FSupplyID
Having count(FID)>1

 

 

这篇关于Sql Server(2)Select学习的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!