SELECT语句的基本格式
在了解了表的创建和修改之后,为获取必要信息,还必须对表进行查询等操作。而查询主要是根据用户提供的限定条件进行,对表的查询结果还是一张表。
SELECT语句的作用是让数据库服务器根据客户的要求从数据库中搜索出所需要的信息资料,并且可以按规定的格式进行分类、统计、排序,再返回给客户。语法形式为:
SELECT[ALL|DISTINCT]
[TOP n PERCENT ] select_list
[INTO new_table ]
FROM table_name
[WHERE search_condition]
[GROUP BY group_by_expression]
[HAVING search_condition]
[ ORDER BY order_expression [ ASC | DESC ] ]
•ALL|DISTINCT:要查询的字段名,可以是从多个表中取出来的字段
•new_table:查询结果放到新的临时表中
•table_name:欲查询的表的名称,可以是多个表
•ASC | DESC:表示升序排列或降序排列
当使用SELECT语句时,可以用两种方式来控制返回的数据:选择列和选择行。
1.选择列
垂直地划分数据,限制返回结果中的列,这由SELECT语句中的SELECT子句指定要返回的列来控制;
(1)对指定列的选择,语句如下:
SELECT column_name1 [,column_name2,…]
FROM table_name
此时,需注意的是:
•在数据查询时,列的显示顺序由SELECT语句的SELECT子句指定,顺序可以和列定义时顺序不同,这并不影响数据在表中的存储顺序。
•在查找多列内容时,用‘,’将各字段分开。
(2)在SELECT子句中可以使用星号(*),显示表中所有的列。
(3)在SELECT子句中可以使用算术运算符对数值型数据列进行加(+)、减(-)、乘(*)、除(/)和取模(%)运算,构造计算列。
(4)为了增加查询结果的可读性,可以在SELECT子句中增加一些说明列,增加的说明文字串需用单引号括起来
(5)如果我们想改变查询结果中所显示的列标题,可以在SELECT语句中使用‘列标题’=列名 或 列名 AS ‘列标题’两种方法。
2.选择行
水平地划分数据,限制返回结果中的行,这由SELECT语句中的WHERE子句指定选择条件来控制,这一类检索也称之为带条件的检索,这一内容将在下一节进行讲解。
带条件的检索
在检索过程中,经常需要对数据根据一定的条件进行过滤,成为带条件的检索。
在SQL Server中,为WHERE字句指定条件时,支持的运算符如下:
1.比较运算符

2.逻辑运算符
逻辑运算符包括:逻辑与(AND)、逻辑或(OR)和逻辑非(NOT)。语法形式如下:
[ NOT ] search_condition
{ AND | OR } [ NOT ] search_condition
3.字符串模糊匹配
字符串模糊匹配的语法形式为:
expression[ NOT ] LIKE ‘string’
在匹配字符串‘string’中,可以使用如下4种匹配符:

4.范围查询
在WHERE子句中使用BETWEEN关键字可以对表中某一范围内的数据进行查询,系统将逐行检查表中的数据是否在BETWEEN关键字设定的范围内。如果在其设定的范围内,则取出该行,否则不取该行。其语法形式为:
column_name
[ NOT ] BETWEEN
expression1 AND expression2
5.集合查询
如果列值的取值范围不是一个连续的区间,而是一些离散的值,就应使用SQLServer提供的另一个关键字IN 。其语法形式为:
column_name
[ NOT ] IN (value1,value2,…)
6.空值判定
在SQL Server中,用NULL表示空值,它仅仅是一个符号,不等于空格,也不等于0,因此空值判定的语法形式如下:
column_name IS [ NOT ] NULL
检索结果排序和按顺序、去重显示
1.ORDER BY子句
通过ORDER BY子句,可以将查询结果进行排序显示,关键字ASC表示按升序排列,可省略;关键字DESC表示按降序排列。
当ORDER BY子句指定了多个排序列时,系统先按照ORDER BY子句中第一列的顺序排列,当该列出现相同值时,再按照第二列的顺序排列,依次类推。
2.TOP关键字
使用TOP关键字可以返回表中前面一定数量的数据,语法形式为:
SELECT
[TOP integer | TOP integer PERCENT ]
column_name
FROM table_name
•TOP integer:表示返回表中最前面的几行,用integer表示返回的行数。
•TOP integer PERCENT:用百分比表示返回的行数。
3.DISTINCT关键字
使用DISTINCT关键字可以从返回的结果数据集中删除重复的行。其语法形式为:
SELECT[ ALL | DISTINCT ]
column_name1[,column_name2,…]
FROM table_name WHERE search_condition
注意:DISTINCT关键字的作用范围是整个查询的结果集,而不是单独的一列。如果同时对两列数据进行查询时,使用了DISTINCT关键字,将返回这两列数据的唯一组合。

