WD1X.COM - 问答一下,轻松解决,电脑应用解决专家
主板显卡CPU内存显示器
硬盘维修显卡维修显示器维修
注册表系统命令DOS命令Win8
存储光存储鼠标键盘
内存维修打印机维修
WinXPWin7Win11Linux
硬件综合机箱电源散热器手机数码
主板维修CPU维修键盘鼠标维修
Word教程Excel教程PowerPointWPS
网络工具系统工具图像工具
数据库javascript服务器
PHP教程CSS教程XML教程

SQL SERVER查询数据(二)

更新时间:2005-12-30 19:21 作者:45IT收集点击:

改变行序  

我们现在已得到了一个象样的电话号码清单,但还有一点不太令人满意。我们所得到的数据不是真正按照逻辑顺序排列的。这是因为在authors表里,数据是按照一个名为“au_id”的列来排序的,即使我们不选择那个列,数据的排序仍然保持不变。现在我们需要对姓名重新排序,使姓氏按字母排序。为此,我们使用了一个新的SQL关键字ORDER BY 。使用关键字ORDER BY ,你要告诉SQL Server 按照那个列或列别名中的数据进行排序。本例中我们要使姓名按升序排列,即从A 到Z 排序。下面显示了关键字ORDER BY 的用法。  

SELECT au_lname+','+au_fname AS 'Name',phone AS 'Phone' FROM authors ORDER BY 'Name'   

在句子中,关键字ORDER BY 、需要排序的列(列别名)以及升降序说明都放在FROM 子句后面。有时人们称它为ORDER BY 字句。假如你要对同样的信息用降序方式排列,你只需将ASC换成DESC 。如果在句子中既不加入ASC,也不加入DESC,SQL Server 将自动把结果按下载升序方式排列。  

注意:我们在上面的例子中所做的是利用字符串连接功能,把au_lname 和au_fname两列合并为一个逻辑列,取名“Name”  


限制行数  

前面我们已经学了利用SELECT 语句在表中选择所有或部分列。但更多的时候你会需要限制所返回的行数,以便能在表中查找你感兴趣的特定纪录。如果每一次的查询都返回所有的记录,假如wincheer是老板的话,我想你应该做的事情是写一份求职信,然后去找另一个地方。为此,我们所要做的只是向SELECT语句中加入另一个关键字,它就是WHERE关键字。我一直很执著的认为,WHERE是衡量一个数据库程序员水平的重要标志。  

1.比较操作符  
一般,当你要从表中选取行的一个子集时,可用行中的一个值去比较另一个已知值。这是通过使用比较操作符来完成的。下面列出了比较操作符的清单。  
-----------------------------------------------------------------------------------------------  
=      等于。对于两个完全一样的值,这个运算符将返回True  
<>     不等于。对于两个不完全一样的值,这个运算符将返回True  
!=     不等于。这个运算符与“< >”运算符功能一样。  
>      大于。当一个值大于另一个值时,这个运算符将返回True。  
>=     大于或等于。当一个值大于或等于另一个值时,这个运算符将返回True。  
!>     不大于。该操作符不常用,它等同<操作符  
<      小于。当一个值小于另一个值时,这个运算符将返回True  
<=     小于或等于。当一个值小于或等于另一个值时,这个运算符将返回True  
!<     不小于。该操作符不常用,它等同>操作符  
----------------------------------------------------------------------------------------------  
通过有效地利用这些操作符,你可以限制SQL Server 向用户返回的行数。来看一个例子:  

SELECT au_lname+','+au_fname AS 'Name',phone AS 'Phone'   
FROM authors   
WHERE state='CA'   
ORDER BY 'Name'  
   
该语句中,我们所做的只是将WHERE子句放在SELECT语句的FROM子句之后。在WHERE子句中,我们明确指出只需要那些state列为CA(加州的缩写)的行。你可以在WHERE子句中指定多个条件判据,并使用布尔操作符把它们联在一起。需要让SQL做的是执行基于多个WHERE子句的SELECT语句。下面列出了可以用于在WHERE子句中联接条件判据的布尔操作符。  
---------------------------------------------------------------------------------------  
AND    用来联接两个判据的,并且只有当这两个判据全都为True时才得出True结果。  
OR     用来联接两个判据的,并且只要这两个判据中有一个为True 时结果就为True  
NOT    要与这里所列的其他两个操作符中任一个联合起来使用,它对与它一起联用的判据取反  
---------------------------------------------------------------------------------------  

假设我们需要所有住在加州、其合同状态为1 并且不住在Oakland市的作者。  

SELECT au_lname+','+au_fname AS 'Name',phone AS 'Phone'   
FROM authors   
WHERE state='CA' AND   
      contract=1 AND  
      NOT city='Oakland'  
ORDER BY 'Name'  

注意:有一件重要的事你必须清楚,那就是一组布尔操作符的联用。回忆一下中学代数,所有在圆括号里的运算都必须优先执行(千万不要告诉我你没有上过中学)。例如:假如你想找出那些符合上面条件的作者再加上住在堪萨斯州的作者,你的WHERE子句应该像下面的这样:  
WHERE state='KS' OR  
      (state='CA' AND   
      contract=1 AND  
      NOT city='Oakland')  

SQL Server 还为你提供了查询介于两个范围之间的数据的能力。  

2.使用范围  
     
使用关键字BETWEEN 可以查找那些介于两个已知值之间的一组未知值。要实现这种查找,你必须知道想让SQL Server 开始查找的初值以及终值。这个最大值和最小值用单词AND分开。下面的语句中使用BETWEEN 关键字从titles表中查找那些价格在15 美元到20美元之间的书的名称。  

SELECT title  
FROM authors  
WHERE price BETWEEN 15 AND 20  

我们也可以联合使用BETWEEN 关键字和NOT关键字来返回在某个范围之外的所有行。没有忘记NOT吧?看看前面。  

另一种选项是在数据库中查找某个列表中列举到的信息。  

3.使用列举  

SQL Server 允许你使用关键字IN来搜索符合给定列举值的那些值。进行这种搜索,你必须知道所要求的值。  

回到电话号码清单的例子,我们假定现在要提供居住在加州和俄勒冈州的所有作者的电话单。你可能会用以关键字AND 联接的两个比较操作符完成它,不过此例中使用关键词IN来做将少打一些字。因为有人说过,懒惰、怕麻烦是程序员可贵的品质 :-)  

SELECT au_lname+','+au_fname AS 'Name',phone AS 'Phone'   
FROM authors   
WHERE state in ('CA','OR')  
ORDER BY 'Name' ASC  

我们使用了带列举值的 IN 关键字,这些列举值放在圆括号里,用逗号分开。你还可以把IN关键字和NOT关键字合起来使用,这样可以得到所有不匹配列举值的行。  

4.使用关键字LIKE  
LIKE 关键字和字符串数据联用。它允许你按某种式样将列连成一串。该选项允许你使用通配符搜索方式来查找所需的数据。当使用LIKE关键字搜索时,任何你所要查找的指定字符都必须准确匹配,但通配符字符可以是任意的。下表列出了你可以与LIKE关键字联用的通配符  
----------------------------------------------------------------------  
%     匹配从0 到任意长度的任何字符串  
_      (下划线)匹配任意单个字符  
[]     匹配指定范围内的全部字符或一个字符集  
[^]    匹配任何指定范围以外的字符或字符集  
----------------------------------------------------------------------  

既然已学了SELECT语句的大多数基本用法,我们来看一些可与SELECT 语句联合使用的不同函数------讨厌的电话!明天吧?OK ? 

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
你可能感兴趣的内容