SQLServer查询语句学习心得
2013-08-15李臻敏
李臻敏
(安溪陈利职业中专学校,福建 安溪 362403)
SQL Server查询语句的语法格式:
SELECT[列名]
FROM[表名]
[WHERE<查询条件表达式>]
[ORDER BY<排序的列名>[ASC或DESC]]
其中:[]代表可选的;<>代表必须的。如果有多个列名,需要用逗号隔开。
ORDER BY是用于排序的,可以将查询出的数据按照ORDER BY所指定的字段进行排序,排序时还可以通过ASC或DESC指定升序或降序排列。
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询work表中姓名为“许剑锋”的stname字段和score字段。
SELECT stname,score
FROM work
WHERE name='许剑锋'
1 选择列表
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1.1 选择所有列
例如,下面语句显示work表中所有列的数据:
SELECT*
FROM work
1.2 选择部分列并指定它们的显示次序
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:
SELECT stname,score
FROM work
1.3 更改列标题
在选择列表中,可重新指定列标题。
定义格式为:
title=列名
列名title
如果指定的title不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:SELECT昵称=stname,分数=score FROM work
1.4 使用DISTINCT关键字屏蔽重复数据
数据表中难免会出现重复数据,DISTINCT的作用是屏蔽结果集中的重复数据行。
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
1.5 使用TOP关键字查询表中限定行数
使用TOP n[PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一个百分数,指定返回的行数等于总行数的百分之几。
例如:
SELECT TOP 5*
FROM work
SELECT TOP 10 PERCENT*
FROM work
2 FROM子句
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在student和teaching表中同时存在name列,在查询两个表中的name时应使用下面语句格式加以限定:
SELECT stname,teaching.name
FROM student,teaching
WHERE student.name=teaching.name
在FROM子句中可用以下两种格式为表或视图指定别名:
表名 as别名
表名别名
例如,上面语句可用表的别名格式表示为:
SELECT stname,b.name
FROM student a,teaching b
WHERE a.name=b.name
3 使用WHERE子句过滤部分行数据
在数据库中查询数据时,有时用户只希望可以得到一部分数据而不是全部,如果还使用SELECT…FROM结构,就会因为大量不需要的数据而使应用实现起来很麻烦,这时就需要在SELECT语句中加入条件语句,即WHERE子句。
例如,下面语句查询体重大于60的数据:
SELECT*
FROM student
WHERE weight>60
WHERE子句可包括各种条件运算符:
比较运算符(大小比较):>、>=、=、<、<=、<>、! >、! <
范围运算符(表达式值是否在指定的范围):BETWEEN…AND…
NOT BETWEEN…AND…
列表运算符(判断表达式是否为列表中的指定项):IN(项1,项2……)
NOT IN(项 1,项 2……)
模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE
空值判断符(判断表达式是否为空):IS NULL、NOT IS NULL逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR
3.1 范围运算符例:age BETWEEN 10 AND 30相当于 age>=10 AND age<=30
3.2 列表运算符例:city IN('Beijin','Shanghai')
3.3 模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。 可用于 char、varchar、text、ntext、datetime 和 smalldatetime等类型查询。
可使用以下通配字符:
百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。
下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。
方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。[^]:其取值也[]相同,但它要求所匹配对象为指定字符以外的任一个字符。
例如:
限制以Publishinshanghai结尾,使用LIKE'%Publishinshanghai'
限制以G开头:LIKE'[G]%'
限制以G开头外:LIKE'[^G]%'
3.4 逻辑运算符:优先级为NOT、AND、OR
4 查询结果排序
使用SELECT语句进行数据查询后,为了方便阅读,可以使用ORDER BY子句对生成的结果集进行排序。在SELECT语法中ORDER BY后面的排序列名可以是字段名,也可以是表达式,有多个排序列时,需要用逗号隔开。拍序列名后面还可以指定排序方式,ASC表示升序,DESC表示降序,如果不指定默认为升序。
ORDER BY子句的语法格式为:
ORDER BY{column_name[ASC|DESC]}[,…n]
例如:
SELECT*
FROM student
ORDER BY score desc,address ASC
以上是一些关于数据库查询的介绍,用户可以根据需要应用这些查询技巧从数据库中检索数据,并将查询结果以表格的形式输出。
在信息技术广泛应用的今天,数据库技术作为数据管理的核心技术在社会各个领域发挥着强大的功能,SQL Server 2008是由Microsoft公司发布的最新关系数据库管理系统。然而要用好数据库的管理功能,就必须从简单的数据库查询开始,数据库查询是数据库应用的根基,只有基土之坚固才有高大之建筑。所以,数据库查询在数据库应用中有举足轻重的地位。