赞
踩
目录
1、查询指定的列
select *from 表名
2、查询表中指定的列。查询多列,列名之间要用逗号隔开
select 列名1,列名2 from 表名
3、指定查询结果的标题
使用as子句,as子句可以省略,[]代表可以省略的意思
select 借书证号 [as] cardno,姓名 [as] name from 表名
4、查询经过计算的列(即表达式的值)
select 书名,单价,八折=单价*0.8 from book
格式:select [all] [distinct][top n[perecnt]] <目标表达式列表> from 表名
1、消除查询结果的重复行
select distinct 列名 from 表名
如果是all的话,保留查询结果的所有行
2、限制查询结果中的返回行数
->查询表中的前五个记录
select top 5 * from 表名
->查询表中前50%的数据
select top 50 percent *from 表名
格式:select [all] [distinct] [top n[percent]] <目标列表达式列表> from 表名 where <条件>
说明:在查询条件中可使用以下运算符或表达式:运算符 运算符
标识
比较运算符 <=,<,=,>,>=,!=,<>,!>,!<
范围运算符 between... and,not between... and
列举运算符 in,not in
模糊匹配运算符 like,not like
空值运算符 is null,is not null
逻辑运算符 and,or,not
1、使用比较运算符
select *from 表名 where 可以比较的列名>=2
2、指定范围
格式:表达式[not] between <表达式1> and <表达式2>,否定加not
其中between关键字之后的是范围的下限(低值),and关键字之后的是范围的上限(高值)
列如:查询表中1980至1985年出生的所有列
select *from 表名 where 出生时间 between '1980-01-01' and '1985-12-31'
3、使用列举
使用in关键字可以指定一个值的集合,集合中列出所哟可能的值,当表达式的值与集合中的任一元素个匹配时,即返回true,否则返回false。
格式:<表达式> [not] in(值1,值2,值3),否定加not
查询表中列名2为值1,值2的列名1,列名2
select 列名1,列名2 from 表名 where 列名2 in('值1,值2')
4、使用通配符模糊查询
可用like子句进行字符串的模糊匹配查询,like子句将返回逻辑值(true或false)
格式:<字符型字段> [not] like <匹配串>
含义:查找指定字段值与匹配串相匹配的记录。匹配串中常含有通配符%和_(下划线)。
a%c表示以a开头,以c结尾的任意长度的字符串。
a_c表示以a开头,以c结尾,长度为3的字符串。
查询姓王,名字为两个字的所有学生
select *from 表名 where 姓名 like '王_'
5、使用null查询
当需要判定一个表达式的值是否空 值时,使用is null关键字。
格式:<表达式> is [not] null
查询表中专业名尚不确定的学生情况
select *from 表名 where 专业名 is null
6、多重条件查询:使用逻辑运算符
select *from 表名 where 专业名='计算机' or 专业名='音乐'
order by子句可用于对查询结果安装一个或多个字段的值(或表达式的值)进行升序(asc)或降序(desc)排序,默认升序
格式:order by {排序表达式[asc | desc]}[,..n]
查询图书的书名、六折后的书价,并将结果按六折后的书价的降序排列。
select 书名,单价*0.6 as 书价六折 from book order by 单价*0.6 desc
在对表进行检索时,经常需要对结果进行计算或统计,T-SQL提供了一些统计函数。用来增强检索功能。常用的统计函数:
函数名 功能
AVG 求平均值
count 求记录个数,返回int类型整数
max 求最大值
min 求最小值
sum 求和
1、
select avg(借书数) as 平均借书数,sum(借书数) as 借书总数
from xs
where 专业名='计算机'
2、
select max(借书数) as 最多借书数,min(借书数) as 最少借书数
from xs
3、count:
格式:count(*)和count([all][distinct] 字段名),为避免出错,查询记录个数一般使用count(*),而查询某字段有几种取值用count(distinct 字段名)
(1).count(*):
功能:统计记录总数。
例18:查询学生总数
select count(*) as 学生总数
from xs
再如:查询已借阅了图书的学生人数。
select count(*) as 借阅了图书的学生数
from xs
where 借书数<>0
思考:查询计算机专业的学生总数。
(2).count([all]|[distinct] 字段名)
功能:统计指定字段值不为空的记录个数,字段的数据类型可以是text、image、ntext、uniqueidentifier之外的任何类型。
例19:查询学生总数
select count(借书证号) as 总人数 from xs
group by子句用于将查询结果表按某一列或多列值进行分组,列值相等的为一组,每组统计出一个结果。该子句常与统计函数一起使用进行分组统计。格式为:
group by 分组字段[,...n][having <条件表达式>]
例21:统计男、女生各多少人。
select 性别,count(*) as 人数
from xs
group by 性别
再如:查询各专业人数及各专业的总借书数。
select 专业名,count(*) as 各专业人数,sum(借书数) as 各专业的借书总数
from xs
group by
专业名
说明:在使用group by子句时应注意以下几点:
1.在使用group by子句后,select列表中只能包含:group by子句中所指定的分组字段及统计函数。
2.having子句的用法:
having子句必须与group by 子句配合使用,用于对分组后的结果进行筛选(筛选条件中常含有统计函数)。
例22:查询学生人数在2人以上(含2人)的专业的专业名以及其学生人数
select 专业名,count(*) as 人数
from xs
group by 专业名
having count(*)>=2
3.
分组查询时:不含统计函数的条件,通常使用where子句;含有统计函数的条件,则只能用having子句。
例如:查询“体育”专业男、女生各有多少人。
select 性别,count(*) as 人数
from xs
where 专业名='体育'
group by 性别
再如:查询平均借书数在2本以上(含)的专业及其学生人数。
select 专业名,count(*) as 人数
from xs
group by 专业名
having avg(借书数)>=2
4、选择从10到15的记录
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id
desc
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。