Ãâó : http://www.dhtmldot.com

4. SQLÀÇ ±âÃÊ (2)

ÀÌÁ¦ ³»ÀåÇÔ¼ö¿¡ °üÇØ ¾Ë¾Æº¼±î¿ä? ORACLE»ç´Â ´Ù¾çÇÑ µ¥ÀÌÅÍ Å¸ÀÔÀ» Á¶ÀÛÇÏ°í º¯È¯Çϱâ À§Çؼ­ ¸¹Àº ³»ÀåÇÔ¼ö¸¦ Á¦°øÇÕ´Ï´Ù.

ÀÏ´Ü ¿©±â¼­´Â ÀÌ·± Á¾·ù°¡ ÀÖ´Ù´Â °Í¸¸ ¾Ë °í ³Ñ¾î°¡ÁÒ.

SQLÀº ·¹Äڵ带 °Ë»öÇϴµ¥ ÀÌ¿ëÇÒ ¼ö ÀÖ ´Â ±âÁØÀ» ÁöÁ¤ÇÏ´Â WHERE ±¸¸¦ Á¦°øÇÕ´Ï´Ù. ¾î¶² Å×À̺íÀÌ ¸¹Àº ÇàÀ» °¡Áö°í ÀÖÀ» °æ¿ì, ±× ÇàµéÀ» ¸ðµÎ °Ë»öÇϸé Âü ºÒÆí ÇÏ°ÚÁÒ? WHERE ±¸´Â Äõ¸®¿¡ ÀÇÇØ °Ë»öµÇ´Â ÇàÀ» À§Çؼ­ ¸¸Á·µÇ¾î¾ß ÇÏ´Â ÇÑ °³ ÀÌ»óÀÇ Á¶°Ç¹®À¸·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù.

¸¸¾à ¿©·¯ºÐÀÌ ¼­¿ï¿¡ »ç´Â ÇлýµéÀÇ List ¸¸ ¿øÇÑ´Ù¸é ¾Æ·¡¿Í °°ÀÌ ÇÒ ¼ö ÀÖ°ÚÁÒ.

SELECT name, eng_score, kor_score FROM student WHERE city='¼­¿ï';

NAME       ENG_SCORE  KOR_SCORE
---- ------ ---------  ----------
ÀÌ¿øÈñ            30          10
½Å°üÈ£            85         100

WHERE¹®À» »ç¿ëÇÒ ¶§ AND ¿Í OR Å°¿öµå·Î Á¶°Ç¹®À» Á¶ÇÕÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¼­¿ïÀ̳ª ¼ö¿ø¿¡ »ì°í ¿µ¾î ¼ºÀûÀÌ 80Á¡ ÀÌ»óÀÎ Çлý¸¸ º¸´Â ¿¹¸¦ µé¾îº¸ ÁÒ.

SELECT * FROM student
 WHERE city='¼­¿ï' OR city='¼ö¿ø' AND eng_score>=80;

NAME       AGE  ENG_SCORE  KOR_SCORE  ...   AVR_SCORE
---------- --- --- ------- ----------  ...  ----------
À±¸é¿ë      28       100        100   ...        100
ÃÖÀÎÈñ      27        90         90   ...          94
½Å°üÈ£      28        85        100   ...          96

±×·³ µ¥ÀÌÅ͸¦ ¼ÒÆ®(Sort)½ÃÄѼ­ Äõ¸®ÇÏ´Â ¹ýÀ» º¼±î¿ä? ¿©·¯ºÐÀº ORDER BY ±¸¸¦ ÀÌ¿ëÇؼ­ Äõ¸®µÇ ´Â µ¥ÀÌÅ͸¦ ¼ÒÆ®½Ãų ¼ö ÀÖ½À´Ï´Ù. ORDER BY ±¸´Â Äõ¸®°¡ º¹±Í½ÃÅ°´Â Çà ÀÇ ¼ø¼­¸¦ ¸Å±â´Âµ¥ »ç¿ëµÇ¾î¾ß ÇÏ´Â ¿­À» ÁöÁ¤Çϴµ¥ »ç¿ëµË´Ï ´Ù.

SELECT name, age FROM student
 ORDER BY name;

NAME       AGE
---------- ---
±¸±³¶ô       28
¹Ú»ó¿í      29
¹èÈ¿ÀÏ      26
½Å°üÈ£      28
À±¸é¿ë      28
ÀÌ¿øÈñ      50
...
ÃÖÀÎÈñ      27

¼ø¼­¸¦ Á¤¸®ÇÒ ¶§ ¿À¶óŬÀÇ °æ¿ì´Â ¾Æ¹«·± ¿É¼ÇÀÌ ¾øÀ» °æ¿ì, ÇàÀ» ¿À¸§Â÷¼ø(ASC)À¸·Î ¼ø¼­¸¦ Á¤ÇÕ´Ï ´Ù. ¿­ÀÇ ¼ø¼­¸¦ ³»¸²Â÷¼øÀ¸·Î Á¤¸®ÇÏ·Á¸é ¿­ÀÇ À̸§ µÚ¿¡ DESC Å°¿öµå¸¦ Ãß°¡ÇØ¾ß ÇÕ´Ï´Ù.

SELECT name, age FROM student
 ORDER BY name DESC;

NAME       AGE
---------- ---
ÃÖÀÎÈñ      27
ÀÌ¿øÈñ      50
À±¸é¿ë      28
½Å°üÈ£      28
¹èÈ¿ÀÏ      26
¹Ú»ó¿í      29
...

