¼¹®:
ÀÌ ±ÛÀº µ¶ÀÚ°¡ SQL µ¥ÀÌÅ׺£À̽º¿¡¼ SELECT, INSERT, UPDATE, DELETEÀÇ
±âº»À» ¾È´Ù°í °¡Á¤ÇÑ´Ù. À̵éÀÌ ¹»ÇÏ´ÂÁö ¸ð¸¥´Ù¸é ´Ù¸¥ ±ÛÀ» ¿ì¼±
Âü°íÇ϶ó. SELECT ÁúÀǸ¦ ÇÒ ¼ö ÀÖ´Ù¸é ÀÌ ±ÛÀ» Àдµ¥ ÃæºÐÇÏ´Ù.
±×·¯¸é ÁýÇÕ ÇÔ¼ö·Î °¡ÀÚ!
¿ä¾à:
ÀÌ ´Ù¼Ò Á¾ÇÕÀûÀÎ ±Û¿¡¼ óÀ½¿¡´Â PostgreSQL¿¡¼ °¡Àå ±âº»ÀûÀÎ ÁýÇÕ ÇÔ¼ö
5°³¸¦ ´Ù·é´Ù. À̵éÀº count(), min(), max(), avg(), sum()ÀÌ´Ù. ±×ÈÄ
ÀÚÁÖ »ç¿ëµÇ´Â ¿©·¯ ¿¬»êÀÚ¸¦ ´Ù·ê °ÍÀÌ´Ù. °³¹ßȯ°æ¿¡ µû¶ó ¿¬½ÀÇÏ´Â
ÁÁÀº ¹æ¹ýÀº Á÷Á¢ DBMS¿¡¼ ½ÇÇàÇÏ¿© ±×´ë·Î »ç¿ëÇÒ ¼ö ÀÖ´Â °á°ú¸¦ ¾ò´Â °ÍÀÌ´Ù.
ÀÌ ¹æ¹ýÀº ÁýÇÕ ÇÔ¼ö¸¦ »ç¿ëÇÒ ¶§ ºÐ¸íÇÏ´Ù. ¸¶Áö¸·À¸·Î ÁýÇÕ ÇÔ¼ö¿Í
ÇÔ²² ¿¬»êÀÚ¸¦ »ç¿ëÇÏ´Â ¹ýÀ» ´Ù·ê °ÍÀÌ´Ù. ÀÌ ±ÛÀº Á¤È®È÷ ¿øÇÏ´Â
ÀڷḦ ÁúÀÇÇϱâÀ§ÇØ °£´ÜÇÑ ¿¬»êÀÚ¸¦ »ç¿ëÇÏ´Â ¹ýÀ» ¼³¸íÇÑ´Ù.
ÁýÇÕ(aggregate) ÇÔ¼ö¶õ ¹«¾ùÀΰ¡?
ÁýÇÕ ÇÔ¼ö´Â count()³ª sum()°ú °°ÀÌ ÃÑÇÕÀ» °è»êÇϱâÀ§ÇÑ ÇÔ¼öÀÌ´Ù.
SQL ÁýÇÕ ÇÔ¼ö·Î ¿©·¯ Åë°è°ªÀ» ¾òÀ» ¼ö ÀÖ´Ù. ÁýÇÕ ÇÔ¼ö´Â
µ¥ÀÌÅͺ£À̽º¿¡¼ Á¤º¸¸¦ ¾ò´Âµ¥ ÇÊ¿äÇÑ Äڵ差À» Å©°Ô ÁÙÀδÙ.
(PostgreSQL 7.1 ¸Þ´º¾ó¿¡¼ ¹ßÃé)
aggregate_name (Ç¥Çö½Ä)
aggregate_name (ALL Ç¥Çö½Ä)
aggregate_name (DISTINCT Ç¥Çö½Ä)
aggregate_name ( * )
aggregate_name´Â ÀÌ¹Ì Á¤ÀÇµÈ ÁýÇÕ ÇÔ¼öÀ̰í, Ç¥Çö½ÄÀº ±× ÀÚü·Î ÁýÇÕ ÇÔ¼ö¸¦ Æ÷ÇÔÇÏÁö ¾Ê´Â Ç¥Çö½ÄÀÌ´Ù.
ù¹øÂ° °æ¿ì´Â NULLÀÌ ¾Æ´Ñ Çʵ带 °¡Áø ¸ðµç Çà¿¡ Àû¿ëµÈ´Ù. (½ÇÁ¦·Î NULLÀ» ¹«½ÃÇÒÁö ¿©ºÎ´Â ÁýÇÕ ÇÔ¼ö¿¡ ´Þ·È´Ù. ±×·¯³ª ¸ðµç Ç¥ÁØ ÇÔ¼ö´Â ¹«½ÃÇÑ´Ù.) µÎ¹øÂ°´Â ALLÀÌ ±âº»°ªÀ̱⠶§¹®¿¡ ù¹øÂ°¿Í °°´Ù. ¼¼¹øÂ° °æ¿ì´Â NULLÀÌ ¾Æ´Ñ Çʵ带 °¡Áø ¸ðµç ±¸º°µÇ´Â Çà¿¡ Àû¿ëµÈ´Ù. ¸¶Áö¸· °æ¿ì´Â NULL ¿©ºÎ¿Í °ü°è¾øÀÌ ¸ðµç Çà¿¡ Àû¿ëµÈ´Ù. Ưº°ÇÑ ÀԷ°ªÀÌ ÁöÁ¤µÇÁö ¾Ê¾Ò±â ¶§¹®¿¡ º¸Åë count() ÁýÇÕ ÇÔ¼ö¿¡¼¸¸ À¯¿ëÇÏ´Ù.
Ã¥ ÆÇ¸Å¸¦ ±â·ÏÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù°í °¡Á¤ÇÏÀÚ. Ã¥ Á¦¸ñ, °¡°Ý, ÆÇ¸ÅÀÏÀ» ±â·ÏÇÏ´Â "sale"À̶õ Å×À̺íÀÌ ÀÖ´Ù. 2001³â 3¿ù¿¡ ÆÇ¸ÅÇÑ Ã¥ÀÇ ÃѰ¡°ÝÀ» ¾Ë°í½Í´Ù. ÁýÇÕ ÇÔ¼ö°¡ ¾ø´Ù¸é 2001³â 3¿ù¿¡ ÆÇ¸ÅµÈ ¸ðµç ÇàÀ» selectÇØ¾ß ÇÑ´Ù. Áö±ÝÀº 10 Çà¹Û¿¡ ¾ø´Ù¸é Å©°Ô ¹®Á¦µÉ °ÍÀÌ ¾ø´Ù. (¹°·Ð ÇÑ´Þ¿¡ Ã¥À» 10±Ç ¹Û¿¡ ÆÈÁö¸øÇß´Ù¸é Å« µ·À» ¹ú ¼ö ¾øÀ» °ÍÀÌ´Ù.) ±×·¯³ª ÇÑ´Þ¿¡ Æò±Õ 2000±ÇÀ» ÆÄ´Â ¼Á¡À» »ý°¢Çغ¸ÀÚ. ÇàµéÀ» Çϳª¾¿ »ìÆìº¸´Â °ÍÀÌ È¿À²ÀûÀ¸·Î º¸ÀÌÁö´Â ¾Ê´Â´Ù.
ÁýÇÕ ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù¸é ´Ü¼øÈ÷ 2001³â 3¿ù¿¡ ÇØ´çÇϴ å °¡°Ý ¿ÀÇ sum()À» selectÇÏ¸é µÈ´Ù. ÁúÀÇ´Â ÇÑ °ª¸¸À» ¹ÝȯÇϰí, Äڵ忡¼ ÇàµéÀ» Çϳª¾¿ »ìÆìº¼ Çʿ䰡 ¾ø´Ù!
SUM() ÇÔ¼ö
sum() ÇÔ¼ö´Â À§ÀÇ ¿¹Ã³·³ ¸Å¿ì À¯¿ëÇÑ´Ù. ´ÙÀ½°ú °°Àº °¡»óÀûÀÎ Å×À̺íÀ» °¡Á¤ÇÏÀÚ.
table sale ( book_title varchar(200), book_price real, date_of_purchase datetime )
ÁýÇÕ ÇÔ¼ö¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸¸é:
SELECT * FROM sale WHERE date_of_purchase BETWEEN '03/01/2001' AND
'04/01/2001';
±×·¯¸é 2001³â 3¿ù¿¡ ÆÇ¸ÅÇÑ ¸ðµç ¿À» ¹ÝȯÇÑ´Ù.
ÁýÇÕ ÇÔ¼ö¸¦ »ç¿ëÇϸé:
SELECT SUM(book_price) AS total FROM sale WHERE date_of_purchase BETWEEN
'03/01/2001' AND '04/01/2001';
±×·¯¸é totalÀ̶ó´Â ¿·Î 2001³â 3¿ù¿¡ ÆÇ¸ÅÇÑ ÃÑ ±Ý¾×À» ´ãÀº ÇÑ ÇàÀ» ¹ÝȯÇÑ´Ù.
¶Ç sum()¾È¿¡ ¼öÇÐ ¿¬»êÀÚ¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î Ã¥ °¡°ÝÀÇ 20%ÀÎ ÀÌÀ±ÀÇ ÇÕÀ» ¾Ë°í ½Í´Ù¸é,
SELECT SUM(book_price) AS total, SUM(book_price * .2) AS profit FROM sale WHERE date_of_purchase BETWEEN '03/01/2001' AND '04/01/2001';
´õ Å©°Ô º»´Ù¸é sum() ÇÔ¼öÀÇ ´Ù¸¥ ¿ëµµµµ ãÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¿¹¸¦ µé¾î ¼ö¼ö·á¸¦ °è»êÇϰí, ÀÚ¼¼ÇÑ º¸°í¼¸¦ ¸¸µé°í, Åë°èÀûÀÎ ÃÑÇÕÀ» »ý¼ºÇÒ ¼ö ÀÖ´Ù. º¸°í¼¸¦ ÀÛ¼ºÇÑ´Ù¸é ¼öõ ¼ö¸¸ ÇàÀ» Çϳª¾¿ »ìÆìº¸´Â °Íº¸´Ù´Â SQLÀÌ °è»êÇÏ¿© °£´ÜÈ÷ °á°ú¸¦ Ãâ·ÂÇÏ´Â °ÍÀÌ ÈξÀ ´õ ½±´Ù.
count() ÇÔ¼ö
´Ù¸¥ À¯¿ëÇÑ ÁýÇÕ ÇÔ¼ö´Â count()ÀÌ´Ù. ÀÌ ÇÔ¼ö´Â Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ÇàÀÇ
°¹¼ö¸¦ ¹ÝȯÇÑ´Ù. ¿¹¸¦ µé¾î ´º½º¸¦ ÀúÀåÇÏ´Â µ¥ÀÌÅͺ£À̽º¿¡¼ Çϳª¾¿
¼¼Áö¾Ê°í µ¥ÀÌÅ׺£À̽ºÀÇ ¸ðµç ´º½º °¹¼ö¸¦ ¾Ë ¼ö ÀÖ´Ù. ´ÙÀ½°ú °°ÀÌ °£´ÜÇÏ´Ù.
SELECT COUNT(*) AS myCount FROM news;
±×·¯¸é µ¥ÀÌÅ׺£À̽ºÀÇ ¸ðµç ´º½º °¹¼ö¸¦ ¹ÝȯÇÑ´Ù.
MAX()¿Í MIN() ÇÔ¼ö
ÀÌ µÎ ÇÔ¼ö´Â ÁöÁ¤ÇÑ ¿¿¡¼ ÃÖ´ë°ªÀ̳ª ÃÖ¼Ò°ªÀ» ¹ÝȯÇÑ´Ù. (¼Á¡ÀÇ ¿¹¿¡¼)
ÆÇ¸ÅÇÑ °¡Àå ºñ½Ñ Ã¥°ú °¡Àå ½Ñ Ã¥À» »¡¸® ¾Ë ¼ö ÀÖ¾î¼ À¯¿ëÇÏ´Ù. ÀÌ ÁúÀÇ´Â
´ÙÀ½°ú °°´Ù.
SELECT MAX(book_price) AS highestPrice, MIN(book_price) AS lowestPrice FROM sale WHERE date_of_purchase BETWEEN '03/01/2001' AND '04/01/2001';
ÀÌ °æ¿ì¿¡µµ µ¥ÀÌÅ׺£À̽º¿¡¼ ¸ðµç °ÍÀ» selectÇÏ¿© Çϳª¾¿ »ìÆìº¸¸ç °è»êÇÏÁö ¾Ê¾Æµµ µÈ´Ù.
AVG() ÇÔ¼ö
ÀÌ ÁýÇÕ ÇÔ¼ö´Â Ưº°È÷ ¸Å¿ì Áß¿äÇÏ´Ù. ¿©·¯ ÇʵåÀÇ Æò±Õ°ªÀ» ±¸Çϰí
½ÍÀ» ¶§ avg()¸¦ »ç¿ëÇÏ¸é µÈ´Ù. ÀÌ ÁýÇÕ ÇÔ¼ö¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é
¸ðµç ÇàÀ» ¾òÀ» ÈÄ, ´Ù ´õÇϰí ÇàÀÇ °¹¼ö·Î ³ª´²¾ßÇÑ´Ù. ¼Á¡ÀÇ ¿¹¿¡¼
2001³â 3¿ù µ¿¾È ÆÈ¸° Ã¥µéÀÇ Æò±Õ°ªÀ» ´ÙÀ½°ú °°ÀÌ ¾Ë ¼ö ÀÖ´Ù.
SELECT AVG(book_price) AS avg_price FROM sale WHERE date_of_purchase BETWEEN '03/01/2001' AND '04/01/2001';
¿¬»êÀÚ´Â ¹«¾ùÀΰ¡?
¿¬»êÀÚ´Â ÁÖÀ§ °ª¿¡ ¿¬»êÀ» ÇÑ´Ù.
¿¹¸¦ µé¾î ¼öÇÐ ¿¬»êÀÚ¸¦ µé ¼ö ÀÖ´Ù. select ¹®¿¡¼ µÎ ÇʵåÀÇ °ªÀ»
»©°í ½Í´Ù¸é, »©±â(-) ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¸é µÈ´Ù.
SELECT salesperson_name, revenue - cost AS commission FROM sales;
°¢ ÆÇ¸Å¿øÀÌ ÆÇ ±Ý¾×¿¡¼ ºñ¿ëÀ» »©¼ ±×µéÀÇ ¼ö¼ö·á¸¦ ¹ÝȯÇÑ´Ù.
salesperson_name | commission |
---|---|
Branden Williams | 234.43 |
Matt Springfield | 87.74 |
¿¬»êÀÚ´Â º¹ÀâÇÑ °è»êÀ» ÇÒ¶§³ª µû·Î ó¸®ÇÏ´Â ÄÚµå¾øÀÌ Á¤È®ÇÑ °á°ú°¡ ÇÊ¿äÇÒ ¶§ ¸Å¿ì À¯¿ëÇÏ´Ù.
¼Á¡ÀÇ ¿¹¿¡¼ ¼Á¡ÀÇ ÃâÀÔ±¸ ±Ùó¿¡ Àü½ÃÇϱâ À§Çؼ (ÇÑ ±Ç´ç) ÀÌÀ±ÀÌ °¡Àå ³ôÀº Ã¥À» ã´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇϰí ÇÏÀÚ. °á°ú¿¡¼ Çϳª¾¿ °è»êÇÏÁö¾Ê°í ÀûÈ®È÷ ¿øÇÏ´Â °á°ú¸¦ ¾òÀ» ¼ö ÀÖ´Ù.
table inventory ( book_title varchar(200), book_cost real, selling_price real )
SELECT book_title, selling_price - book_cost AS profit ORDER BY profit DESC;
´ÙÀ½°ú ºñ½ÁÇÑ °á°ú¸¦ ¾ò´Â´Ù.
book_title | profit |
---|---|
How To Scam Customers Into Buying Your Books | 15.01 |
How To Crash Windows 2000 | 13.84 |
ÀÌÁ¦ ¾î¶² Ã¥ÀÌ °¡Àå ÀÌÀ±ÀÌ ³ôÀºÁö »¡¸® ¾Ë ¼ö ÀÖ´Ù.
¿¬»êÀÚ´Â ÇÑ Å×ÀÌºí¿¡¼ ´Ù¸¥ Å×À̺í·Î Á¤º¸¸¦ ¿Å±â´Âµ¥µµ À¯¿ëÇÏ´Ù. ¿¹¸¦ µé¾î ÁÖ ÀÚ·á Å×ÀÌºí¿¡ ÀڷḦ Áý¾î³Ö±âÀü¿¡ È®ÀÎÀ» À§ÇØ ÀڷḦ Àӽà Å×ÀÌºí¿¡ ¸ÕÀú Áý¾î³Ö±âµµ ÇÑ´Ù. Àå¹Ù±¸´Ï°¡ ÁÁÀº ¿¹ÀÌ´Ù. »óǰ Å×ÀÌºí¿¡¼ Á¤º¸¸¦ ¾ò¾î Àӽà Å×ÀÌºí¿¡ ³Ö°í, Ãë¼ÒÇϰųª ¼ö·®À» ´Ã¸®°Å³ª ÇÒÀηüÀ» Àû¿ëÇÑ ÈÄ ÁÖ¹® Å×ÀÌºí¿¡ ÀÔ·ÂÇÑ´Ù.
ÀÌ °æ¿ì ÇÊ¿äÇÑ ¿©·¯ Á¤º¸¸¦ ã°í °è»êÇÏ¿© ´Ù½Ã Àӽà Å×ÀÌºí¿¡ Áý¾î³Ö´Â º¹ÀâÇÑ °úÁ¤À» °ÅÁö°í ½ÍÁö ¾ÊÀ» °ÍÀÌ´Ù. ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© °£´ÜÈ÷ ÇѹøÀÇ ÁúÀÇ·Î ÀÌ·± °úÁ¤À» ó¸®ÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ µ¿ÀûÀÎ (º¯°æµÇ´Â) ÀڷḦ ´Ù·ê¶§µµ ½±°Ô ó¸®ÇÒ ¼ö ÀÖ´Ù. µ¥ÀÌÅͺ£À̽º°¡ µ¿ÀûÀÎ ÀڷḦ ´õ Àß ´Ù·ê ¼ö ÀÖ´Ù.
ÀÌÁ¦ ¸î¸î ¿¬»êÀÚ¿Í ±× ±â´ÉÀ» »ìÆìº¸ÀÚ. Àüü ¿¬»êÀÚ ¸ñ·ÏÀ» º¸·Á¸é pgsql¿¡¼ '\do'¸¦ ÀÔ·ÂÇ϶ó.
+, -, *, / ¿¬»êÀÚ
PostgreSQL¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â ±âº» »ê¼ú ¿¬»êÀÚÀÌ´Ù. ÀÌ¹Ì À§¿¡¼
ÀÌ ¿¬»êÀÚµéÀÇ ¿¹¸¦ º¸¾ÒÀ» °ÍÀÌ´Ù. ´ÙÀ½°ú °°Àº ¿¹µµ »ý°¢Çغ¼ ¼ö ÀÖ´Ù.
»ê¼ú ¿¬»êÀÚÀÇ ´Ù¸¥ ¿¹´Â ¾Æ·¡ ¿¬»êÀÚ¿Í ÁýÇÕ ÇÔ¼ö¸¦ °áÇÕÇÏ´Â °÷¿¡¼ º¼ ¼ö ÀÖ´Ù.
ºñ±³ (<, >, <=, >=) ¿¬»êÀÚ
ÀÌ ¿¬»êÀÚµéÀº º¸Åë WHERE Àý¿¡¼ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î,
SELECT book_title FROM inventory WHERE selling_price >= '30.00';
ÆÇ¸Å°¡°¡ $30.00 ÀÌ»óÀΠåÀ» ¸ðµÎ ã´Â´Ù. ÀÌÀü ÀÌÀ± ¿¹Á¦¸¦ ´ÙÀ½°ú °°ÀÌ È®ÀåÇÒ ¼ö ÀÖ´Ù.
SELECT book_title, selling_price - book_cost AS profit WHERE selling_price - book_cost >= '14.00' ORDER BY profit DESC;
´ÙÀ½°ú °°Àº °á°ú°¡ ³ª¿Â´Ù.
book_title | profit |
---|---|
How To Scam Customers Into Buying Your Books | 15.01 |
ÁúÀÇ¿¡¼ ÇÏÇѼ±À» »ç¿ëÇÏ´Â °ÍÀº º¸°í¼¿¡¼ ¸Å¿ì À¯¿ëÇÏ´Ù.
|| (°áÇÕ) ¿¬»êÀÚ
¹®ÀÚ¸¦ °áÇÕÇÒ¶§ ÀÌ ¿¬»êÀÚ°¡ À¯¿ëÇÏ´Ù. ¿¹¸¦ µé¾î ¿©·¯ »óǰ Á¾·ù°¡
ÀÖ´Ù¸é, ±¸¸Å¼¿¡ »óǰ¸í°ú Á¾·ù¸¦ °°ÀÌ Ãâ·ÂÇÒ ¼ö ÀÖ´Ù.
SELECT category || CAST(': ' AS VARCHAR) || productname AS title FROM products;
CAST() ÇÔ¼ö »ç¿ëÀ» ÁÖ¸ñÇ϶ó. °áÇÕÀ» À§Çؼ ´ë»ó¿¡ ´ëÇØ ¾Ë¾Æ¾ßÇÑ´Ù. ±×·¡¼ ¿¬»êÀÚ°¡ ÀÛµ¿Çϱâ À§Çؼ PostgreSQL¿¡°Ô ¹®ÀÚ¿ ': 'ÀÌ VARCHAR ÇüÀ̶ó°í ¾Ë·ÁÁà¾ßÇÑ´Ù.
°á°ú´Â ´ÙÀ½°ú °°´Ù.
title |
---|
Music CDs: Dave Matthews, Listener Supported |
DVDs: Airplane |
ÀÌÁ¦±îÁö ¿¬»êÀÚ¿Í ÁýÇÕ ÇÔ¼öÀÇ °£´ÜÇÑ »ç¿ë¹ý°ú À̸¦ ÀÌ¿ëÇÏ¿© ÇÁ·Î±×·¥À» (°³¹ß°ú ½ÇÇà) ºü¸£°ÔÇÏ´Â ¹ýÀ» º¸¾Ò´Ù. ¿¬»êÀÚ¿Í ÁýÇÕ ÇÔ¼öÀÇ ÁøÁ¤ÇÑ ÈûÀº µÑÀ» ¼·Î °áÇÕÇÒ ¶§ ³ª¿Â´Ù. µ¥ÀÌÅͺ£À̽º°¡ ´ë½Å ÀÏÀ» ÇϰÔÇÏ¿© ÇÁ·Î±×·¥ÀÇ Äڵ差À» ÁÙÀÏ ¼ö ÀÖ´Ù. ÀÌÁ¦ ÀÌ ¹æ¹ýÀ» ´Ù·é´Ù.
¿ì¸®ÀÇ »óȲ:
´ç½ÅÀº À¥±â¹ÝÀÇ »óÁ¡ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â ÀÏÀ» ¸º¾Ò´Ù. ÁÖ¹® Å×À̺íÀº
¾Æ·¡¿Í °°´Ù.
create table orders ( orderid integer (autoincrement), customerid integer, subtotal real, tax real, shipping real ) create table orderdetail ( orderid integer, productid integer, price real, qty integer ) create table taxtable ( state varchar(2), rate real ) create table products ( productid integer, description varchar(100), price real ) create table cart ( sessionid varchar(30), productid integer, price real, qty integer )
¿©±â¼ Àå¹Ù±¸´Ï Á¤º¸¸¦ ¼¼¼Ç¿¡ ÀúÀåÇÏÁö¾Ê°í µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåÇϱâ·Î °áÁ¤Çß´Ù. ±×·¯³ª µ¥ÀÌÅͺ£À̽º¿¡¼ º¯È¸¦ ±â·ÏÇϱâÀ§ÇØ sessionID´Â ÇÊ¿äÇÏ´Ù. cart Å×À̺íÀº ÇöÀç °áÁ¦ÇÏÁö¾ÊÀº Àå¹Ù±¸´Ï¸¦ ÀúÀåÇÑ´Ù. orders¿Í orderdetailÀº ¿ÏÀüÇÑ ÁÖ¹®°ú Ç׸ñÀ» ÀúÀåÇÑ´Ù. µ·À» û±¸ÇÒ¶§ ºÎºÐµéÀ» ÇÕÃļ °¢ ÁÖ¹®ÀÇ ÀüüÇÕÀ» ¾Ë ¼ö ÀÖ´Ù. ¸¶Áö¸·À¸·Î products Å×À̺íÀº °¡°Ý°ú ¼³¸íÀ» ÀúÀåÇÏ´Â »óǰ Å×À̺íÀÌ´Ù.
¿©±â¼ Áß¿äÇÑ °ÍÀº °¡´ÉÇÑ ¸¹Àº °è»êÀ» µ¥ÀÌÅͺ£À̽º·Î ³Ñ°Ü¼ ÇÁ·Î±×·¥Àº µ¥ÀÌÅͺ£À̽º ÁúÀÇ¿Í ÀÛ¾÷¿¡ ÇÊ¿äÇÑ Äڵ差À» ÁÙÀÌ´Â °ÍÀÌ´Ù. ¶Ç ¿©·¯ Ç׸ñÀÌ µ¥ÀÌÅͺ£À̽º Å×ÀÌºí¿¡ ÀúÀåµÇÀֱ⶧¹®¿¡ ¹Ù²ð ¼ö ÀÖ´Ù. ÀÌ·± Ç׸ñÀº ºÎºÐÇÕ°è, ¼¼±Ý, ¿î¼Ûºñ °è»ê¿¡ ¿µÇâÀ» ÁØ´Ù. ¿¬»êÀÚ¿Í ÁýÇÕ ÇÔ¼ö¸¦ (¾Æ¸¶µµ ÇÏÀ§ÁúÀǸ¦) »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é µ¥ÀÌÅͺ£À̽º¿¡ ¸¹Àº ÁúÀǸ¦ ÇÏ¿© ÇÁ·Î±×·¥ÀÇ Ãß°¡ ºÎ´ãÀ» ÁØ´Ù. ¿¹¸¦ °¢ Ç׸ñÀ¸·Î ³ª´«ÈÄ ¸¶Áö¸·¿¡¼ Çϳª·Î ÇÕÄ¥ °ÍÀÌ´Ù.
ºÎºÐÇÕ°è °è»ê
ºñ±³Àû °£´ÜÇÑ °è»êÀÌ¿©¼ ÁýÇÕ ÇÔ¼ö¿Í °£´ÜÇÑ ¿¬»êÀÚ¸¸À¸·Î ¾òÀ» ¼ö ÀÖ´Ù.
SELECT SUM(price*qty) AS subtotal FROM cart WHERE sessionid = '9j23iundo239new';
ÇÊ¿äÇÑ °ÍÀº ¸ðµç price * qtyÀÇ ÇÕÀÌ´Ù. ÀÌ ¿¹´Â ¿¬»êÀÚ¿Í ÁýÇÕ ÇÔ¼öÀÇ °áÇÕÀ» Àß º¸¿©ÁØ´Ù. SUN ÁýÇÕ ÇÔ¼ö´Â °¢ Çà´ÜÀ§ÀÇ °è»êÀÇ ÃÑÇÕÀ» ¹ÝȯÇÑ´Ù. ÀÌ ¼ø¼¸¦ ÀØÁö¸¶¶ó!
¼¼±Ý °è»ê
ÀÌ °è»êÀº °£´ÜÇÑ SQL·Î Çϱâ Èûµé´Ù. ¿©±â¼ ½ÇÁ¦ ¼¼·üÀ» ¾ò±âÀ§ÇØ
COALESCE¸¦ »ç¿ëÇÑ´Ù. COALESCE´Â µÎ ¾Æ±Ô¸ÕÆ®¸¦ ¹Þ´Â´Ù.
ù¹øÂ° ¾Æ±Ô¸ÕÆ®ÀÇ °á°ú°¡ nullÀ̶ó¸é µÎ¹øÂ° ¾Æ±Ô¸ÕÆ®¸¦ ¹ÝȯÇÑ´Ù.
(nullÀÌ ¾Æ´Ï¶ó¸é ù¹øÂ° ¾Æ±Ô¸ÕÆ®ÀÇ °á°ú¸¦ ¹ÝȯÇÑ´Ù.)
ÀÌ´Â Áö±Ý°ú °°Àº °æ¿ì¿¡ ¸Å¿ì À¯¿ëÇÏ´Ù. ÁúÀÇ´Â ´ÙÀ½°ú °°´Ù. ÁÖÀÇ:
_subtotal_Àº ÇöÀç °¡»óÀÇ °ªÀÌ´Ù.
SELECT _subtotal_ * COALESCE(tax, 0) AS tax FROM tax WHERE state = 'TX';
¾Æ·¡¿¡¼ °¢ ºÎºÐÀ» ÇÕÃÄ °¡»óÀÇ °ªÀ» Á¦°ÅÇÒ °ÍÀÌ´Ù.
¿î¼Ûºñ °è»ê
°£´ÜÈ÷ °¢ Ç׸ñ´ç ¿î¼Ûºñ°¡ $3À̶ó°í °¡Á¤ÇÏ´Ù. ³ªÁß¿¡ À̸¦ ½±°Ô È®ÀåÇÒ
¼ö ÀÖ´Ù. ¹«°Ô Çʵ带 »óǰ Å×ÀÌºí¿¡ Ãß°¡ÇÏ¿© ¿î¼Ûºñ¸¦ °è»êÇÒ ¼öµµ ÀÖÀ»
°ÍÀÌ´Ù. ¿©±â¼´Â ´Ü¼øÈ÷ Àå¹Ù±¸´Ï Ç׸ñÀÇ °¹¼ö¿¡ 3À» °öÇÑ´Ù.
SELECT COUNT(*) * 3 FROM cart AS shipping WHERE sessionid = '9j23iundo239new';
¸ðµÎ ÇÕÄ¡ÀÚ
°¢ °è»ê °á°ú¸¦ µû·Î ¾ò´Â ¹æ¹ýÀ» ¾Ë¾ÒÀ¸´Ï À̸¦ ÇϳªÀÇ Å« Äõ¸®·Î ÇÕÄ¡ÀÚ.
ÀÌ Äõ¸®´Â ¸ðµç °è»êÀ» ÇÏ¿© orders Å×ÀÌºí¿¡ ÀúÀåÇÑ´Ù.
INSERT INTO orders (customerid, subtotal, tax, shipping) VALUES (customerid, (SELECT SUM(price*qty) FROM cart WHERE sessionid = '9j23iundo239new'), (SELECT SUM(price*qty) FROM cart WHERE sessionid = '9j23iundo239new') * (SELECT COALESCE(tax, 0) FROM tax WHERE state = 'TX'), (SELECT COUNT(*) * 3 FROM cart WHERE sessionid = '9j23iundo239new'));
Ãß°¡·Î orders Å×ÀÌºí¿¡ ÃÑÇÕ Çʵ尡 ÀÖ´Ù¸é ´Ù¸¥ Äõ¸®·Î ºÎºÐÇ׸ñÀ» ¸ðµÎ ÇÕÄ¡°Å³ª INSERT Äõ¸®·Î Ãß°¡ÇÒ ¼ö ÀÖ´Ù. µÎ¹øÂ° ¹æ¹ýÀ» »ç¿ëÇÑ´Ù¸é ´ÙÀ½°ú °°´Ù.
UPDATE orders SET grandtotal = subtotal+tax+shipping WHERE orderid = 29898;
´ÙÀ½ µÎ Äõ¸®´Â ¼ø¼´ë·Î »ç¿ëÇÏ¿© Àå¹Ù±¸´Ï¿¡ ³²Àº Ç׸ñÀ» orderdetail Å×À̺í·Î ¿Å±ä´Ù.
INSERT INTO orderdetail (orderid, productid, price, qty) values SELECT _yourorderid_, productid, price, qty FROM cart WHERE sessionid = '9j23iundo239new';
DELETE FROM cart WHERE sessionid = '9j23iundo239new';
°á·Ð:
ÁýÇÕ ÇÔ¼ö´Â SQL ¼¹ö°¡ ¿©·¯ °è»êÀ» ó¸®ÇÏ¿© ÇÁ·Î±×·¥À» ´Ü¼øÇϰÔÇϰí
¼Óµµ¸¦ ºü¸£°Ô ÇÑ´Ù. ´õ º¹ÀâÇÑ ÇÁ·Î±×·¥¿¡¼µµ º¸°í¼ µîÀÇ ¸ñÀûÀ¸·Î
¿©·¯ Å×ÀÌºí¿¡¼ ¿øÇÏ´Â °á°ú¸¦ ¾ò´Âµ¥ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¬»êÀÚ´Â Å×ÀÌÅͺ£À̽º°¡
¹ÝȯÇÏ´Â °á°úÀÇ ÁúÀ» ³ôÀδÙ. ¿¬»êÀÚ¿Í ÁýÇÕ ÇÔ¼ö¸¦ Àß »ç¿ëÇϸé ÇÁ·Î±×·¥ÀÇ
¼Óµµ¿Í Á¤È®¼ºÀ» ³ôÀÌ´Â °ÍÀº ¹°·ÐÀ̰í, °á°ú¸¦ ¹Ýº¹ÇÏ¸ç °è»êÇÏ´Â ºÒÇÊ¿äÇÑ
Äڵ带 ÁÙ¿©ÁØ´Ù.
ÀÌ ±ÛÀ» ¾²¸é¼ Áñ±ä¸¸Å ´ç½Åµµ Áñ°Ì°Ô ÀÌ ±ÛÀ» ÀÐ°í ¹è¿ü±æ ¹Ù¶õ´Ù!
BrandenÀº ÇöÀç ±×°¡ ¿ÃÇØ °øµ¿¼±¸³ÇÑ e-ºñÁö´Ï½º¿Í º¸¾È ÄÁ¼³ÆÃ ȸ»çÀÎ
ElliptixÀÇ ÄÁ¼³ÅÏÆ®ÀÌ´Ù.
±×´Â ÀÎÅͳݰü·Ã ±â¼ú, À¯´Ð½º °ü¸®, ³×Æ®¿÷ µðÀÚÀÎ/±¸¼º, ¸¹Àº ÇÁ·Î±×·¥ ¾ð¾î¿¡
10³âÀÌ»ó °æÇèÀÌ ÀÖ´Ù. ÃÖ±Ù 6³â µ¿¾È ±â¾÷¼öÁØÀÇ ÀüÀÚ»ó°Å·¡ ÇÁ·Î±×·¥À»
¼³°è/°³¹ßÇß´Ù. ±×´Â Arlongton¿¡ ÀÖ´Â Texas´ë¿¡¼ ¸¶ÄÉÆÃÀ» Àü°øÇß´Ù.
±×´Â brw@brw.net·Î ¿¬¶ôÇÒ ¼ö ÀÖ´Ù.
Branden R Williams
Copyright © 2001, Branden R Williams.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 70 of Linux Gazette, September 2001