T-SQL之查询操作

1.单表查询

SQL查询基本语句格式

SELECT [ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]
FROM<表名或视图名>[,<表名或视图名>]
[WHERE<条件表达式>]
[GROUP BY<列名>]
[HAVING<条件表达式>]
[ORDER BY<列名2>[ASC|DESC]];

SELECT语句的含义主要有以下几点:

(1)根据WHERE子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的记录。

(2)按SELECT子句中的目标列表达式,选取记录中的属性值形成结果表。

(3)如果指定了GROUP字句,则将结果按<列名1>的值进行分组,该属性列值相等的记录为一个组,每个组产生结果表中的一条记录。通常会在分组时使用聚合函数。

(4)如果GROUP字句带HAVING短语,则只有满足HAVING短语后指定的条件表达式的组才会输出。

(5)如果指定了ORDER子句,则结果表还要按<列名2>的值进行升序或降序排列。

2.指定列

【提示】

  • SELECT子句中的<目标列表达式>中各个列的先后顺序可以与表中的顺序不一致。
  • 用户在查询时可以根据需要改变结果列的显示顺序,但不会改变表中列的原始顺序。

3.计算列

SELECT g_ID,g_Name,g_Price*g_Nmuber
FROM Goods

【提示】

  • 该语句中<目标列表达式>中的3项不是通常的列名,而是一个计算表达式,是商品单价与商品数量的乘积,所得的积是商品的总价值。
  • 计算列不仅可以是算术表达式,还可以是字符串常量、函数等。

4.使用别名

在显示结果集时,可以指定以别名(显示的名字)代替原来的列名,通常也用来显示结果集中列的汉字标题。

【提示】

  • 用户可以通过指定别名来改变查询结果的列标题,这在含有算术表达式、常量、函数名的列分隔目标表达式时非常有用。
  • 有三种方法指定别名:
  1. 通过“列名 列标题”形式;
  2. 通过“列名 AS 列标题”形式;
  3. 通过“列标题=列名”形式;

5.选择行

条件运算符
运算符 含义/用法
< 小于
<= 小于等于
> 大于
>= 大于等于
= 等于
<> 不等于
BETWEEN 用来指定值的范围
LIKE 在模式匹配中使用
IN 用来指定数据库中的记录

6.模糊查询

格式如下:

[NOT]LIKE "<匹配串>" [ESCAPE] "<换码字符>"]

其含义是查找指定的属性列值与<匹配串>相匹配的记录。<匹配串>可以是一个完整的字符串,也可以含有通配符”%”和“_”。

  • %(百分号):代表任意长度(长度可以为0)的字符串。
  • _(下横线):代表任意单个字符。

【提示】

  • 如果用户要查询的匹配字符串本身就含有“%”或“_”,比如要查询名字为“三星Cdmaix_008”的商品的信息,这时就要使用“ESCAPE”关键字对通配符进行转义。
  • ESCAPE“\”短语表示“\”为转码字符,这样匹配串中紧跟在“\”后面的字符不在具有通配符的含义,而是取其本身含义,即普通的“_”字符。

7.ORDER BY子句

  • 用ORDER BY子句对查询结果按价格排序时,若按升序排序,价格为空值的记录将最先显示;若按降序排列,价格为空值的记录将最后显示。
  • 中英文字符按期ASCII码大小进行排序。
  • 数值型数据根据其数值大下进行比较。
  • 日期型数据按年、月、日的数值大小进行比较。
  • 逻辑型数据“False”小于“True”.

8.GROUP BY子句

GROUP BY子句可以将查询结果表的各行按某一列或多列取值相等的原则进行分组。一般情况下,分组的目的是便于进一步统计。在SELECT子句内使用聚合函数对记录组进行操作,它返回应用于一组记录的单一值。

聚合函数
聚合函数 描述
AVG 用来获取特定字段中的值的平均数
COUNT 用来返回选定记录的个数
SUM 用来返回特定字段中所有值的总和
MAX 用来返回指定字段中的最大值
MIN 用来返回指定字段中的最小值
DISTINCT COUNT 用来返回不重复的输入值的数目
STDEV 返回指定表达式中所有值的标准偏差
STDEVP 返回指定表达式中所有值的总体标准偏差
VAR 返回指定表达式中所有值的方差
VARP

返回指定表达式中所有指的总体方差

对查询结果分组的目的是为了细化聚合函数的作用对象。如果没有对查询结果分组,聚合函数将作用于整个查询结果,即整个查询结果只有一个函数值。如果对查询结果实现了分组,聚合函数将作用于每一个分组,即每一组都有一个函数值。

【提示】

  • 在使用分组时要显示的列要么包含在聚合函数中,要么包含在GROUP BY子句中,否则不能被显示。
  • WHERE子句与HAVING短语的根本区别在于作用对象不同,WHERE子句作用于基本表或视图,从中选择满足条件的记录。HAVING短语作用于组,从中选择满足条件的组。

你可能感兴趣的:(sql,sever,2008)