±¸±³¶ô       28

±×·±µ¥ °¡²ûÀº ³»°¡ ã°íÀÚ ÇÏ´Â µ¥ÀÌÅͳª ÇàÀÌ ¾ó¸¶³ª µÇ´ÂÁö ¾Ë°í ½ÍÀ» ¶§°¡ ÀÖÁÒ? ±×¶§´Â COUNT ¶ó´Â ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. COUNT ÇÔ¼ö´Â ÁöÁ¤µÈ ±âÁØÀ» ¸¸Á·½ÃÅ°´Â ÇàÀÇ ¼ö ¸¦ º¹±Í½Ãŵ´Ï´Ù.

SELECT count(*) FROM student
 WHERE  eng_score>=80;

COUNT(*)
--------
       4

±×·¯¸é ¼­ºêÄõ¸®´Â ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö º¼±î ¿ä? ¼­ºêÄõ¸®´Â ´Ù¸¥ DML(SELECT, UPDATE, DELETE, INSERT) ¹®À¸·Î Á¤ÀÇµË ´Ï´Ù. ¸¸¾à¿¡ ¿µ¾î¼ºÀû¿¡ ´ëÇؼ­ Àüü Æò±Õº¸´Ù Á¡¼ö°¡ ³·Àº ÇлýÀ» Á¶È¸ÇÏ°í ½Í´Ù¸é ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÏ¸é µË´Ï´Ù. avg()´Â ORALCEÀÌ Á¦°øÇÏ ´Â Æò±ÕÀ» ³»´Â ÇÔ¼öÁÒ.

SELECT name, eng_score FROM student
 WHERE eng_score <
 (SELECT avg (eng_score) FROM student);

¼­ºêÄõ¸®¸¦ »ç¿ëÇÒ °æ¿ì, ´ÙÀ½ÀÇ ³»¿ë À»
ÁÖÀÇÇϼ¼¿ä.

¶Ç SELECT ¹®À¸·Î »õ·Î¿î Å×À̺íÀ» ¸¸µé ¼ö µµ ÀÖ¾î¿ä. ´ÙÀ½°ú °°ÀÌ CREAT TABLE ¹®°ú SELECT ¹®À» ÇÔ²² »ç¿ëÇÏ¸é µË ´Ï´Ù. WHERE ¹®À» Á־ ¿øÇÏ´Â Á¶°Ç¸¸À¸·Î Å×À̺íÀ» ¸¸µé ¼öµµ ÀÖ°Ú ÁÒ.

CREATE TABLE new_table_name
AS
select_statement;

CREATE TABLE eng_score_table
AS
SELECT name, age, eng_score
  FROM student; 

¿©·¯ºÐÀº ¼±Åà ¸®½ºÆ® ³»¿¡¼­ º¹ÀâÇÑ Ç¥Çö ¹®À» ÁöÁ¤ÇÒ ¶§ ±×°Í¿¡°Ô ¾ÙÀ̾¸¦ ÇÒ´çÇÔÀ¸·Î½á °á°ú °ªÀÇ ¹®¼­¸¦ º¸ ±â ÁÁ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ µÎ °¡Áö ¿¹¸¦ º¼±î¿ä?

SELECT name, eng_score, kor_score, (eng_score+kor_score)/2 FROM student;

NAME       ENG_SCORE  KOR_SCORE    (ENG_SCORE+KOR_SCORE)/2
---------- ---------  ----------   -----------------------
¹Ú»ó¿í            90          85            &nb sp;         87.5
¹èÈ¿ ÀÏ            70          90            &nb sp;            80
ÀÌ¿øÈñ            30          10            &nb sp;            20
À±¸é¿ë           100         100            &nb sp;          100
ÃÖÀÎÈñ            90          90            &nb sp;            90
½Å°üÈ£            85         100            &nb sp;         87.5
...            &nb sp; ...          ...            &nb sp;         ...
±¸±³ ¶ô            &nb sp; 0          10            &nb sp;             5

SELECT name, eng_score, kor_score, (eng_score+kor_score)/2 AVERAGE FROM student;

NAME       ENG_SCORE  KOR_SCORE    AVERAGE
---------- ---------  ----------   --------
¹Ú»ó¿í            90          85       87.5
¹èÈ¿ÀÏ            70          90         80
ÀÌ¿øÈñ            30          10         20
À±¸é¿ë           100         100        100
ÃÖÀÎÈñ            90          90         90
½Å°üÈ£            85         100       87.5
...            &nb sp; ...          ...       ...
±¸±³¶ô            &nb sp; 0          10          5

ù ¹ø° ¿¹¿Í µÎ ¹ø° ¿¹¸¦ ºñ±³Çغ¸¸é µÎ ¹ø° ¿¹°¡ ÈξÀ ±ò²ûÇÏÁÒ? ÀÌ°ÍÀ» Ç¥Çö½Ä (eng_score+kor_score)/2¿¡ ¾ÙÀÌ ¾î½º AVERAGE¸¦ ÇÒ´çÇÑ´Ù°í Çϸç, ¿©±â¼­ µÎ °¡Áö ÀÌÀÍÀ» ¾òÀ» ¼ö ÀÖ½À´Ï ´Ù.

³»¿ëÀÌ HTMLÇÏ°í ºñ±³Çؼ­ Á» ¾î·Æ³ª¿ä?