易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL 外部连接的用法

之前我们看到的左连接 (left join),又称内部连接 (inner join)。在这个情况下,要两个表格内都有同样的值,那一笔资料才会被选出。那如果我们想要列出一个表格中每一笔的资料,无论它的值在另一个表格中有没有出现,那该怎么办呢?在这个时候,我们就需要用到 SQL OUTER JOIN (外部连接) 的指令。
外部连接的语法是依数据库的不同而有所不同的。举例来说,在 Oracle 上,我们会在 WHERE 子句中要选出所有资料的那个表格之后加上一个 "(+)" 来代表说这个表格中的所有资料我们都要。
假设我们有以下的两个表格:
Store_Information 表格
store_name
Sales
Date
Los Angeles
$1500
Jan-05-1999
San Diego
$250
Jan-07-1999
Los Angeles
$300
Jan-08-1999
Boston
$700
Jan-08-1999
Geography 表格
region_name
store_name
East
Boston
East
New York
West
Los Angeles
West
San Diego
我们需要知道每一间店的营业额。如果我们用一个普通的连接,我们将会漏失掉 'New York'这个店,因为它并不存在于 Store_Information 这个表格。所以,在这个情况下,我们需要用外部连接来串联这两个表格:
SELECT A1.store_name, SUM(A2.Sales) SALES
from Georgraphy A1, Store_Information A2
WHERE A1.store_name = A2.store_name (+)
GROUP BY A1.store_name
我们在这里是使用了 Oracle 的外部连接语法。
结果:
store_name
SALES
Boston
$700
New York
Los Angeles
$1800
San Diego
$250
请注意: 当第二个表格没有相对的资料时,SQL 会传回 NULL 值。在这一个例子中, 'New York' 并不存在于 Store_Information 表格,所以它的 "SALES" 栏位是 NULL。


相关文档:

sql 常用函数的用法

常用函数
select replicate('a1',3)--a1的值重复三次
结果为:a1a1a1
 
select len('222')
--计算字符的个数结果为
 
select datalength('222')
--计算字节数,结果为
 
select datalength(N'222')
-- unicode类型,占用个字节,结果为
 
select substring('abcde',1,3)
-- 格式:substr ......

实例分析SQL中除法的三种写法

首先请看
http://topic.csdn.net/u/20070821/15/8a2dac05-51b8-4eb1-b41d-4fbe8a232c85.html
帖中从实际问题出发,讨论SQL语句中如何表示除法运算。
 
以下是问题的给出与简要描述:
 表A:商店信息
ANO, ANAME, WQTY, CITY
101, 韶山书店, 15, 长沙
204, 前门商店, 89, 北京
256 ......

SQL WHERE的用法

我们并不一定每一次都要将表格内的资料都完全抓出。在许多时候,我们会需要选择性地抓资料。就我们的例子来说,我们可能只要抓出营业额超过 $1,000 的资料。要做到这一点,我们就需要用到 WHERE 这个指令。这个指令的语法如下:
SELECT "栏位名"
from "表格名"
WHERE "条件"
若我们要由以下的表格抓出营业额超过 $1, ......

SQL ORDER BY的用法

到目前为止,我们已学到如何藉由 SELECT 及 WHERE这两个指令将资料由表格中抓出。不过我们尚未提到这些资料要如何排列。这其实是一个很重要的问题。事实上,我们经常需要能够将抓出的资料做一个有系统的显示。这可能是由小往大 (ascending) 或是由大往小(descending)。在这种情况下,我们就可以运用 ORDER BY这个指令来达到 ......

SQL HAVING的用法

那我们如何对函数产生的值来设定条件呢?举例来说,我们可能只需要知道哪些店的营业额有超过 $1,500。在这个情况下,我们不能使用 WHERE 的指令。那要怎么办呢?很幸运地,SQL 有提供一个 HAVING 的指令,而我们就可以用这个指令来达到这个目标。 HAVING 子句通常是在一个 SQL 句子的最后。一个含有 HAVING 子句的 SQL 并不 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号