Ãâó : 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ÇÏ°í ºñ±³Çؼ Á» ¾î·Æ³ª¿ä?