标题: SQL的基本操作(4.数据的检索) [打印本页] 作者: jolie 时间: 2009-2-10 09:52 标题: SQL的基本操作(4.数据的检索) 1.用 Select 子句检索记录
Select 子句是每一个检索数据的查询核心。它告诉数据库引擎返回什么字段。
Select 子句的常见形式是:
Select *
该子句的意思是“返回在所指定的记录源中能找到的所有字段”。这种命令形式很方便,因为你无需知道从表中检索的字段名称。然而,检索表中的所有列是低效的。因此,因该只检索需要的字段,这样可以大大的提高查询的效率。
2.使用 From 子句指定记录源
From 子句说明的是查询检索记录的记录源;该记录源可以是一个表或另一个存储查询。
你还能从多个表中检索记录,这在后面的章节中将介绍。
例子:
Select * From students 检索students表中的所有记录
3.用 Where 子句说明条件
Where 子句告诉数据库引擎根据所提供的一个或多个条件限定其检索的记录。条件是一个表达式,可具有真假两种判断。
例子:
Select * From students Where name="影子"
返回students中name字段为影子的列表,这次所返回的结果没有特定顺序,除非你使用了 Order By 子句。该子句将在后面的章节介绍。
注意:Where 子句中的文本字符串界限符是双引号,在VB中因改为单引号,因为在VB中字符串的界定符是双引号。
补充:
使用 And 和 Or 逻辑可以将两个或更多的条件链接到一起以创建更高级的 Where 子句。
例子:
Select * From students Where name="影子" And number>100
返回name为影子number大于100的列表。
例子:
Select * From students Where name="影子" And (number>100 Or number 大于
>= 大于或等于
= 等于
不等于
Between 在某个取值范围内
Like 匹配某个模式
In 包含在某个值列表中
SQL中的等于和不等于等操作符与VB中的意义和使用相同
例子:
(1).Between 操作符
Use cust
Select * From students
Where number Between 1 and 100
Between 操作符返回的是位于所说明的界限之内的所有记录值。这个例子就返回 number 字段 1 到 100 之间的全部记录。
(2). Like 操作符和通配符
Use cust
Select * From students
Where name Like "%影%"
Like 操作符把记录匹配到你说明的某个模式。这个例子是返回含“影”的任意字符串。
四种通配符的含义
通配符 描述
% 代表零个或者多个任意字符
_(下划线) 代表一个任意字符
[] 指定范围内的任意单个字符
[^] 不在指定范围内的任意单个字符
全部示例子如下:
Like "BR%" 返回以"BR"开始的任意字符串
Like "br%" 返回以"Br"开始的任意字符串
Like "頽" 返回以"een"结束的任意字符串
Like "%en%" 返回包含"en"的任意字符串
Like "_en" 返回以"en"结束的三个字符串
Like "[CK]%" 返回以"C"或者"K"开始的任意字符串
Like "[S-V]ing" 返回长为四个字符的字符串,结尾是"ing",开始是从S到V。
Like "M[^c]%" 返回以"M"开始且第二个字符不是"c"的任意字符串。
4. 使用 Order By 对结果排序
Order By 子句告诉数据库引擎对其检索的记录进行排序。可以对任何字段排序,或者对多个字段排序,并且可以以升序或隆序进行排序。
在一个正式的 Select 查询之后包含一个 Order By 子句,后跟想排序的字段(可以有多个)便可以说明一个排序顺序。
例子:
Use cust
Select * From students
Where name Like "%影%"
Order By number
对返回的结果按 number 进行排序。
以降序排序
如要以隆序排序,只需在排序的字段之后使用 Desc 关键字。
例子:
Use cust
Select * From students
Where name Like "%影%"
Order By number Desc
5. 使用 Top 显示某个范围的第一个记录或最后一个记录。
使用 Top 关键字可以只显示一个大记录前面或后面的少数几个记录。在查询中,Top 关键字与排序子句一起把结果集限制为少数几个记录或按某个百分比显示整个结果记录集合中的一部分。
例子:
Select Top 3 * From students 返回 students 表中的前3条记录
Select Top 10 Percent * From students 返回 students 表中前面的10%个记录
Select Top 3 * From students Order By number desc 返回 students 表中 number 最大的(最后)的3条记录
6. 用 As 对字段名进行别名化
为什么在查询中对字段命以别名,或重新命名,这样做的原因有两个:
☆所涉及的表的字段名很长,想使字段在结果集中更易处理一些。
☆创建的查询产生了某些计算或合计列,需要对之进行命名。
不管是什么原因对字段命以别名,在 SQL 中都可以容易地使用 As 子句做得。
例子:
Select number As 学号 ,name As 姓名 From students
7. 合并查询
合并查询( Union Query )用于合并具有相同字段结构的两个表的内容,如果想在一个结果集中显示多个记录源中的不相关的记录时,这十分有用。
例子:
Select *
From students
Union
Select *
From students1
该查询结果集把 students 和 students1 中的记录合并到一个结果中,其输出就和原表归档之前一模一样。
注意:缺省情况下,合并查询不会返回重复记录(如果记录归档系统在把记录拷到归档表中后不将相应的记录删除,这时该功能就有用了),可以加上 All 关键字而让合并查询显示重复记录。
例子:
Select *
From students
Union All
Select *
From students1
该合并查询显示 students 表和 students1 表的内容时,没有对重复记录进行处理
补充:
Union 运算符允许把两个或者多个查询结果合并到一个查询结果集中。如果比较 Union 和 Join 两咱运算符,那么 Union 运算符增加行的数量,而 Join 运算符增加列的数量。使用 Union 时应该注意,两个结果中的列的结构必须匹配,数据类型必须兼容等等。
Union 运算符的语法形式如下:
Select select_list
From clause
Where clause
Group By clause
Having clause
Union [All]
Select select_list
From clause
Where clause
Group By clause
Having clause
Order By clause
Compute clause
对于 Union 运算符,有下列几点需要说明:
·在默认情况下,Union 运算符删除全部冗余行。如果使用All 选项,那么冗余行不删除。
·在 Union 语句中的全部 select_list 必须有相同数量的列、兼容的数据类型并且按照同样的顺序出现。
·在结果集中,列名来自第一个 Select 语句。
8.连接查询
在实际使用过程中经常需要同时从两个表或者两个以上表中检索数据。连接就是允许同时从两个表或者两个以上表中检索数据,指定这些表中某个或者某些列作为连接条件。在 SQL Server 中,可以使用两种连接语法形式,一种是 Ansi 连接语法形式,这是连接用在 From 子句中,另外一种是 SQL Server 连接语句形式,这是连接用在 Where 子句中。
Ansi 连接语法形式如下:
Select table_name.column_name,table_name.column_name,...
From {table_name [join_type] Join table_name On search_conditions}
Where [search_conditions]
在 Ansi 语法形式中,可以 Ansi 连接关键字来确定使用的连接形式。例如:
☆使用 Inner Join 关键字,结果集中仅包含满足条件的行。
☆使用 Cross Join 关键字,结果集中包含两个表中所有行的组合。
☆使用 Outer Join 关键字,结果集中既包含那些满足条件的行,还包含那些其中某个表的全部行。
SQL Server 连接语法形式如下所示:
Select table_name.column_name,table_name.column_name,...
From [table_name,tab
<