SQL ±í¸ñÁ¬½ÓµÄÓ÷¨
ÏÖÔÚÎÒÃǽéÉÜÁ¬½Ó(join)µÄ¸ÅÄî¡£ÒªÁ˽âÁ¬½Ó£¬ÎÒÃÇÐèÒªÓõ½Ðí¶àÎÒÃÇ֮ǰÒѽéÉܹýµÄÖ¸Áî¡£ ÎÒÃÇÏȼÙÉèÎÒÃÇÓÐÒÔϵÄÁ½¸ö±í¸ñ£¬
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
¶øÎÒÃÇÒªÖªµÀÃ¿Ò»Çø (region_name) µÄÓªÒµ¶î (sales)¡£ Geography Õâ¸ö±í¸ñ¸æËßÎÒÃÇÃ¿Ò»ÇøÓÐÄÄЩµê£¬¶ø Store_Information ¸æËßÎÒÃÇÿһ¸öµêµÄÓªÒµ¶î¡£ ÈôÎÒÃÇÒªÖªµÀÃ¿Ò»ÇøµÄÓªÒµ¶î£¬ÎÒÃÇÐèÒª½«ÕâÁ½¸ö²»Í¬±í¸ñÖеÄ×ÊÁÏ´®ÁªÆðÀ´¡£µ±ÎÒÃÇ×ÐϸÁ˽âÕâÁ½¸ö ±í¸ñºó£¬ÎÒÃǻᷢÏÖËüÃǿɾÓÉÒ»¸öÏàͬµÄÀ¸Î»£¬store_name£¬Á¬½ÓÆðÀ´¡£ÎÒÃÇÏȽ« SQL ¾äÁгö£¬ Ö®ºóÔÙÌÖÂÛÿһ¸ö×Ó¾äµÄÒâÒ壺
SELECT A1.region_name REGION, SUM(A2.Sales) SALES
from Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name
½á¹û:
REGION
SALES
East
$700
West
$2050
ÔÚµÚÒ»ÐÐÖУ¬ÎÒÃǸæËß SQL ȥѡ³öÁ½¸öÀ¸Î»£ºµÚÒ»¸öÀ¸Î»ÊÇ Geography ±í¸ñÖÐµÄ Region_name À¸Î» (ÎÒÃÇÈ¡ÁËÒ»¸ö±ðÃû½Ð×ö REGION)£»µÚ¶þ¸öÀ¸Î»ÊÇ Store_Information ±í¸ñÖÐµÄ sales À¸Î» (±ðÃûΪ SALES)¡£Çë×¢ÒâÔÚÕâÀïÎÒÃÇÓÐÓõ½±í¸ñ±ðÃû£ºGeography ±í¸ñµÄ±ðÃûÊÇ A1£¬Store_Information ±í¸ñµÄ±ðÃûÊÇ A2¡£ÈôÎÒÃÇûÓÐÓñí¸ñ±ðÃûµÄ»°£¬ µÚÒ»Ðоͻá±ä³É
SELECT Geography.region_name REGION, SUM(Store_Information.Sales) SALES
ºÜÃ÷ÏԵأ¬Õâ¾Í¸´ÔÓ¶àÁË¡£ÔÚÕâÀïÎÒÃÇ¿ÉÒÔ¿´µ½±í¸ñ±ðÃûµÄ¹¦ÓãºËüÄÜÈà SQL ¾äÈÝÒ×±»Á˽⣬ÓÈÆäÊÇÕâ¸ö SQL ¾äº¬¸ÇºÃ¼¸¸ö²»Í¬µÄ±í¸ñʱ¡£
½ÓÏÂÀ´ÎÒÃÇ¿´µÚÈýÐУ¬¾ÍÊÇ WHERE ×Ӿ䡣 ÕâÊÇÎÒÃDzûÊöÁ¬½ÓÌõ¼þµÄµØ·½¡£ÔÚÕâÀÎÒÃÇҪȷÈÏ Geography ±í¸ñÖÐ Store_name À¸Î»µÄÖµÓë Store_Information ±í¸ñÖÐ store_name À¸Î»µÄÖµÊÇÏàµÈµÄ¡£Õâ¸ö WHERE ×Ó¾äÊÇÒ»¸öÁ¬½ÓµÄÁé»êÈËÎÒòΪËüµÄ½ÇÉ«ÊÇÈ·¶¨Á½¸ö±í¸ñÖ®¼äµÄÁ¬½ÓÊÇÕýÈ·µÄ¡£Èç¹û WHERE×Ó¾äÊÇ´íÎóµÄ£¬ÎÒÃǾͼ«¿ÉÄܵõ½Ò»¸öµÑ¿¨¶ùÁ¬½Ó (Cartesian join)¡£µÑ¿¨¶ùÁ¬½Ó»áÔì³ÉÎÒÃǵõ½ËùÓÐÁ½¸ö±í¸ñÿÁ½ÐÐÖ®¼äËùÓпÉÄܵÄ×éºÏ¡£ÔÚÕâ¸öÀý×ÓÖУ¬µÑ¿¨¶ùÁ¬½Ó»áÈÃÎÒÃǵõ½ 4 x 4 = 16 ÐеĽá¹û¡£
Ïà¹ØÎĵµ£º
¼ÙÉèÈçÏÂÓ¦Óãº
Á½Õű헗Óû§±íTDefUser£¨userid£¬address,phone£©ºÍÏû·Ñ±íTAccConsume(userid,time,amount)£¬ÐèÒª²éÏû·Ñ³¬¹ý5000µÄÓû§¼Ç¼¡£
ÓÃexists:
select * from TDefUser
where exists (select 1 from TAccConsume where TDefUser.userid=TAccConsume.userid and TAccConsume.amount>5000)
ÓÃi ......
³£Óú¯Êý
select replicate('a1',3)--a1µÄÖµÖØ¸´Èý´Î
½á¹ûΪ£ºa1a1a1
select len('222')
--¼ÆËã×Ö·ûµÄ¸öÊý½á¹ûΪ
select datalength('222')
--¼ÆËã×Ö½ÚÊý£¬½á¹ûΪ
select datalength(N'222')
-- unicodeÀàÐÍ£¬Õ¼Óøö×Ö½Ú£¬½á¹ûΪ
select substring('abcde',1,3)
-- ¸ñʽ£ºsubstr ......
Ò»¡¢SQLÓïÑÔÖ÷Òª×é³É²¿·Ö ¶þ¡¢DDL ˵Ã÷£ººóÐøµÄËùÓвÙ×÷Õë¶Ôcreate table Öн¨µÄÈýÕÅ±í ¢Ùcreate table
student񡜧 1 Create Table Student 2 ( 3 ......
IN Õâ¸öÖ¸Áî¿ÉÒÔÈÃÎÒÃÇÒÀÕÕÒ»»òÊý¸ö²»Á¬Ðø (discrete) µÄÖµµÄÏÞÖÆÖ®ÄÚ×¥³öÊý¾Ý¿âÖеÄÖµ£¬¶ø BETWEEN ÔòÊÇÈÃÎÒÃÇ¿ÉÒÔÔËÓÃÒ»¸ö·¶Î§ (range) ÄÚ×¥³öÊý¾Ý¿âÖеÄÖµ¡£BETWEENÕâ¸ö×Ó¾äµÄÓï·¨ÈçÏ£º
SELECT "À¸Î»Ãû"
from " ±í¸ñÃû"
WHERE "À¸Î»Ãû" BETWEEN 'ÖµÒ»' AND 'Öµ¶þ'
Õ⽫ѡ³öÀ¸Î»Öµ°üº¬ÔÚÖµÒ»¼°Öµ¶þÖ®¼äµÄÿһ±Ê× ......
ÄÇÎÒÃÇÈçºÎ¶Ôº¯Êý²úÉúµÄÖµÀ´É趨Ìõ¼þÄØ£¿¾ÙÀýÀ´Ëµ£¬ÎÒÃÇ¿ÉÄÜÖ»ÐèÒªÖªµÀÄÄЩµêµÄÓªÒµ¶îÓг¬¹ý $1,500¡£ÔÚÕâ¸öÇé¿öÏ£¬ÎÒÃDz»ÄÜʹÓà WHERE µÄÖ¸Áî¡£ÄÇÒªÔõô°ìÄØ£¿ºÜÐÒÔ˵أ¬SQL ÓÐÌṩһ¸ö HAVING µÄÖ¸Á¶øÎÒÃǾͿÉÒÔÓÃÕâ¸öÖ¸ÁîÀ´´ïµ½Õâ¸öÄ¿±ê¡£ HAVING ×Ó¾äͨ³£ÊÇÔÚÒ»¸ö SQL ¾ä×ÓµÄ×îºó¡£Ò»¸öº¬ÓÐ HAVING ×Ó¾äµÄ SQL ²¢²» ......