10, 1999 中的资料,
Store_Information 表格 store_name Los Angeles San Diego San Francisco Boston 我们就键入,
SELECT *
FROM Store_Information
WHERE Date BETWEEN 'Jan-06-1999' AND 'Jan-10-1999'
请读者注意:在不同的数据库中,日期的储存法可能会有所不同。在这里我们选择了其中一种储存法。
结果: store_name San Diego San Francisco Boston
Sales $250 $300 $700 Date Jan-07-1999 Jan-08-1999 Jan-08-1999 Sales $1500 $250 $300 $700 Date Jan-05-1999 Jan-07-1999 Jan-08-1999 Jan-08-1999 LIKE
LIKE 是另一个在 WHERE 子句中会用到的指令。基本上, LIKE 能让我们依据一个模式 (pattern) 来找出我们要的资料。相对来说,在运用 IN 的时候,我们完全地知道我们需要的条件;在运用 BETWEEN 的时候,我们则是列出一个范围。 LIKE 的语法如下:
SELECT \栏位名\ FROM \表格名\
WHERE \栏位名\模式}
{模式} 经常包括野卡 (wildcard). 以下是几个例子:
'A_Z': 所有以 'A' 起头,另一个任何值的字原,且以 'Z' 为结尾的字符串。 'ABZ' 和 'A2Z' 都符合这一个模式,而 'AKKZ' 并不符合 (因为在 A 和 Z 之间有两个字原,而不是一个字原)。
'ABC%': 所有以 'ABC' 起头的字符串。举例来说,'ABCD' 和 'ABCABC' 都符合这个模式。
'%XYZ': 所有以 'XYZ' 结尾的字符串。举例来说,'WXYZ' 和 'ZZXYZ' 都符合这个模式。
'%AN%': 所有含有 'AN'这个模式的字符串。举例来说, 'LOS ANGELES' 和 'SAN FRANCISCO' 都符合这个模式。
我们将以上最后一个例子用在我们的 Store_Information 表格上:
Store_Information 表格 store_name LOS ANGELES SAN DIEGO SAN FRANCISCO BOSTON 我们就键入,
SELECT *
FROM Store_Information WHERE store_name LIKE '%AN%'
结果: store_name LOS ANGELES SAN FRANCISCO SAN DIEGO
Sales $1500 $300 $250 Date Jan-05-1999 Jan-08-1999 Jan-07-1999 Sales $1500 $250 $300 $700 Date Jan-05-1999 Jan-07-1999 Jan-08-1999 Jan-08-1999 ORDER BY
到目前为止,我们已学到如何藉由 SELECT 及 WHERE 这两个指令将资料由表格中抓出。不过我们尚未提到这些资料要如何排列。这其实是一个很重要的问题。事实上,我们经常需要能够将抓出的资料做一个有系统的显示。这可能是由小往大 (ascending) 或是由大往小(descending)。在这种情况下,我们就可以运用 ORDER BY 这个指令来达到我们的目的。
ORDER BY 的语法如下:
SELECT \栏位名\ FROM \表格名\
[WHERE \条件\
ORDER BY \栏位名\
[] 代表 WHERE 子句不是一定需要的。不过,如果 WHERE 子句存在的话,它是在 ORDER BY 子句之前。 ASC 代表结果会以由小往大的顺序列出,而 DESC 代表结果会以
由大往小的顺序列出。如果两者皆没有被写出的话,那我们就会用 ASC。
我们可以照好几个不同的栏位来排顺序。在这个情况下, ORDER BY 子句的语法如下(假设有两个栏位):
ORDER BY \栏位一\栏位二\
若我们对这两个栏位都选择由小往大的话,那这个子句就会造成结果是依据 \栏位一\由小往大排。若有好几笔资料 \栏位一\的值相等,那这几笔资料就依据 \栏位二\由小往大排。
举例来说,若我们要依照 Sales 栏位的由大往小列出 Store_Information 表格中的资料,
Store_Information 表格 store_name Los Angeles San Diego San Francisco Boston 我们就键入,
SELECT store_name, Sales, Date FROM Store_Information ORDER BY Sales DESC
结果: store_name Los Angeles Boston San Francisco San Diego Sales $1500 $700 $300 $250 Date Jan-05-1999 Jan-08-1999 Jan-08-1999 Jan-07-1999 Sales $1500 $250 $300 $700 Date Jan-05-1999 Jan-07-1999 an-08-1999 Jan-08-1999 在以上的例子中,我们用栏位名来指定排列顺序的依据。除了栏位名外,我们也可以用栏位的顺序 (依据 SQL 句中的顺序)。在 SELECT 后的第一个栏位为 1,第二个栏位为 2,以此类推。在上面这个例子中,我们用以下这句 SQL 可以达到完全一样的效果:
SELECT store_name, Sales, Date FROM Store_Information ORDER BY 2 DESC
函数
既然数据库中有许多资料都是已数字的型态存在,一个很重要的用途就是要能够对这些数字做一些运算,例如将它们总合起来,或是找出它们的平均值。SQL 有提供一些这一类的函数。它们是:
AVG (平均) COUNT (计数) MAX (最大值) MIN (最小值) SUM (总合) 运用函数的语法是:
SELECT \函数名\栏位名\
FROM \表格名\
举例来说,若我们要由我们的范例表格中求出 Sales 栏位的总合,
Store_Information 表格 store_name Los Angeles San Diego Los Angeles Boston 我们就键入, Sales $1500 $250 $300 $700 Date Jan-05-1999 Jan-07-1999 Jan-08-1999 Jan-08-1999
SELECT SUM(Sales) FROM Store_Information
结果:
SUM(Sales) $2750
$2750 代表所有 Sales 栏位的总合: $1500 + $250 + $300 + $700.
除了函数的运用外,SQL 也可以做简单的数学运算,例如加(+)和减(-)。对于文字类的资料,SQL 也有好几个文字处理方面的函数,例如文字相连 (concatenation),文字修整 (trim),以及子字符串 (substring)。不同的数据库对这些函数有不同的语法,所以最好是参考您所用数据库的信息,来确定在那个数据库中,这些函数是如何被运用的。
COUNT
在上一页有提到, COUNT 是函数之一。由于它的使用广泛,我们在这里特别提出来讨论。
基本上, COUNT 让我们能够数出在表格中有多少笔资料被选出来。它的语法是:
SELECT COUNT(\栏位名\ FROM \表格名\
举例来说,若我们要找出我们的范例表格中有几笔 store_name 栏不是空白的资料时,
Store_Information 表格 store_name Los Angeles San Diego Los Angeles Boston 我们就键入,
SELECT COUNT(store_name) FROM Store_Information WHERE store_name is not NULL
结果:
Count(store_name) 4
\是 \这个栏位不是空白\的意思。
COUNT 和 DISTINCT 经常被合起来使用,目的是找出表格中有多少笔不同的资料 (至于这些资料实际上是什么并不重要)。举例来说,如果我们要找出我们的表格中有多少个不同的 store_name,我们就键入,
SELECT COUNT(DISTINCT store_name) FROM Store_Information
结果:
Count(DISTINCT store_name) 3
Sales $1500 $250 $300 $700 Date Jan-05-1999 Jan-07-1999 Jan-08-1999 Jan-08-1999
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库SQL语句基础教程(2)在线全文阅读。
相关推荐: