Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9910429
  • 博文数量: 299
  • 博客积分: 9955
  • 博客等级: 中将
  • 技术积分: 4177
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-27 20:59
文章分类
文章存档

2015年(1)

2012年(2)

2011年(9)

2010年(47)

2009年(108)

2008年(132)

我的朋友

分类: Mysql/postgreSQL

2009-10-02 11:40:05

第17学时数据查询
在过去几个学时的课程里,我们已经讨论了如何创建数据库、创建表、分配许可和其他
管理任务。但我们还没有讨论如何取出存储在数据库里的数据。这是一个相当重要的功能,
你需要知道如何去做。
本学时的要点包括:
• 取数据
• pubs数据库概览
• 打开一个数据库
• SELECT语句
• 限制行数
• 函数
17.1 取数据
作为数据库日常操作的一部分,你需要从数据库中提取数据。如果无法提取数据,那么
存储的那些数据又有什么用呢?大多数时候,你和你的用户使用为向数据库输入数据而写的
那些应用程序来访问数据库中的数据。但有时,也可以用其他方法访问数据。其中最主要的
方法是使用S E L E C T语句。
17.2 pubs数据库概览
在先前大部分的时间里,我们使用O r d e r C e n t e r数据库完成了绝大多数练习。本学时和接
下来的几个学时里,我们将使用p u b s数据库。这是因为我们还没有在O r d e r C e n t e r数据库中放
图17-1 p u b s数据库结构关
系图
任何数据。为了让你理解本章将要讨论的大量S E L E C T语句,你必须充分了解p u b s数据库的构
成和表之间的相互作用关系。正如我们前面提到的, p u b s数据库是一个小型数据库,它在安
装SQL Server时同时被安装。p u b s数据库是一个模仿出版公司数据库的模型。该数据库跟踪
作者、出版物、出版商以及其他类似信息。图1 7 - 1显示了p u b s数据库的结构关系图。
17.3 打开一个数据库
打开一个数据库就是你登录到SQL Server,并告诉SQL Server你将对一个指定的数据库执
行命令。当你正在SQL Query Analyzer中工作时,可以从两种途径中任选一种来打开数据库。
第一种方法是在右上角下拉列表框中选择所要打开的数据库的名称,如图1 7 - 2所示。
另一种途径是在一个S Q L脚本中使用SQL Server的U S E关键字,下面是该命令的语法:
其中< d a t a b a s e n a m e >是你所要打开的数据库的名称。
17.4 SELECT语句
S E L E C T语句是从数据库的表中访问和提取数据的一种工具。它是最强有力的工具之一,
而且它有比S Q L中其他语句多得多的可用选项。S E L E C T语句可以从表中取出所有的行和列,
或者两者任一个的子集。最基本的S E L E C T语句是从表中取出所有的行和列。在这个学时的大
部分例子中,我们将使用a u t h o r s表。要取出a u t h o r s表中所有的行和列,你可以执行程序清单
1 7 - 1中的命令。
程序清单17-1 简单的S E L E C T语句
正如你所看到的,程序清单1 7 - 1的语句中包含四个基本部分。第一部分是关键字S E L E C T。
它告诉SQL Server你将要做什么。语句下一部分是列名的列表,你可以列出你所要从表中输
1 5 8 SQL Server 7 24学时教程
下载
图17-2 SQL Query Analyzer
中的数据库框
出的列。稍后,我们将详细讨论。这里所做的只是用星号( * )表示想取出表中所有的列。关键
字S E L E C T和列的列表组合在一起,有时称作S E L E C T子句和S E L E C T列表。
语句的下一部分是关键字F R O M。使用F R O M关键字是为了告诉SQL Server你想从哪儿取
出列。最后,你告诉SQL Server需要从哪个表中取出数据。关键字F R O M和表的名字组合在一
起,通常叫做F R O M子句。
这是最基本的S E L E C T语句,仅仅演示了你需要用S E L E C T语句所做的工作的很小部分。
需要说明的一件事是, S E L E C T语句中这些组成部分的位置和间隔并不重要,只要你所写的单
词次序是正确的。例如,下面所有的语句都得到同一个结果,只是程序清单1 7 - 1中语句的排
列较为合适。



