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¡£
Ïà¹ØÎĵµ£º
ÎÒÃDz¢²»Ò»¶¨Ã¿Ò»´Î¶¼Òª½«±í¸ñÄÚµÄ×ÊÁ϶¼Íêȫץ³ö¡£ÔÚÐí¶àʱºò£¬ÎÒÃÇ»áÐèҪѡÔñÐÔµØ×¥×ÊÁÏ¡£¾ÍÎÒÃǵÄÀý×ÓÀ´Ëµ£¬ÎÒÃÇ¿ÉÄÜֻҪץ³öÓªÒµ¶î³¬¹ý $1,000 µÄ×ÊÁÏ¡£Òª×öµ½ÕâÒ»µã£¬ÎÒÃǾÍÐèÒªÓõ½ WHERE Õâ¸öÖ¸Áî¡£Õâ¸öÖ¸ÁîµÄÓï·¨ÈçÏ£º
SELECT "À¸Î»Ãû"
from "±í¸ñÃû"
WHERE "Ìõ¼þ"
ÈôÎÒÃÇÒªÓÉÒÔϵıí¸ñ×¥³öÓªÒµ¶î³¬¹ý $1, ......
ÔÚ SQL ÖУ¬ÔÚÁ½¸öÇé¿öÏ»áÓõ½ IN Õâ¸öÖ¸ÁÕâÒ»Ò³½«½éÉÜÆäÖÐÖ®Ò»©¥©¥Óë WHERE ÓйصÄÄÇÒ»¸öÇé¿ö¡£ÔÚÕâ¸öÓ÷¨Ï£¬ ÎÒÃÇÊÂÏÈÒÑÖªµÀÖÁÉÙÒ»¸öÎÒÃÇÐèÒªµÄÖµ£¬¶øÎÒÃǽ«ÕâЩ֪µÀµÄÖµ¶¼·ÅÈë IN Õâ¸ö×Ӿ䡣 IN Ö¸ÁîµÄÓ﷨ΪÏ£º
SELECT "À¸Î»Ãû"
from "±í¸ñÃû"
WHERE "À¸Î»Ãû" IN ('ÖµÒ»', 'Öµ¶þ', ...)
ÔÚÀ¨»¡ÄÚ¿ÉÒÔÓÐÒ» ......
IN Õâ¸öÖ¸Áî¿ÉÒÔÈÃÎÒÃÇÒÀÕÕÒ»»òÊý¸ö²»Á¬Ðø (discrete) µÄÖµµÄÏÞÖÆÖ®ÄÚ×¥³öÊý¾Ý¿âÖеÄÖµ£¬¶ø BETWEEN ÔòÊÇÈÃÎÒÃÇ¿ÉÒÔÔËÓÃÒ»¸ö·¶Î§ (range) ÄÚ×¥³öÊý¾Ý¿âÖеÄÖµ¡£BETWEENÕâ¸ö×Ó¾äµÄÓï·¨ÈçÏ£º
SELECT "À¸Î»Ãû"
from " ±í¸ñÃû"
WHERE "À¸Î»Ãû" BETWEEN 'ÖµÒ»' AND 'Öµ¶þ'
Õ⽫ѡ³öÀ¸Î»Öµ°üº¬ÔÚÖµÒ»¼°Öµ¶þÖ®¼äµÄÿһ±Ê× ......
LIKE ÊÇÁíÒ»¸öÔÚ WHERE ×Ó¾äÖлáÓõ½µÄÖ¸Áî¡£»ù±¾ÉÏ£¬LIKE ÄÜÈÃÎÒÃÇÒÀ¾ÝÒ»¸öÌ×ʽ (pattern) À´ÕÒ³öÎÒÃÇÒªµÄ×ÊÁÏ¡£Ïà¶ÔÀ´Ëµ£¬ÔÚÔËÓà IN µÄʱºò£¬ÎÒÃÇÍêÈ«µØÖªµÀÎÒÃÇÐèÒªµÄÌõ¼þ£»ÔÚÔËÓà BETWEEN µÄʱºò£¬ÎÒÃÇÔòÊÇÁгöÒ»¸ö·¶Î§¡£ LIKE µÄÓï·¨ÈçÏ£º
SELECT "À¸Î»Ãû"
from "±í¸ñÃû"
WHERE "À¸Î»Ãû" LIKE {Ì×ʽ}
{Ì×ʽ} ......