查询是针对表中已经存在的数据行而言的,可以简单的理解为筛选。
数据表在接受查询的时候可以简单的理解为它将逐行选取,判断是否符合查询的条件。
如果符合查询条件,则提取出来,然后把所有的被选择的行组织在一起,形成另外一
个类似于表的结构,一张虚拟表,这便是查询的结果,通常叫做记录集。(RecordSet)
由于记录集的结构实际上和表的结构是相同的,都是由多行组成的。因此,在记录集上,
还可以再进行查询。
使用SELECT语句进行查询
查询使用Select语句,最简单的查询语句可以表示为:
Select <列名>
From <表名>
[WHERE 条件表达式]
[ORDER BY <排序的列名>[ASC 或 DESC]]
其中,where条件表达式是可选的,如果不限制,将返回该表中的所有数据行
Order By 是用来排序的,数据表中的记录是无序的,并不按照一定的次序存储。
查询语句可以分为多个部分,例如上面的查询语句可以划分为
Select ……From……Where……Order By……四个部分,注意要将每个部分单独
写成一行,以方便调试和查找错误。
查询可以分为一下几种情况:
<1>查询所有数据行和列
需要使用通配符*表示所有的列
Select * from 表名
<2>查询部分行列-条件查询
查询部分的列需要将你要查询的列全都列举出来,例:
Select Sname,Sscore,Ssex From Student
将学生表中的Sname列,Sscore列,Ssex列查询出来
如果要进行条件限制的话,例:
Select Sname,Sscore,Ssex From Student Where StudentID = 10
<3>在查询中使用列名
AS子句可以用来改变结果集列的名称,也可以为组合或者计算得来的列指定名称。
还有一种情况是让标题列的信息更易懂。例:
Select Sname AS 姓名,Sscore AS 成绩,Ssex AS 性别 From Student
经过计算,例:
Select firstName + '.' + lastName AS 姓名 From North
还有一种重新命名列名的方法 ,利用'='
Select 姓名 = firstName + '.' + lastName From North
<4>查询空行
在SQL语句中采用'IS NULL' ,'IS NOT NULL'来判断是否为空行,因此,如果要查询
Saddress 列为空的数据行,可以使用以下SQL语句
Select * from Student where Saddress IS NULL
IS NOT NULL同样用法。
<5>在查询中使用常量列
有时候,需要添加一些常量列到RecordSet中,例:
Select 姓名 = Sname,成绩 = Sscore,'北大青鸟' AS 学校名称 From Student
则输出结果中,会添加一列‘学校名称’,其中数据都为‘北大青鸟’
<6>查询返回限制的行数
有时候,需要返回定数的数据行,例如一个数据表中,有上万行数据,而我
只需要提取出前10行来,进行测试是否有效就OK了,没有必要查询出全部数据,
以提高查询速度,这时候就要用到限制返回行数的查询。
语法:
Select Top 返回行数 所查的列名 From 表名
在T-SQL中,限制行数需要用到TOP关键字,例如我要查询学生表中前10行数据.
Select Top 5 * From Student
还有一种情况,就是有时候需要按照百分比提取记录.这时候就要PERCENT关键字
来限制.
Select Top 百分数 Percent 所查列名 From 表名
例:
Select Top 10 Percent Sname,Sscore ,Ssex From Student
从Student表中查询10%的记录