执行了这个语句后,你将得到类似于图1 7 - 3所示的结果集。
17.4.1 限制列
或许你会说,这样返回的数据太多了。在非常大的表中,这样要比你所需分类取出的信
息多得多。例如,如果公司的副总裁告诉你他需要一张包含每位作者的名字、姓氏和电话号
第1 7学时数据查询1 5 9
下载
图17-3 程序清单1 7 - 1的结
果集
码的清单,将会出现什么样的结果呢?在上面的查询中,你可以找到你要的数据,但如果你
只看到所需要的数据,工作将容易得多。要做到这样,你应当列出需要看到的列的名称。如
果看一下上次查询的结果,你会发现列的名称都排列在返回信息的上面。在这个例子中,你
只需要去查询名为a u f n a m e、a u l n a m e和p h o n e的列。程序清单1 7 - 2列出了这次查询需要运行
的命令。
程序清单17-2 限制列数
正如你所见,我们只是把S E L E C T语句中的星号( * )用由逗号分开的列名代替。S E L E C T语
句的其余部分与我们前面列出的一模一样。查询结果如图1 7 - 4所示。
17.4.2 改变列标题
程序清单1 7 - 2的查询结果集对于使用户不必再从大量的数据中分类找到所要的信息来说
更有用。对于大多数查询,人们经常更想直接看到所查询的数据。记住,我们现在是为公司
副总裁建一个电话号码清单。
有一个限制是你有时会遇到开发人员用不易理解的名字来命名表中的列。例如,一个名
为S A P的系统中,它所有的列名都是6 ~ 8个字母的德语缩写。可以想象,一个对该系统不熟悉
的人如何才能理解这些列名。这里有一个办法就是改变列的名称,使它易于被人们理解。这
被称作“列别名”。程序清单1 7 - 3显示如何操作。
程序清单17-3 改变列标题
正如你所看到的,有两种方法可以解决这个问题。第一种是把别名放在列名的前面,并
1 6 0 SQL Server 7 24学时教程
下载
图17-4 程序清单1 7 - 2的结
果集
用等号隔开,就像列名a u f n a m e、a u l n a m e的情况一样。另一种方法是利用S Q L的A S关键
字。使用它时,可以把别名放在列名后面,并由A S分开。这两种方法得到相同的结果。但使
用A S加别名是一个更好一点的方法。该查询的结果见图1 7 - 5。
17.4.3 添加说明文字
使用S E L E C T语句时,另一种功能是向返回的结果集中加入说明文字。说明文字是加入到
返回结果中的字符串值。该值不随行的变化而变化。一个例子是在每一个从服务器返回的电
话号码前加入单词“ P h o n e:”。程序清单1 7 - 4列出了该查询的代码。
程序清单17-4 加入说明文字
我们所做的是向结果集中加入单词“ P h o n e:”(即文字说明),如图1 7 - 6所示。它利用了
S Q L字符串的连接功能:加号。你让SQL Server将两个字符串连接而形成一个字符串。
在这个例子中,你也许会想“这又怎么样呢?”。诚然,这个例子并不能充分体现它的作
用,但加入文字说明可能有很多其他的用途。到目前为止,我们学习创建了一个只有名字、
姓氏和电话号码的电话号码清单。但大多数人并不用这种方法在电话号码本里查找电话号码,
他们按照“姓氏,名字”的样式来查找。同样,我们可以使用文字说明把两个列合并起来。
程序清单1 7 - 5显示了文字说明与列信息合并的用法。
程序清单17-5 合并列
我们在程序清单1 7 - 5中所做的是利用字符串连接功能,把au_lname 和a u f n a m e两列合并
为一个逻辑列,取名“ N a m e”。该查询的结果如图1 7 - 7所示。
第1 7学时数据查询1 6 1
下载
图17-5 程序清单1 7 - 3的结
果集
17.4.4 改变行序
我们现在已得到了一个象样的电话号码清单,但还有一点不太令人满意。我们所得到的
数据不是真正按照逻辑顺序排列的。这是因为在a u t h o r s表里,数据是按照一个名为“ a u i d”
的列来排序的,即使我们不选择那个列,数据的排序仍然保持不变。现在我们需要对姓名重
新排序,使姓氏按字母排序。为此,我们使用了一个新的S Q L关键字ORDER BY。使用关键
字ORDER BY,你要告诉SQL Server按照那个列或列别名中的数据进行排序。本例中我们要
使姓名按升序排列,即从A到Z排序。程序清单1 7 - 6显示了关键字ORDER BY 的用法。
在句子中,关键字ORDER BY、需要排序的列(列别名)以及升降序说明都放在F R O M子句
后面。有时人们称它为ORDER BY字句。假如你要对同样的信息用降序方式排列,你只需将
A S C换成D E S C。如果在句子中既不加入A S C,也不加入D E S C,SQL Server将自动把结果按
1 6 2 SQL Server 7 24学时教程
下载
图17-6 程序清单1 7 - 4的结
果集
图17-7 程序清单1 7 - 5的结
果集
升序方式排列。该语句的结果见图1 7 - 8所示。
程序清单17-6 使用ORDER BY
17.5 限制行数
刚才我们已经学了利用SELECT 语句在表中选择所有或部分列。但通常你也会需要限制
所返回的行数。这样可为你提供更多的控制,以便能在表中查找你感兴趣的特定纪录。为此,
我们所要做的只是向S E L E C T语句中加入另一个关键字,它就是W H E R E关键字。
17.5.1 比较操作符
一般,当你要从表中选取行的一个子集时,可用行中的一个值去比较另一个已知值。这
是通过使用比较操作符来完成的。表17-1 列出了比较操作符的清单。
表17-1 SQL Server比较操作符
操作符定义
= 等于。对于两个完全一样的值,这个运算符将返回True 。例如1 = 1得到Tr u e
< > 不等于。对于两个不完全一样的值,这个运算符将返回Tr u e。例如1 < 3得到Tr u e
! = 不等于。对于两个不完全一样的值,这个运算符将返回Tr u e。这个运算符与“ < >”运
算符功能一样。例如1 ! = 3得到Tr u e
> 大于。当一个值大于另一个值时,这个运算符将返回True 。例如3 > 1得到Tr u e
> = 大于或等于。当一个值大于或等于另一个值时,这个运算符将返回True 。例如3 > = 1和
3 > = 3都得到Tr u e
! > 不大于。这个运算符在一个值小于另一个指定值时将返回True 。例如1 ! > 3得到Tr u e。该
操作符不常用,它等同<操作符
< 小于。当一个值小于另一个值时,这个运算符将返回True 。例如1 < 3得到Tr u e
第1 7学时数据查询1 6 3
下载
图17-8 程序清单1 7 - 6的结
果集
(续)
操作符定义
< = 小于或等于。当一个值小于或等于另一个值时,这个运算符将返回Tr u e。例如1 < = 3和
1 < = 1都得到Tr u e
! < 不小于。这个运算符在一个值大于另一个指定值时将返回Tr u e。例如3 ! < 1得到Tr u e。该
操作符不常用,它等同>操作符
通过有效地利用这些操作符,你可以限制SQL Server向用户返回的行数。我们现在来看
看两个比较操作符的应用实例。那个需要所有作者电话号码清单的副总裁又回来了,这次他
告诉你他只需要住在加州的作者的电话号码而不是所有作者的电话号码。假如你回头看一下
a u t h o r s表,会发现有一个名叫“ S t a t e”的列。程序清单1 7 - 7显示了如何把关键字W H E R E和我
们前面用到的S E L E C T语句联合起来使用,以便返回那些住在加州的作者。
程序清单17-7 使用W H E R E子句
该语句中,我们所做的只是将W H E R E子句放在S E L E C T语句的F R O M子句之后。在
W H E R E子句中,我们明确指出只需要那些s t a t e列为C A (加州的缩写)的行。你可以看到,我们
并不返回W H E R E子句中所提到的那个列,它只要在表中存在就行。该查询的结果见图1 7 - 9。
你可以在W H E R E子句中指定多个条件判据,并使用布尔操作符把它们联在一起。需要让
S Q L做的是执行基于多个W H E R E子句的S E L E C T语句。表1 7 - 2列出了可以用于在W H E R E子句
中联接条件判据的布尔操作符。
表17-2 布尔操作符
操作符描述
A N D 操作符AND是用来联接两个判据的,并且只有当这两个判据全都为True时才得出True
结果。例如,1<6 AND 5=5可以得出True,因为这两个判据都是True
1 6 4 SQL Server 7 24学时教程
下载
图17-9 程序清单1 7 - 7的结
果集
(续)
操作符描述
O R 操作符O R是用来联接两个判据的,并且只要这两个判据中有一个为Tr u e时结果就为
Tr u e。例如,1>6 OR 5=5可以得出Tr u e
N O T 操作符N O T要与这里所列的其他两个操作符中任一个联合起来使用,它对与它一起
联用的判据取反。例如, 5=5 AND NOT 1>6可以得出Tr u e,因为1不大于6
这些操作符可以让你把需要的诸多比较判据联接在一起。让我们假设那位副总裁需要所
有住在加州、其合同状态为1并且不住在O a k l a n d市的作者。重新回到a u t h o r s表,你会发现那
些跟踪合同状态和城市的列,所以工作应相对简单些,事实上也是如此。有两种方法可以完
成这一任务,程序清单1 7 - 8所示的查询列出了这两种实现方法,选择哪种完全取决于你的喜
好。
程序清单17-8 使用布尔操作符
正如你看到的,我们可以用比较操作符做很多工作,尤其是当你知道所要查询的值时。
有一件重要的事你必须清楚,那就是一组布尔操作符的联用。回忆一下中学代数,所有在圆
括号里的运算都必须优先执行。例如:假如你想找出那些符合程序清单1 7 - 8条件的作者再加
上住在堪萨斯州的作者,你的W H E R E子句应该像下面的这样:
SQL Server还为你提供了查询介于两个范围之间的数据的能力。
17.5.2 使用范围
使用关键字BETWEEN 可以查找那些介于两个已知值之间的一组未知值。要实现这种查
找,你必须知道想让SQL Server开始查找的初值以及终值。这个最大值和最小值用单词A N D
分开。程序清单1 7 - 9中使用BETWEEN 关键字从t i t l e s表中查找那些价格在15 美元到2 0美元之
间的书的名称。
程序清单17-9 使用范围
第1 7学时数据查询1 6 5
下载
我们让SQL Server做的工作是进入表中,找到介于两个定价之间的每一本书,并返回它
们的名字。我们也可以联合使用B E T W E E N关键字和N O T关键字来返回在某个范围之外的所
有行。图1 7 - 1 0显示了该查询的结果。
另一种选项是在数据库中查找某个列表中列举到的信息。
17.5.3 使用列举
SQL Server允许你使用关键字I N来搜索符合给定列举值的那些值。进行这种搜索,你必
须知道所要求的值。回到电话号码清单的例子,我们假定那位副总裁现在要你提供居住在加
州和俄勒冈州的所有作者的电话单。你可能会用以关键字A N D联接的两个比较操作符来完成
它,不过此例中使用关键词I N来做将少打一些字。程序清单1 7 - 1 0显示了如何使用关键词I N。
1 6 6 SQL Server 7 24学时教程
下载
图17-10 程序清单1 7 - 9的结
果集
图1 7 - 11 程序清单1 7 - 1 0的结
果集
程序清单17-10 使用列举
我们使用了带列举值的I N关键字,这些列举值放在圆括号里,用逗号分开。你还可以把
I N关键字和N O T关键字合起来使用,这样可以得到所有不匹配列举值的行。刚才的查询结果
如图1 7 - 11所示。
17.5.4 使用关键字LIKE
LIKE 关键字和字符串数据联用。它允许你按某种式样将列连成一串。该选项允许你使用通
配符搜索方式来查找所需的数据。当使用L I K E关键字搜索时,任何你所要查找的指定字符都必
须准确匹配,但通配符字符可以是任意的。表1 7 - 3列出了你可以与L I K E关键字联用的通配符。
表17-3 通配符
字符描述例子
% 匹配从0到任意长度的任何字符串WHERE au_lname LIKE‘M%’子句将
从表中提取作者姓氏以字符M开头的那些行
_ (下划线) 匹配任意单个字符WHERE au_fname LIKE‘_ e a n’子句将
从表中提取作者名字以e a n三字母结尾的那
些行。如D e a n、S e a n和J e a n
[ ] 匹配指定范围内的全部字符或一个字符集WHERE phone LIKE‘[ 0 - 9 ] 1 9%’子句将
提取作者电话号码以数字0 1 9、11 9、2 1 9等
开头的那些行
[ ^ ] 匹配任何指定范围以外的字符或字符集WHERE au_fname LIKE ‘[ ^ A B E R ]%’
子句将提取的作者名字不以字符A、B、E
或R开头的那些行
既然已学了S E L E C T语句的大多数基本用法,我们来看一些可与S E L E C T语句联合使用的
不同函数。
17.6 函数
五种不同类别的函数可以和SQL Server的S E L E C T语句联合使用,也可以与我们以后将讨
论的U P D AT E和I N S E RT一起使用。在本学时里我们将讨论这些函数中的一部分。
17.6.1 字符串函数
字符串函数用于控制返回给用户的字符串。这些功能仅能用于字符型数据。表1 7 - 4给出
了一些最常用的字符串函数。
表17-4 常用字符串函数
函数名描述例子
C H A R I N D E X C H A R I N D E X函数用来寻找一个指SELECT CHARINDEX(‘t e s t’,‘This is
定的字符串( s t r i n g 1 )在另一个字符串a test ’,1 )将返回11,因为t e s t从第二个字符
( s t r i n g 2 )中的起始位置串的该位置开始
语法是:C H A R I N D E X ( s t r i n g 1,s t r i -
n g 2,s t a r t p o s i t i o n )
第1 7学时数据查询1 6 7
下载
(续)
函数名描述例子
L E F T L E F T函数用来从字符串左边返回SELECT LEFT(‘This is a test’,4 )将返
指定数目的字符回“T h i s”这个词给用户
语法是:LEFT(string,number_of_
c h a r a c t e r s )
L E N L E N函数用于检测传递给它的字符SELECT LEN(‘Test of LEN’)将返回11,
串长度它是传递给该函数的字符串总长度
语法是: LEN (string)
L O W E R L O W E R函数用于将传递给它的字SELECT LOWER(‘TEST OF LOWER’)
符串全部强制转变为小写字母将返回“ test of lower”给用户
语法是: L O W E R ( s t r i n g )
LT R I M LT R I M函数用于清除掉传递给它的SELECT LT R I M (‘This is a test’)将向用
字符串中由起始位置开始的那些空格户返回“ This is a test”
语法是:LT R I M ( s t r i n g )
R I G H T R I G H T函数用来从字符串右边返回SELECT RIGHT(‘This is a test’,4 )将返
指定数目的字符回“t e s t”这个词给用户
语法是: R I G H T ( s t r i n g,n u m b e r o f c h a r a c t e r s )
RT R I M RT R I M函数用于清除掉传递给它的SELECT RT R I M (‘This is a test ’)将
字符串中由结束位置开始的那些空格向用户返回“ This is a test”
语法命令是:RT R I M ( s t r i n g )
U P P E R UPPER函数用于将传递给它的字符SELECT UPPER( ‘This is a test’)将返回
串全部强制转变为大写字母“THIS IS A TEST”给用户
语法是: U P P E R ( s t r i n g )
17.6.2 日期函数
另一类你能使用的函数是日期函数。这些函数用来操作传送来的日期时间型信息。表1 7 -
5给出了一些最常用的日期函数。
表17-5 常用的数据函数
函数名描述例子
D AT E A D D D AT E A D D函数用于向传递来的时SELECT DAT E A D D ( y e a r,1,G E T D AT E ( ) )
间值增加时间量,你需要输入所增加将向当前日期增加1年
的时间单位。例如,如果以年为单位
增加时间,键入y e a r这个单词作为时
间单位
语法是: DAT E A D D ( d a t e p a r t,a m -
o u n t,d a t e )
D AT E D I F F D AT E D I F F用来确定两个日期对于SELECT DAT E D I F F ( h o u r,‘1/1/2000
指定的时间单位的数量差别1 2 : 0 0 : 0 0’,‘1/1/2000 16:00:00’)将返回4,
语法是: DATEDIFF(datepart, date1, 这是两者以小时为单位的相差值
d a t e 2 )
D AT E PA RT D AT E PA RT函数用来返回一个日期SELECT DAT E PA RT ( m o n t h,‘1 / 1 / 2 0 0 0
对于指定的时间单位的值0 0 : 0 0 : 0 0’)将返回1
语法是: DATEPART(datepart,date)
D AY D AY函数用来返回一个指定日期中SELECT DAY (‘5/22/1976 00:04:00’)将
的日返回数值2 2
语法是: DAY ( d a t e )
1 6 8 SQL Server 7 24学时教程
下载
(续)
函数名描述例子
G E T D AT E G E T D AT E函数用来返回当前的日SELECT GETDATE() 将从系统返回当前
期与时间的日期与时间
语法是: GETDAT E ( )
M O N T H M O N T H函数用来返回一个指定日期SELECT MONTH(‘12/14/74 08:10:00’)
中的月将返回数值1 2
语法是: MONTH(date)
Y E A R Y E A R函数用来返回一个指定日期SELECT YEAR(‘4/12/78 10:00:00’)将
中的年返回数值1 9 7 8。根据系统上设置的世纪开关,
语法是: YEAR () 决定是否使用世纪数
17.6.3 算术函数
算术函数就是用来加、减、乘、除的函数。表1 7 - 6给出了标准的算术函数。
表17-6 算术函数
函数名描述例子
+ + 操作符用于两个数相加SELECT 5+10将向用户返回数值1 5
- - 操作符用于两个数相减SELECT 10-5将向用户返回数值5
* * 操作符用于两个数相乘SELECT 5*10将向用户返回数值5 0
/ / 操作符用于两个数相除SELECT 10/5将向用户返回数值2
17.6.4 数学函数
数学函数用来执行较复杂的数学运算。例如,求绝对值、平方、平方根。表1 7 - 7给出了
最常用的数学函数。
表17-7 数学函数
函数名称描述例子
A B S A B S函数返回给定数的绝对值SELECT ABS (-10)将向用户返回1 0
语法是:A B S ( n u m b e r )
C E I L I N G C E I L I N G函数返回大于或等于给定数SELECT CEILING (10.50)将向用户返回
的最大整数值数11
语法是:CEILING (number)
F L O O R F L O O R函数返回小于或等于给定数SELECT FLOOR(10.50)将向用户返回数
的最小整数值值1 0
语法是:F L O O R ( n u m b e r )
P O W E R P O W E R函数返回指定幂次数的乘方SELECT POWER(3,3 )将向用户返回数值
语法是:P O W E R ( n u m b e r,p o w e r ) 2 7
R O U N D R O U N D函数返回一个截短位数的近SELECT ROUND(10.25,1 )将向用户返回
似数数值1 0 . 3
语法是:ROUND(number,precision) SELECT SQUARE(5)将向用户返回数值2 5
S Q U A R E S Q U A R E函数返回一个数的平方
语法是:S Q U A R E ( n u m b e r )
S Q RT S Q RT函数返回一个数的平方根SELECT SQRT ( 2 5 )将向用户返回数值5
语法是:S Q RT ( n u m b e r )
第1 7学时数据查询1 6 9
下载
17.6.5 系统函数
最后一类经常使用的函数是系统函数,这些函数用来获取有关SQL Server中对象和设置
的系统信息。经常使用的一些系统函数列在表1 7 - 8中。
表17-8 系统函数
函数名称描述例子
C O N V E RT CONVERT 函数用来转变数据类型SELECT CONVERT (VARCHAR (5),1 2 3 4 5 )
语法是:CONVERT (datatype,ex- 返回字符串“ 1 2 3 4 5”
p r e s s i o n )
C U R R E N T U S E R CURRENT_USER 函数返回当前用SELECT CURRENT_USER返回你登录的
户的名字用户名
语法是:C U R R E N T U S E R ( )
D ATA L E N G T H D ATA L E N G T H函数返回用于指定SELECT DATA L E N G T H (‘Te s t’)将返回
表达式的字节数数值4
语法是:D ATALENGTH (expressi
o n )
H O S T N A M E H O S T N A M E函数返回当前用户所SELECT HOST_NAME()将返回你所登录
登录的计算机名字的计算机的名字
语法是:H O S T N A M E ( )
S Y S T E M U S E R SYSTEM_USER 函数返回当前所SELECT SYSTEM_USER将返回你当前所
登录的用户名称登录的用户名
语法是:S Y S T E M U S E R ( )
U S E R N A M E USER_NAME函数用于从给定的用SELECT USER_NAME(1)将从任意数据库
户I D返回用户名称中返回“ d b o”
17.7 课时小结
在这一学时中,我们已经学习了基本的S E L E C T语句,用它能完成相当多的功能。我们将
在下一个学时中继续深入学习。在学习了SELECT 语句之后,我们又学习了一些可与S E L E C T
语句一起使用的常用函数。
17.8 专家答疑
问题:在使用S E L E C T语句时,能返回的行数是否受限制?
解答:唯一的限制是你要等待的时间和该表的行数。如果你正在使用的表包含1 百万行,
S E L E C T语句就能从那张表返回1 百万行。
问题:SELECT 语句是否很费资源?
解答:就它自身来说, SELECT 语句不会很费资源。当你开始和许多用户一起在一个任
务繁重的系统上工作时,尤其是需要返回大量数据时, SELECT 语句会给系统增加负担。在
这种情况下,你应该非常注意限制返回的行数。
17.9 课外作业
这些思考题和练习题是供你加深理解用的。答案可以在附录“答案”中找到。
1 7 0 SQL Server 7 24学时教程
下载
17.9.1 思考题
1) 使用什么样的语句能提取表中的数据?
2) SELECT 语句的那一部分可以告诉SQL Server要从何处提取数据?
3) 怎样才能限制从SQL Server中返回的行数?
4) 怎样才能改变由SELECT 语句返回的行的排序?
5) 什么数据类型可与LIKE 关键字一起使用?
6) 什么函数能将字符串末尾的空格去掉?
7) 什么函数能将一个表达式从一种数据类型改变为另一种数据类型?
17.9.2 练习题
写一个S E L E C T语句,取出所有雇员的姓、名和雇用日期,雇用日期必须是在1 9 9 0年1月1
日之前的。并要确定用C O N V E RT函数,将字符型的日期转换成日期时间型的。
阅读(868) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~