<b>SQL Server 7.0 入门(三)</b>[MSSQL防范]
本文“<b>SQL Server 7.0 入门(三)</b>[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
数据排序
ORDER BY子句按指定的次序对数据排序(ordering data).它要求一个列名字列表或非负整数列表来指定列的位置.辨别用ASC代表升序,DESC代表降序,默许为ASC.
限制返回行的数目
不利用WHERE子句而限制后果中的行数是大概的."TOP"子句能按指定数目或百分值来限制行数.
数据分组和计算聚合函数
聚合(aggregate)函数计算表中数据的总和.sql server供应以下的聚合函数:
· AVG 这个函数计算平均值.语法以下:
AVG ([ALL | DISTINCT] expression)
关键字DISTINCT只用来计算差别值的平均值,假若有很多反复值,这些值只计算一次,默许为ALL.
Expression可以是触及一列或多列的算术表达式.
· MIN 这个函数查找所供应表达式中的最小值.语法以下:
MIN (expression)
· MAX 此函数的功效是在供应的表达式中查找最大值.语法以下:
MAX (expression)
注意: 假如地字符串范例利用MIN和MAX,则输出依靠于为SQL Server定义的次序.MIN和MAX不能在位上利用.
· SUM SUM计算全部数据值的和.语法以下:
SUM ([ALL | DISTINCT] expression)
注意:SUM和AVG只能用于数值数据范例.
· COUNT 计算表达式值的数目.语法以下:
COUNT ([ALL | DISTINCT] expression)
COUNT有另一种用法,它可以返回被挑选的行数.
如:SELECT NumRows = COUNT (*) FROM titles
聚合函数忽视全部空值,但COUNT(*)除外.固然全部聚合函数的计算基于无空值的情形,但是COUNT(*)计算全部的行(包含有空值的行).
1. GROUP BY子句
GROUP BY子句在被定义的数据的底子上成立对比小的组,并且对每一个组举行聚合函数计算.换句话说,它产生每一组的总体信息.GROUP BY可以把多于一列当作组合列(Grouping Columns).它总结组合列中不反复值的信息.
利用了GROUP BY子句的挑选列表中只能包含以下项:
· 常量值.
· 组合列.
· 表达式.每个表达式为每组返回一个值(如聚合函数).假如一列除了在组合列中外,还在挑选列表中,则它有多个值给组合列的每一个不反复值,这种构造范例是不答应的.
2. GROUP BY和HAVING
HAVING子句用来向利用GROUP BY子句的查询中增添数据过滤原则.HAVING的用法和SELECT中的WHERE子句一样.在一个包含GROUP BY子句的查询中利用WHERE子句是可以的.HAVING和WHERE有相同的语法.HAVING和WHERE的差别这处是:
· 在WHERE子句中,在分组举行从前,去除不满意条件的行,在HAVING子句中,在分组之后条件被利用.
· HAVING可在条件中包含聚合函数,但WHERE不能.
注意:GROUP BY和HAVING子句不能利用文本或图象数据范例.
3. COMPUTE BY子句
COMPUTE BY子句可以得到具体或总的记录.它把数据分成较小的组,然后为每构成立具体记录后果数据集(象SELECT),它也可为每组产生总的记录(象GROUP BY).
在COMPUT BY中,定义BY子句不是必要的.假如没有定义BY子句,则认为整个表为一个组,并且只有两个后果数据集产生,一个拥有全部具体记录,另一个只有一行,它拥有总记录.
注意:当在COMPUTE中利用BY时,则要求在全部组合列中包含ORDER BY.
Cube和Rollup操作
CUBE和ROLLUP操作可比简单的GROUP BY产生更多的聚合值.在产生穿插标签报告(cross tab reports)时,这些操作非常有效.假如查询利用n个组合列,则有2n个计算聚合的组合.
从多个表中拜候数据
我们已谈论了若何拜候单个表中的数据.从多个表中拜候数据也是大概的.从多个表中拜候数据称为衔接表(joining a table).
1、 CROSS JOIN(笛卡尔积)
CROSS JOIN是简单地、不加任何约束条件地把表组合.CROSS JOIN后后果的行数是衔接前两个表行数的乘积.假如对两个辨别有好几千行的表举行衔接,则后果是不可想象的.
2、 INNER JOIN
INNER JOIN是组合两个表最常用的办法.INNER JOIN是基于一个辨别式举行的,这个辨别式称为衔接条件.衔接条件和WHERE子句一同定义.衔接条件由来自两个表中的列构成,并利用一个对比条件来对列的值举行对比.通过对比的值包含在后果数据集合,以下是Inner JOIN的语法:
语法1:(ANSI 92)
Select <select_list>
FROM <table1> INNER JOIN <table2>
ON <table1>.<column name> = <table2>.<column name>
语法2:
Select <select_list>
FROM <table1>,<table2> WHERE <table1>.<column name> = <table2>.<column name>
在FROM 子句中可为表定义别名,并在任何地方都可用别名替换真名.
注意:假如作为衔接条件的列中有空值,则空值不能和任何值匹配,因此后果中不包含有空值的行.
3、 Left Outer JOIN
在Inner JOIN中,只有在两个表中匹配的行才能在后果数据集合.但在Left Outer JOIN中,全部左边表中的行都呈目前后果数据集合,假如左边表中的某一行在右边表中没有匹配的行,则以空值代替右边表中的值和它衔接.
语法以下:(ANSI 92)
Select <select_list>
FROM <table1> LEFT OUTER JOIN <table2>
ON <table1>.<column name> = <table2>.<column name>
4、 Right Outer JOIN
Right Out JOIN和Left Outer JOIN类似,差别的是把右边的表作为外部表(全部右边表中的行包含在后果数据集合).
语法以下:
Select <select_list>
FROM <table1> RIGHT OUTER JOIN <table2>
ON <table1>.<column name> = <table2>.<column name>
5、 Full Outer JOIN
在Full Outer JOIN中,全部两个表中的行都包含在后果数据集合.
语法以下:
Select <select_list>
FROM <table1> FULL OUTER JOIN <table2>
ON <table1>.<column name> = <table2>.<column name>
Case语句
当对差别条件产生差别的后果值时,可以利用Case语句.
Case语句计算全部定义的条件,并按条件能否为真而返回后果.
语法以下:
CASE [<input_expression>]
WHEN <when_expression> THEN <result_expression>
[ELSE <else_expression>]
END
Input_expression是任何有效的SQL Server表达式或布尔表达式.
When_expression是任何有效的SQL Server表达式或布尔表达式.这个表达式和Input_expression对比,假如Input_expression没有定义,则When_expression应当是一个布尔表达式.
Result_expression是任何有效的SQL Server表达式.假如When_expression和Input_expression的对比返回TRUE(假如定义了Input_expression)或When_expression的值为TRUE,则计算表达式,并返回后来果.不然计算Else_expression中的表达式,并返回后来果.
比方:
SELECT au_fname,au_lname,
State=CASE state
WHEN ‘CA’ THEN ‘California’
WHEN ‘KS’ THEN ‘Kansas’
END
FROM authors
UNION
UNION语句把两个或多个查询的后果组合成一个后果集.
语法以下:
SELECT <select_list>
FROM <table_list>
WHERE <join_condition>
UNION [ALL]
SELECT <table_list>
FROM <table_list>
WHERE <join_condition>
ALL关键字指定反复的数据也将包含在终究后果数据集合.假如需求,一个查询中可以有很多UNION语句.全部Select_list应当有相同数目的列,且是相同或兼容的数据范例.
Go号令 Go号令用来标志一个查询批处理(query batch)的完毕.查询批处理是TSQL语句的调集,这些语句调集在一同履行.Go与Osql或SQL Server Query Analyzer一同利用.
以上是“<b>SQL Server 7.0 入门(三)</b>[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |