SQL Ç¥ÁØ ¹®¹ýÀÌ ÅëÀϵǾî ÀÖ¾î °øÅëÀ¸·Î Àû¿ëÇÒ ¼ö ÀÖÀ½Àº Âü ´ÙÇེ·¯¿î
ÀÏÀÌ´Ù. ±×·¯³ª DBMS¸¶´Ù °ø½ÄÀûÀ¸·Î »ç¿ëÇÏ´Â Äõ¸®ÅøÀÌ
Á¦°¢°¢ÀÌ¾î¼ ÀÌ°Í Àú°Í ¹Ù²ã °¡¸ç ¾²´Â »ç¶÷¿¡°Ô´Â È¥¶õ½º·´°í ¹ø°Å·Î¿î ÀÏÀÌ ¸¹´Ù. ¿©·¯ â »çÀ̸¦ ¿Ô´Ù
°¬´ÙÇÏ´Â °Íµµ ±ÍÂú°í ´ÜÃàÅ°µµ Á¦°¢°¢À̶ó ½Ç¼öÇÒ °æ¿ì°¡ ¸¹´Ù.
´ÙÇàÈ÷ Äõ¸®ÅøÀº DBMS¿¡ Á¾¼ÓÀûÀÌÁö ¾Ê¾Æ ¹Ù²ã °¡¸ç ¾µ ¼ö ÀÖ°í
¸ðµç DBMS¸¦ ´Ù Áö¿øÇÏ´Â ÅëÇÕ Äõ¸®Åøµµ ¸¹´Ù. ÃëÇâ¿¡
µû¶ó °ñ¶ó ¾µ ¼ö Àִµ¥ ÇнÀ¿ë ¹«·áÅø·Î´Â DBeaver°¡ ¹«³ÇÏ´Ù.
¸ÖƼ Ç÷§ÆûÀ» Áö¿øÇÏ¸ç ¾ÈÁ¤¼º°ú ÆíÀǼºÀÌ ¶Ù¾î³ª´Ù.
¾î¶² Äõ¸®ÅøÀ» ¾µ °ÍÀΰ¡´Â °³ÀÎÀÇ ÃëÇâÀÌ¸ç ¼±Åà »çÇ×ÀÏ »ÓÀÌ´Ù. ¿©±â¼´Â
DBeaver¸¦ ¼Ò°³ÇÏ°í ¼³Ä¡ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇ쵂 ¿À¶óŬÀ» ÁÖ·Î ¾´´Ù¸é SQL Developer°¡ ÆíÇÏ°í SQL Server·Î ½Ç½ÀÀ» °è¼Ó
ÁøÇàÇÑ´Ù¸é SSMS°¡ ¹«³ÇÏ´Ù. ¿©·¯ DBMS¸¦ ¾´´Ù¸é ÅëÇÕÅøÀ» ½á º¸°í Àͼ÷ÇØÁö¸é ´Ù¸¥ Åøµµ °æÇèÇØ º¸´Â °ÍÀÌ ÁÁ´Ù.
DBeaverÀÇ È¨ ÆäÀÌÁöÀÎ
https://dbeaver.io¸¦ ¹æ¹®ÇØ º¸ÀÚ. ²ÙÁØÈ÷ ¾÷µ¥ÀÌÆ®ÇÏ°í Àִµ¥ 2020³â 7¿ù ¹öÀüÀº 7.1.1À̸ç
2021³â 7.3.1ÀÌ ÃֽŠ¹öÀüÀÌ´Ù. Windows 64 bit (installer + JRE) ¹öÀüÀ» ¹Þ¾Æ µðÆúÆ® ¿É¼ÇÀ¸·Î ¼³Ä¡ÇÏ¸é µÈ´Ù. ÃÖÃÊ ½ÇÇà½Ã ¿¬°á ´ëÈ»óÀÚ°¡ ³ªÅ¸³ª´Âµ¥ ÀÏ´Ü ´Ý°í ¿É¼ÇºÎÅÍ Àû´çÈ÷ Á¶Á¤ÇÏÀÚ.
µðÆúÆ® ¿É¼ÇÀÌ ¹«³ÇÏÁö¸¸ SQL ÀÚµ¿ ¿Ï¼º ÆäÀÌÁöÀÇ Insert table aliases(in FROM clause) ¿É¼ÇÀº ²ôÀÚ.
Å×ÀÌºí¿¡ º°¸íÀ» ÀÚµ¿À¸·Î ´Þ¾ÆÁÖ´Â ±â´ÉÀε¥ Ãʺ¸ÀÚ¿¡°Ô Çò°¥¸®´Â ºÎÀÛ¿ëÀÌ ÀÖ´Ù. ³ª¸ÓÁö ¿É¼ÇÀº
ÇÊ¿ä¿¡ µû¶ó Á¶Á¤ÇØ ¾²µµ·Ï ÇÏÀÚ. ±Û²Ã Å©±â³ª ¸ð¾ç Á¤µµ´Â ÃëÇâ¿¡ ¸Â°Ô Á¶Á¤ÇØ µÎ´Â °ÍÀÌ ÁÁ´Ù.
DBeaver·Î MariaDB¿¡
¿¬°áÇØ º¸ÀÚ. MariaDB´Â ±âº» ±×·¡ÇÈ Äõ¸®ÅøÀÌ ºÎ½ÇÇØ ÅëÇÕ Äõ¸®Åø·Î »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. ¸Þ´º¿¡¼ µ¥ÀÌÅͺ£À̽º/»õ Å×ÀÌÅͺ£À̽º ¿¬°á Ç׸ñÀ» ¼±ÅÃÇϰųª ¿ÞÂÊ
Åø¹ÙÀÇ ¹öÆ°À» ´©¸£¸é DB ¼±Åà ´ëÈ»óÀÚ°¡ ³ªÅ¸³´Ù.
Áö¿øÇÏ´Â DBMSÀÇ ¸ñ·ÏÀ» º¸¿©Áִµ¥ º¸´Ù½ÃÇÇ À¢¸¸ÇÑ°Ç ´Ù Áö¿øÇÑ´Ù. Á¾·ù°¡ ¾ó¸¶³ª ¸¹ÀºÁö Ä«Å×°í¸®º°·Î ³ª´©¾î ³õ¾Ò´Ù. Popular ÆäÀÌÁöÀÇ
MariaDB¸¦ ¼±ÅÃÇÑ ÈÄ ´ÙÀ½ ¹öÆ°À» ´©¸£¸é Á¢¼Ó Á¤º¸¸¦ ¹¯´Â ´ëÈ»óÀÚ°¡ ³ªÅ¸³´Ù.
¼¹ö ÁÖ¼Ò¿Í Æ÷Æ®´Â ÀÌ¹Ì ÀԷµǾî ÀÖ¾î ÀÌ´ë·Î ¹Þ¾ÆµéÀÌ¸é µÈ´Ù. IP ÁÖ¼Ò¿Í
Æ÷Æ® ¹øÈ£¸¦ ÀûÀýÈ÷ ÁöÁ¤ÇÏ¸é ¿ø°ÝÁöÀÇ ¼¹ö¿¡µµ Á¢¼ÓÇÒ ¼ö ÀÖ´Ù. Database À̸§Àº Study·Î ÁöÁ¤ÇÏ°í rootÀÇ ¾ÏÈ£¸¦ ÀÔ·ÂÇÑ´Ù. Àß Á¢¼ÓµÇ´ÂÁö Test Connection ¹öÆ°À» ´·¯ º¸ÀÚ.
Á¢¼Ó¿¡ ÇÊ¿äÇÑ Á¤º¸¸¸ Á¦°øÇϸé Áï½Ã ¿¬°áµÇ¸ç ¿ÞÂÊÀÇ DB Ž»ö±â ¸ñ·Ï¿¡
MariaDB°¡ ³ªÅ¸³´Ù. ÀÌ Ç׸ñÀ» ´õºíŬ¸¯ÇÏ¿© ÆîÄ¡¸é
¹Ù·Î Á¢¼ÓµÇÁö¸¸ °æ¿ì¿¡ µû¶ó¼´Â µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ´Ù¿î·Îµå ¹Þ¾Æ ¼³Ä¡Çϱ⵵ ÇÑ´Ù. ÇÊ¿äÇÑ µå¶óÀ̹ö¸¦
ÀÚµ¿À¸·Î ã¾Æ ¼³Ä¡Çϵµ·Ï µÇ¾î ÀÖ¾î Æí¸®ÇÏ´Ù.
Study DB¸¦ ¼±ÅÃÇØ ³õ°í ¸Þ´ºÀÇ SQL ÆíÁý±â/SQL ÆíÁý±â Ç׸ñÀ» ¼±ÅÃÇϰųª ´ÜÃàÅ° F3À» ´©¸£¸é Áß¾Ó¿¡ Äõ¸®¹®À» ÀÔ·ÂÇÏ´Â ÆíÁý±â°¡ ¿¸°´Ù. ¿©±â¿¡ Äõ¸®¸¦
ÀÔ·ÂÇÑ ÈÄ ½ÇÇà(´ÜÃàÅ° Ctrl + Enter)¸¦ ´©¸£¸é
Áï½Ã ½ÇÇàÇÏ¿© °á°ú¸¦ º¸¿©ÁØ´Ù.
¿©·¯ °³ÀÇ ¸í·ÉÀ» ÀÔ·ÂÇØ ³õ¾ÒÀ» ¶§´Â ºí·ÏÀ¸·Î ¼±ÅÃÇÑ ÈÄ Ctrl+Enter¸¦
´©¸¥´Ù. ¿©·¯ÁÙÀÇ Äõ¸®¸¦ ÇѲ¨¹ø¿¡ ½ÇÇàÇÒ ¶§´Â ´ÜÃàÅ° Alt+X¸¦
´©¸¥´Ù. ¿©·¯ ÁÙ ½ÇÇà°ú ÇÑ ÁÙ ½ÇÇàÀÇ ´ÜÃàÅ°°¡ ±¸ºÐµÇ¾î ÀÖ¾î ±»ÀÌ ºí·ÏÀ» ¼±ÅÃÇÏÁö ¾Ê¾Æµµ µÇ´Â ÀÌÁ¡ÀÌ
ÀÖ´Ù.
DBeaver·Î SQL Server¿¡
¿¬°áÇÏ·Á¸é SQL ServerÀÇ ¼³Á¤À» ¾à°£ ¹Ù²ã¾ß ÇÑ´Ù. ¹ü¿ë
Á¢¼ÓÅøÀÎ DBeaver´Â JDBC µå¶óÀ̹ö¸¦ »ç¿ëÇϸç TCP/IP ÇÁ·ÎÅäÄÝÀ» ÅëÇØ DB ¼¹ö¿¡ Á¢¼ÓÇÑ´Ù. ÇÏÁö¸¸ ·ÎÄÿ¡ ¼³Ä¡ÇÑ SQL Server´Â ¼Óµµ¸¦ À§ÇØ °øÀ¯ ¸Þ¸ð¸®¸¦
»ç¿ëÇϵµ·Ï µÇ¾î ÀÖ¾î Åë½Å ¹æ¹ýÀÌ ¸ÂÁö ¾Ê´Ù. SQL Server ¼³Á¤À» º¯°æÇÏ¿© TCP/IP Á¢¼ÓÀ» »ç¿ëÇϵµ·Ï ÇØ¾ß ÇÑ´Ù. SQL Server ±¸¼º
°ü¸®ÀÚ¸¦ ½ÇÇàÇÑ´Ù.
¿ÞÂÊ ³ëµå¿¡¼ SQLEXPRESS¿¡ ´ëÇÑ ÇÁ·ÎÅäÄÝ Ç׸ñÀ» ¼±ÅÃÇϸé
ÇöÀç »ç¿ëÇÏ´Â ¿¬°á ÇÁ·ÎÅäÄÝÀÌ ³ªÅ¸³´Ù. µðÆúÆ®·Î °øÀ¯ ¸Þ¸ð¸®¸¦ »ç¿ëÇϴµ¥ TCP/IPµµ Çã¿ëÇÑ´Ù. TCP/IPÀÇ Æ˾÷ ¸Þ´º¿¡¼ ¼Ó¼ºÀ» ¼±ÅÃÇÏ°í IP ÁÖ¼Ò ÅÇ Á¦ÀÏ ¾Æ·¡ÂÊÀÇ IPAllÀÇ TCP Æ÷Æ®¸¦ 1433À¸·Î ÁöÁ¤ÇÑ´Ù.
±×¸®°í TCP/IPÀÇ Æ˾÷ ¸Þ´º¸¦ ¿¾î "»ç¿ë"À¸·Î ¼³Á¤ÇÑ´Ù. »óÅ°¡ »ç¿ëÀ¸·Î ¹Ù²î¸é¼ Àç½ÃÀÛÇ϶ó´Â ¾È³» ¸Þ½ÃÁö°¡ ³ªÅ¸³´Ù. SQL
Server ¼ºñ½º ³ëµå¸¦ ¼±ÅÃÇÏ¸é ¼ºñ½º°¡ ½ÇÇà ÁßÀÓÀÌ Ç¥½ÃµÇ¾î Àִµ¥ º¯°æµÈ ÇÁ·ÎÅäÄÝÀ» Àû¿ëÇϱâ À§ÇØ Àç½ÃÀÛÇÑ´Ù.
ÀÌÁ¦ TCP/IP·Îµµ ¿¬°áÇÒ ¼ö ÀÖ¾î DBeaver¿¡¼ Á¢¼Ó °¡´ÉÇÏ´Ù. DBeaverÀÇ ¿¬°á ´ëÈ»óÀÚ¿¡¼ SQL Server¸¦ ¼±ÅÃÇÑ´Ù. MS¿¡¼ Á¦°øÇÏ´Â µå¶óÀ̹öº¸´Ù´Â jTDS µå¶óÀ̹ö°¡ ȣȯ¼ºÀÌ ´õ ÁÁ´Ù. µå¶óÀ̹ö¸¦ ¼±ÅÃÇϸé Á¢¼Ó °ü·Ã
Á¤º¸¸¦ ¹¯´Â ´ëÈ»óÀÚ°¡ ³ªÅ¸³´Ù.
Host´Â µðÆúÆ®ÀÎ
localhost¸¦ ¼±ÅÃÇÏ°í Database´Â ¾Õ¿¡¼ ¸¸µé¾î µÎ¾ú´ø Study¸¦ ÀÔ·ÂÇÑ´Ù. ÀÎÁõ ¹æ½ÄÀº
Windows AuthenticationÀ» ¼±ÅÃÇÏ°í ¿Ï·á ¹öÆ°À» ´©¸¥´Ù. ÇÊ¿äÇÏ¸é µð¹ÙÀ̽º
µå¶óÀ̹ö¸¦ ´Ù¿î·ÎµåÇÏ¿© ¼³Ä¡ÇÑ´Ù.
°è¼ÓÇؼ ¿À¶óŬ¿¡µµ Á¢¼ÓÇØ º¸ÀÚ. »õ µ¥ÀÌÅͺ£À̽º ¿¬°á ¹öÆ°À» Ŭ¸¯ÇÏ°í
¿À¶óŬÀ» ¼±ÅÃÇÑ ÈÄ Á¢¼Ó Á¤º¸¸¦ ÀÔ·ÂÇÑ´Ù. localhostÀÇ Study
DB¿¡ Á¢¼ÓÇ쵂 »ç¿ëÀÚ À̸§Àº SYSTEMÀ¸·Î ÁöÁ¤ÇÏ°í ºñ¹Ð¹øÈ£¸¦ ÀÔ·ÂÇÑ´Ù.
ÇÊ¿ä½Ã µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ¹Þ´Âµ¥ ¿À¶óŬÀÇ Á¤Ã¥»ó ·Î±×Àεµ ÇØ¾ß ÇÑ´Ù. ´Ù¿î·Îµå
¹ÞÀº ÈÄ Add jar ¹öÆ°À» ´·¯ À§Ä¡¸¦ ¾Ë·Á ÁÖ¸é µÈ´Ù. ÀÌ·±
½ÄÀ¸·Î ¿øÇÏ´Â DBMSÀÇ Á¢¼Ó Á¤º¸¸¸ Á¦°øÇϸé ÇϳªÀÇ Äõ¸®Åø·Î ¿©·¯ ¼¹ö¿¡ µ¿½Ã¿¡ Á¢¼ÓÇÒ ¼ö ÀÖ´Ù. DB Ž»ö±â¿¡¼ ¼¹öÀÇ À̸§¸¸ Àû´çÈ÷ ÆíÁýÇØ µÎ¸é Çò°¥¸®Áö ¾Ê´Â´Ù. ´ÙÀ½Àº
¼¼ °³ÀÇ ¼¹ö¿¡ µ¿½Ã¿¡ Á¢¼ÓÇÑ ¸ð½ÀÀÌ´Ù.
°¢°¢ÀÇ ÅÇ¿¡ ¼¹öº°·Î Äõ¸®Ã¢À» ¿¾î ³õ°í ÀÛ¾÷ÇÒ ¼ö ÀÖ´Ù. DBMSÀÇ
Á¾·ù³ª À§Ä¡¿¡ »ó°ü¾øÀÌ ÇѲ¨¹ø¿¡ Á¢¼ÓÇØ ³õ°í ¸í·ÉÀ» ³»¸± ¼ö ÀÖ¾î Æí¸®ÇÏ´Ù. DBMS¸¶´Ù Äõ¸®°¡ Á¶±Ý¾¿
´Ù¸¥ °æ¿ì µ¿½Ã¿¡ ½ÇÇàÇØ º¸¸ç Â÷ÀÌÁ¡À» ÇнÀÇÒ ¼ö ÀÖ¾î Ãʺ¸ÀÚ¿¡°Ô ƯÈ÷ À¯¿ëÇÏ´Ù.
DBeaver ¿Ü¿¡µµ ¾µ¸¸ÇÑ ÅëÇÕ Äõ¸®ÅøÀÌ ¸¹ÀÌ ¹ßÇ¥µÇ¾î ÀÖÀ¸¸ç ¾à°£ÀÇ
ºñ¿ëÀ» ÁöºÒÇϸé ÀÏÀÏÀÌ ¼öÀÛ¾÷À¸·Î ÇØ¾ß ÇÒ ÀÏÀ» ÀÚµ¿À¸·Î ó¸®ÇØ ÁÖ´Â °í±ÞÅøµµ ¸¹´Ù. SQL ¹®¹ýÀ»
¸¶½ºÅÍÇÏ´Â °Í¸¸ÅÀ̳ª ÅøÀ» ÀÚÀ¯ÀÚÀç·Î Àß ½á ¸Ô´Â °Íµµ »ý»ê¼º Çâ»ó¿¡ Å« µµ¿òÀÌ µÈ´Ù. Áö¼ÓÀûÀ¸·Î °ü½ÉÀ»
°¡Áö°í ¿©·¯ ÅøÀ» »ç¿ëÇØ º¸ÀÚ.
MariaDBµµ ´Ù¸¥ DBMS¿Í
¸¶Âù°¡Áö·Î ÀýÂ÷ÀûÀÎ ÇÁ·Î±×·¡¹Ö ±â´ÉÀ» Á¦°øÇÑ´Ù. TSQLÀ̳ª PL/SQL¿¡
ºñÇØ µµÀÔÀÌ ´Ê¾î ¹Ì¿Ï¼ºÀÎ ºÎºÐÀÌ ¾à°£ ÀÖÁö¸¸ »ç¿ë ¸ñÀûÀ̳ª ¿ëµµ´Â À¯»çÇØ ¹®¹ýÀÇ Â÷ÀÌÁ¡¸¸ ¼÷ÁöÇÏ¸é ±Ý¹æ Àͼ÷ÇØÁú ¼ö ÀÖ´Ù. º»¹®¿¡¼ °³³äÀº ÀÌ¹Ì ´Ù ½Ç½ÀÇßÀ¸¹Ç·Î MariaDB ƯÀ¯ÀÇ ¹®¹ý¸¸
¿ä¾àÇϱâ·Î ÇÑ´Ù.
MariaDBÀÇ º¯¼ö´Â µÎ °¡Áö Á¾·ù°¡ ÀÖ´Ù. @À¸·Î ½ÃÀÛÇÏ¸é ¼¼¼Ç³»¿¡¼ °ªÀÌ À¯ÁöµÇ´Â Àü¿ªº¯¼ö¸ç º°µµÀÇ ¼±¾ð¾øÀÌ ¹Ù·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. SET ¹®À¸·Î ¼±¾ð ¹× ÃʱâÈÇϸç ÃʱⰪ¿¡ µû¶ó ŸÀÔÀÌ ÀÚµ¿À¸·Î °áÁ¤µÈ´Ù. ´ÙÀ½
¸í·ÉÀº Á¤¼öÇüÀÇ @score º¯¼ö¸¦ 123À¸·Î ¼±¾ð ¹× ÃʱâÈÇÑ
ÈÄ Ãâ·ÂÇÑ´Ù.
SET @score = 123;
SELECT @score;
PRINT³ª PUT_LINE °°Àº
Ãâ·Â ¸í·ÉÀÌ µû·Î ¾ø¾î SELECT ¹®À» ´ë½Å »ç¿ëÇÑ´Ù. @ÀÌ
ºÙÀº º¯¼ö´Â Àü¿ªÀÌ¸ç µÎ ¹®ÀåÀº µ¶¸³ÀûÀÌ¾î¼ ²À ÇѲ¨¹ø¿¡ ½ÇÇàÇÏÁö ¾Ê¾Æµµ »ó°ü¾ø´Ù. SET ¹®¿¡ ÀÇÇØ
¼±¾ð ¹× ÃʱâÈµÈ @score´Â ¼¼¼Ç ³»¿¡¼ °è¼Ó À¯È¿ÇÏ¸ç ¾ðÁ¦µçÁö ´Ù¸¥ °ªÀ» ´ëÀÔÇϰųª Ãâ·ÂÇÒ ¼ö
ÀÖ´Ù.
SET ¹®À¸·Î ´ëÀÔÇÒ ¶§´Â = ¿¬»êÀÚ¸¦
»ç¿ëÇϴµ¥ ºñÇØ Äõ¸®¹®¿¡¼´Â = ÀÌ ºñ±³ ¿¬»êÀÚ¿©¼ Çʵ尪À» º¯¼ö¿¡ ´ëÀÔÇÒ ¶§ := ¿¬»êÀÚ¸¦ »ç¿ëÇÑ´Ù. ¼ºêÄõ¸®¸¦ µÎ ¹®ÀåÀ¸·Î ºÐ¸®ÇÒ ¶§ ¾ÕÂÊ Äõ¸®
°á°ú¸¦ º¯¼ö¿¡ ÀúÀåÇØ µÎ°í ´ÙÀ½ Äõ¸®¹®¿¡¼ »ç¿ëÇÑ´Ù.
SELECT @maxnum := MAX(num) FROM tItem;
SELECT item FROM tItem WHERE num = @maxnum;
MAX(num) Áý°è ÇÔ¼öÀÇ °á°ú°¡ @maxnum º¯¼ö¿¡ ´ëÀԵȴÙ. ¶Ç´Â MAX(num) INTO @maxnum ±¸¹®À¸·Îµµ ´ëÀÔÇÒ ¼ö ÀÖ´Ù. SQL
Server ¹æ½Ä°ú ¿À¶óŬ ¹æ½ÄÀ» ´Ù Áö¿øÇÏ´Â ¼ÀÀÌ´Ù. ÀÌ °ªÀ» ´ÙÀ½ Äõ¸®¿¡ »ç¿ëÇÏ¿© Àç°í°¡
°¡Àå ¸¹Àº »óÇ°À» Á¶»çÇÏ¿´´Ù.
º¯¼ö´Â Áß°£ °á°ú¸¦ Àá½Ã ÀúÀåÇϰųª °è»ê¿ëÀ¸·Î ¾²´Â °ÍÀÌ¾î¼ Äõ¸®Ã¢¿¡¼ Á÷Á¢ »ç¿ëÇϱ⺸´Ù´Â ÁÖ·Î ÇÁ·Î½ÃÀú ³»ºÎ¿¡¼
»ç¿ëÇÑ´Ù. µû¶ó¼ º¯¼ö³ª Á¦¾î¹®À» Á¦´ë·Î ½Ç½ÀÇØ º¸·Á¸é ÇÁ·Î½ÃÀú Á¤Àǹ®ºÎÅÍ ¾Ë¾Æ¾ß ÇÑ´Ù. ÇÁ·Î½ÃÀúÀÇ ºí·ÏÀ» ¸íÈ®È÷ ±¸ºÐÇϱâ À§ÇÑ DELIMITER ¼±¾ð¹®ÀÌ
¸ÕÀú ¿Â´Ù.
DELIMITER $$
CREATE [OR REPLACE] PROCEDURE ÇÁ·Î½ÃÀú À̸§()
BEGIN
¿©±â¿¡
Äڵ带 ÀÛ¼ºÇÑ´Ù.
END $$
DELIMITER ;
ÀÓÀÇÀÇ ±âÈ£·Î ±¸ºÐÀÚ¸¦ Á¤ÀÇÇØ ³õ°í ÀÌ ±¸ºÐÀÚ°¡ ´Ù½Ã ³ªÅ¸³¯ ¶§±îÁö ÇÁ·Î½ÃÀú º»Ã¼·Î Çؼ®ÇÑ´Ù. ÇÁ·Î½ÃÀú ³»ºÎÀÇ ¸í·É¹®ÀÌ ; À¸·Î ³¡³ª´Ù º¸´Ï ; ¸¸À¸·Î ÇÁ·Î½ÃÀúÀÇ ³¡À» ¸íÈ®È÷ ÆǺ°Çϱ⠾î·Æ´Ù. ±×·¡¼ $$ °°Àº Ư¼öÇÑ ±âÈ£¸¦ ±¸ºÐÀÚ·Î Á¤ÀÇÇÏ°í END $$°¡ ³ª¿Ã ¶§±îÁö
ÇÁ·Î½ÃÀúÀÇ º»Ã¼·Î Á¤ÀÇÇÑ´Ù.
ÇÁ·Î½ÃÀú Á¤ÀÇ°¡ ³¡³ ÈÄ ; À» ±¸ºÐÀÚ·Î ´Ù½Ã ÁöÁ¤ÇØ¾ß ÀϹÝÀûÀÎ Äõ¸®¹®À»
Æò¼Ò´ë·Î ½ÇÇàÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î½ÃÀú³ª ÇÔ¼ö, Æ®¸®°Å´Â Ç×»ó
±¸ºÐÀÚ Á¤Àǹ®°ú END $$ ±×¸®°í DELIMITER ; ¾È¿¡
º»Ã¼¸¦ ÀÛ¼ºÇÑ´Ù. ÇÁ·Î½ÃÀú º»Ã¼¿¡¼ º¯¼ö¸¦ ¼±¾ðÇÏ°í »ç¿ëÇÏ´Â ÄÚµå´Â ´ÙÀ½°ú °°´Ù.
DELIMITER $$
CREATE OR REPLACE PROCEDURE SP_proc()
BEGIN
DECLARE
score INT DEFAULT 123;
SELECT
score;
SET
score = score + 1;
SELECT
score;
END $$
DELIMITER ;
ÇÁ·Î½ÃÀú³»¿¡ ¼±¾ðÇÏ´Â º¯¼ö´Â ÇØ´ç ºí·Ï¿¡¼¸¸ »ç¿ëÇÏ´Â Áö¿ªº¯¼ö´Ù. Àü¿ªº¯¼ö¿Í´Â
´Þ¸® @À» ºÙÀÌÁö ¾ÊÀ¸¸ç DECLARE·Î ¼±¾ðÇÑ ÈÄ »ç¿ëÇÑ´Ù. ¼±¾ð½Ã¿¡ ŸÀÔÀ» ÁöÁ¤ÇÏ°í DEFAULT Å°¿öµå·Î ÃʱⰪÀ» ÁöÁ¤ÇÑ´Ù. score¸¦ 123À¸·Î ¼±¾ð ¹× ÃʱâÈÇÏ¿© Ãâ·ÂÇÏ°í °ªÀ» 1 Áõ°¡½ÃŲ ÈÄ ´Ù½Ã Ãâ·ÂÇß´Ù.
À§ ÄÚµå´Â ÇÁ·Î½ÃÀú¸¦ Á¤ÀǸ¸ ÇÒ »ÓÀÌ¾î¼ º°´Ù¸¥ Ãâ·ÂÀº ¾ø´Ù. ÇÁ·Î½ÃÀú¸¦
½ÇÇàÇÒ ¶§´Â CALL ¸í·ÉÀ¸·Î È£ÃâÇÏ¸ç °ýÈ£ ¾È¿¡ Àμö¸¦ Àü´ÞÇÑ´Ù. Àμö°¡
¾øÀ» ¶§´Â °ýÈ£¸¦ »ý·«ÇÒ ¼ö ÀÖÁö¸¸ °¡±ÞÀû ºó °ýÈ£¸¦ Àû´Â °ÍÀÌ ÁÁ´Ù. ´ÙÀ½ ¸í·É¿¡ ÀÇÇØ SP_proc ÇÁ·Î½ÃÀú°¡ È£ÃâµÇ¸ç score º¯¼öÀÇ ÃʱⰪÀÎ 123°ú 1 Áõ°¡ÇÑ 124°¡
Ãâ·ÂµÈ´Ù.
CALL SP_proc();
º¯¼ö »Ó¸¸ ¾Æ´Ï¶ó Á¶°Ç¹®À̳ª Á¦¾î¹®µµ ¸ðµÎ ÇÁ·Î½ÃÀú ¾È¿¡ ÀÌ·± Çü½ÄÀ¸·Î ÀÛ¼ºÇÑ´Ù. ±¸ºÐÀÚ´Â ´Ù¸¥ DBMS¿¡´Â ¾ø´Â Á¦¾àÀÌ¸ç º¸±âµµ ÁÁÁö ¾Ê°í ¾²±âµµ
ºÒÆíÇÏ´Ù. Àå¹®ÀÇ ÄÚµå ¿µ¿ªÀ» ±¸ºÐÇϱâ À§ÇÑ ÀåÄ¡¶ó´Â ÇÕ´çÇÑ ÀÌÀ¯°¡ ÀÖÁö¸¸ ´Ù¸¥ DBMS¿¡ ºñÇØ ±¸¹® ºÐ¼®±âÀÇ ¼öÁØÀÌ ³·Àº °ÍÀÌ´Ù.
IF ¹®Àº Á¶°ÇÀ» ÆǺ°ÇÏ¿© ½ÇÇàÇÒ ¸í·ÉÀ» ¼±ÅÃÇÑ´Ù. ¸Å¹ø »õ·Î¿î ÇÁ·Î½ÃÀú¸¦ ÀÏÀÏÀÌ ¸¸µé¸é ¹ø°Å·Î¿ì´Ï ¾Õ¿¡¼ ¸¸µç proc ÇÁ·Î½ÃÀú¸¦
¹Ù²ã °¡¸ç Å×½ºÆ®ÇØ º¸ÀÚ. »ý¼º¹®ÀÌ CREATE OR REPLACE¿©¼
°°Àº À̸§À» °è¼Ó »ç¿ëÇصµ ¹«¹æÇÏ´Ù. ´ÙÀ½ ÇÁ·Î½ÃÀú´Â score°¡
12ÀÎÁö ¾Æ´ÑÁö ÆǺ°ÇÑ´Ù.
DELIMITER $$
CREATE OR REPLACE PROCEDURE SP_proc()
BEGIN
DECLARE
score INT;
SET
score = 12;
IF
score = 12 THEN
SELECT
'12ÀÔ´Ï´Ù';
ELSE
SELECT
'12°¡ ¾Æ´Õ´Ï´Ù.';
END
IF;
END $$
DELIMITER ;
THEN¿¡ °É¸®´Â ¸í·ÉÀÌ ¿©·¯ °³À̸é BEGIN END ºí·ÏÀ¸·Î º¹¹®À» ±¸¼ºÇÑ´Ù. °ÅÁþÀÏ ¶§ÀÇ Ã³¸®¸¦ ÇÒ
ÇÊ¿ä°¡ ¾øÀ¸¸é ELSE¸¦ »ý·«ÇÏ°í ¿©·¯ °³ÀÇ Á¶°ÇÀ» °¢°¢ Á¡°ËÇÏ·Á¸é ELSEIF
¹®À» °è¼Ó ³ª¿ÇÑ´Ù. ¿¬°áÇÒ Á¶°ÇÀÌ ¸¹À» ¶§´Â CASE ¹®À»
»ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. ´ÙÀ½ ÇÁ·Î½ÃÀú´Â Á¡¼ö¿¡ µû¸¥ ÇÐÁ¡À» °è»êÇÑ´Ù.
DELIMITER $$
CREATE OR REPLACE PROCEDURE SP_proc()
BEGIN
DECLARE
score INT DEFAULT 86;
CASE
WHEN
score > 95 THEN SELECT 'A+';
WHEN
score > 90 THEN SELECT 'A';
WHEN
score > 85 THEN SELECT 'B+';
WHEN
score > 80 THEN SELECT 'B';
ELSE
SELECT 'C';
END
CASE;
END $$
DELIMITER ;
CASE ºí·ÏÀÇ WHEN Àý¿¡
Á¶°ÇÀ» ¾²°í ÀÌ Á¶°ÇÀ» ¸¸Á·ÇÒ ¶§ ½ÇÇàÇÒ ¸í·ÉÀ» THEN Àý¿¡ Àû´Â´Ù.
¸Å Á¶°Ç¸¶´Ù ½ÇÇàÇÒ ¸í·ÉÀÌ °°´Ù¸é °°Àº ¸í·ÉÀ» ¹Ýº¹ÇÏ´Â °Íº¸´Ù °ª¸¸ ¼±ÅÃÇÏ´Â °ÍÀÌ È¿À²ÀûÀÌ´Ù. °ª
Çϳª¸¦ ¼±ÅÃÇÒ ¶§´Â THEN ´ÙÀ½¿¡ °ª¸¸ Àû°í ±× °á°ú¸¦ ´Ù¸¥ º¯¼ö¿¡ ´ëÀÔÇÑ´Ù. ´ÙÀ½ ÄÚµå´Â ¶È°°Àº µ¿ÀÛÀ» Ç쵂 grade¿¡ ÇÐÁ¡À» ¼±ÅÃÇØ ³õ°í
ÃÖÁ¾ÀûÀ¸·Î ÇÑ ¹ø¸¸ Ãâ·ÂÇÑ´Ù´Â Á¡ÀÌ ´Ù¸£´Ù.
DELIMITER $$
CREATE OR REPLACE PROCEDURE SP_proc()
BEGIN
DECLARE
score INT DEFAULT 86;
DECLARE
grade CHAR(2);
SET
grade = CASE
WHEN
score > 95 THEN 'A+'
WHEN
score > 90 THEN 'A'
WHEN
score > 85 THEN 'B+'
WHEN
score > 80 THEN 'B'
ELSE
'C'
END;
SELECT
grade;
END $$
DELIMITER ;
SELECT ¸í·ÉÀÌ ¹Ýº¹ÀûÀ¸·Î ³ªÅ¸³ªÁö ¾Ê¾Æ °£°áÇÏ´Ù. THEN ´ÙÀ½¿¡ ¸í·ÉÀÌ ¾Æ´Ñ °ªÀÌ ¿Ã ¶§´Â CASE ¹® Àüü°¡ ÇϳªÀÇ
°ªÀ̹ǷΠTHENÀÇ ³¡¿¡ ¼¼¹ÌÄÝ·ÐÀ» ºÙÀÌÁö ¾Ê´Â´Ù. ±×¸®°í
CASEÀÇ ³¡ÀÌ END CASE°¡ ¾Æ´Ñ END¶ó´Â Á¡µµ ´Ù¸£´Ù.
¹Ýº¹¹®Àº ¼¼ °¡Áö°¡ ÀÖ´Ù. WHILE ¹®Àº Á¶°ÇÀÌ ÂüÀÎ µ¿¾È ¹Ýº¹ÇÑ´Ù. REPEAT UNTIL ¹®Àº Á¶°ÇÀÌ ¸¸Á·ÇÒ ¶§±îÁö Áï, Á¶°ÇÀÌ °ÅÁþÀÎ
µ¿¾È ¹Ýº¹ÇÑ´Ù. ´ÙÀ½ ¿ÞÂÊ ÄÚµå´Â numÀÌ 100º¸´Ù ÀÛÀºµ¿¾È, ¿À¸¥ÂÊ ÄÚµå´Â numÀÌ
100º¸´Ù Ä¿Áú¶§±îÁö sum¿¡ numÀ» ´©ÀûÇÏ¿© 1~100±îÁöÀÇ Çհ踦 ±¸ÇÑ´Ù.
DELIMITER $$ CREATE OR REPLACE PROCEDURE SP_proc() BEGIN DECLARE
num INT DEFAULT 1; DECLARE
sum INT DEFAULT 0; WHILE
(num <= 100) DO SET
sum = sum + num; SET
num = num + 1; END
WHILE; SELECT
sum; END $$ DELIMITER ; |
DELIMITER $$ CREATE OR REPLACE PROCEDURE SP_proc() BEGIN DECLARE
num INT DEFAULT 1; DECLARE
sum INT DEFAULT 0; REPEAT SET
sum = sum + num; SET
num = num + 1; UNTIL
num > 100 END
REPEAT; SELECT
sum; END $$ DELIMITER ; |
Á¶°Ç°ú Çü½Ä¸¸ ´Ù¸¦ »Ó °á±¹ °°Àº ¹Ýº¹¹®ÀÌ´Ù. ·çÇÁ³»¿¡¼ LEAVE ¸í·ÉÀº ÇØ´ç ·çÇÁ¸¦ Å»ÃâÇϸç ITERATE´Â ·çÇÁÀÇ ¼±µÎ·Î
µ¹¾Æ°£´Ù. °¢°¢ ´Ù¸¥ ¾ð¾îÀÇ break, continue¿¡
ÇØ´çÇÑ´Ù. LOOP ¹®Àº Á¶°ÇÀ» ¸í½ÃÇÏÁö ¾Ê°í ¹«ÇÑÈ÷ ¹Ýº¹ÇÏ¸ç ·çÇÁ ³»ºÎ¿¡¼ Á¶°ÇÀ» Á¡°ËÇÏ¿© Àû´çÇÑ
½ÃÁ¡¿¡ Å»ÃâÇÑ´Ù.
DELIMITER $$
CREATE OR REPLACE PROCEDURE SP_proc()
BEGIN
DECLARE
num INT DEFAULT 1;
DECLARE
sum INT DEFAULT 0;
sumloop:
LOOP
SET
sum = sum + num;
SET
num = num + 1;
IF
num > 100 THEN
LEAVE
sumloop;
END
IF;
END
LOOP;
SELECT
sum;
END $$
DELIMITER ;
·çÇÁ¿¡ sumloop: ¶ó´Â À̸§À» ºÙ¿© µÎ°í numÀÌ 100À» ÃÊ°úÇϸé LEAVE
¸í·ÉÀ¸·Î ·çÇÁ¸¦ Å»ÃâÇÑ´Ù. ¹Ýº¹ Ƚ¼ö¸¦ ¹Ì¸® ¾Ë ¼ö ¾øÀ» ¶§´Â ¹«ÇÑ ·çÇÁ¸¦ ±¸¼ºÇÏ°í ·çÇÁ
³»ºÎ¿¡¼ Å»Ãâ ¿©ºÎ¸¦ °áÁ¤ÇÏ´Â °ÍÀÌ Æí¸®ÇÏ´Ù. ÀÏÁ¤ ¹üÀ§¸¦ ¹Ýº¹ÇÏ´Â FOR
¹®Àº Áö¿øÇÏÁö ¾Ê´Â´Ù.
ÇÁ·Î½ÃÀú´Â ÀÏ·ÃÀÇ Äڵ忡 ´ëÇØ À̸§À» ºÙ¿© ³õÀº °ÍÀÌ´Ù. Á¦¾î¹® ½Ç½ÀÀ»
À§ÇØ Àμö°¡ ¾ø´Â °£´ÜÇÑ ÇÁ·Î½ÃÀú¸¸ »ç¿ëÇߴµ¥ È£Ãâ¿øÀ¸·ÎºÎÅÍ Àμö¸¦ ¹ÞÀ» ¼öµµ ÀÖ´Ù. Àμö´Â ÇÁ·Î½ÃÀú¸í
´ÙÀ½ÀÇ °ýÈ£ ¾È¿¡ ¸ñ·ÏÀ» ¹àÈ÷µÇ ÀԷ¿ëÀº IN Å°¿öµå¸¦ ºÙÀÌ°í Ãâ·Â¿ëÀº OUT Å°¿öµå¸¦ ºÙÀδÙ.
ÀμöÀÇ °³¼ö³ª ŸÀÔ¿¡´Â º° Á¦¾àÀÌ ¾ø´Ù. ´ÙÀ½ ÇÁ·Î½ÃÀú´Â ȸ¿ø À̸§À»
p_member Àμö·Î Àü´Þ¹Þ¾Æ ÀÌ È¸¿øÀÇ ¿¹Ä¡±ÝÀ» 1000¿ø
Áõ°¡½ÃŲ´Ù. Àμö¿¡ @±âÈ£°¡ ¾ø´Ù º¸´Ï Çʵå À̸§°ú´Â ´Ù¸¥
À̸§À» »ç¿ëÇØ¾ß Çϴµ¥ º¸Åë Á¢µÎ p_¸¦ ºÙÀδÙ.
DELIMITER $$
CREATE OR REPLACE PROCEDURE SP_GrantBonus(IN
p_member CHAR(20))
BEGIN
UPDATE
tMember SET money = money + 1000 WHERE member = p_member;
END $$
DELIMITER ;
º»Ã¼¿¡¼ UPDATE Äõ¸®¸¦ ½ÇÇàÇ쵂 WHERE Á¶°Ç¹®¿¡¼ ȸ¿ø À̸§°ú Àμö·Î Àü´Þ¹ÞÀº À̸§À» ºñ±³ÇÑ´Ù. CALL SP_GrantBonus('ÃáÇâ');À¸·Î È£ÃâÇϸé ÃáÇâÀÌÀÇ ¿¹Ä¡±ÝÀÌ 1000¿ø ´Ã¾î³´Ù.
¹Ýº¹ÀûÀ¸·Î È£ÃâÇÒ ¼ö ÀÖ°í Àμö¸¦ ¹Ù²ã °¡¸ç ´Ù¸¥ ȸ¿ø¿¡ ´ëÇؼµµ Àç»ç¿ëÇÒ ¼ö ÀÖ¾î Æí¸®ÇÏ´Ù. Ãâ·Â¿ë Àμö´Â OUT Å°¿öµå¸¦ ºÙÀÌ¸ç º»Ã¼¿¡¼ ÀÌ º¯¼ö¿¡ °è»ê °á°ú¸¦
´ëÀÔÇÑ´Ù. ´ÙÀ½ ÇÁ·Î½ÃÀú´Â ȸ¿ø¼ö¸¦ ±¸ÇØ Ãâ·Â¿ë Àμö¿¡ ´ëÀÔÇÑ´Ù.
DELIMITER $$
CREATE OR REPLACE PROCEDURE SP_GetMemberNum(OUT
o_member_num INT)
BEGIN
SELECT
COUNT(*) INTO o_member_num FROM tMember;
END $$
DELIMITER ;
COUNT(*)À¸·Î ±¸ÇÑ ·¹ÄÚµå °³¼ö¸¦ Ãâ·Â¿ë Àμö o_member_num¿¡ ´ëÀÔÇÏ¿´´Ù. È£Ãâ¿ø¿¡¼´Â Àü¿ªº¯¼ö¸¦ ÇÁ·Î½ÃÀú·Î
Àü´ÞÇÏ°í ÀÌ °ªÀ¸·Î °á°ú°ªÀ» ÃëÇÑ´Ù.
CALL SP_GetMemberNum(@num);
SELECT @num;
@num Àü¿ªº¯¼ö¿¡ Äõ¸® ½ÇÇà °á°ú°¡ ´ëÀԵȴÙ. Àü¿ªº¯¼öÀ̹ǷΠ¹Ì¸® ¼±¾ðÇØ µÑ ÇÊ¿ä´Â ¾øÀ¸¸ç È£Ãâ¹®ÀÇ Àμö ¸ñ·Ï¿¡ À̸§¸¸ Àû¾î µÎ¸é µÈ´Ù. ÇÁ·Î½ÃÀú È£Ãâ ÈÄ ÀÌ °ªÀ» Ãâ·ÂÇÏ¸é ½ÇÇà °á°ú¸¦ ¾Ë ¼ö ÀÖ´Ù.
ÇÔ¼ö´Â ÇÁ·Î½ÃÀú¿¡ ºñÇØ °ªÀ» ¸®ÅÏÇÑ´Ù´Â Á¡ÀÌ ´Ù¸£´Ù. Àμö´Â ¸ðµÎ
ÀԷ¿ëÀ̸ç Ãâ·Â¿ë Àμö´Â »ç¿ëÇÒ ¼ö ¾ø´Ù. ÇÔ¼ö ¼±¾ð¹®¿¡ RETURNS
±¸¹®À¸·Î ¸®ÅÏ Å¸ÀÔÀ» ¸í½ÃÇÏ¸ç º»Ã¼¿¡¼ RETURN ¸í·ÉÀ¸·Î °ªÀ» ¸®ÅÏÇÑ´Ù.
°ª Çϳª¸¦ ¸®ÅÏÇϹǷΠÇÔ¼ö ÀÚü°¡ ÇϳªÀÇ °ªÀ¸·Î Ãë±ÞµÇ¸ç µû¶ó¼ ÇÔ¼ö È£Ãâ¹®À» SELECT³ª ´Ù¸¥ ¼ö½Ä ³»ºÎ¿¡¼ ¹Ù·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ÇÔ¼ö´Â
Àμö·Î Àü´ÞÇÑ µÎ Á¤¼öÀÇ Çհ踦 ±¸ÇØ ¸®ÅÏÇÑ´Ù.
DELIMITER $$
CREATE OR REPLACE FUNCTION FN_AddInt(a INT, b INT)
RETURNS INT
BEGIN
RETURN
a + b;
END $$
DELIMITER ;
a, b µÎ °³ÀÇ Á¤¼öÇü Àμö¸¦ ¹ÞÀ¸¸ç Á¤¼ö°ªÀ» ¸®ÅÏÇÑ´Ù. º»Ã¼¿¡¼ a ¿Í bÀÇ
ÇÕÀ» ±¸ÇØ RETURN ¸í·ÉÀ¸·Î ¹ÝȯÇÑ´Ù. È£Ãâ¿ø¿¡¼´Â ÀÌ
°ªÀ» °ð¹Ù·Î Ãâ·ÂÇϰųª ´Ù¸¥ ¿¬»ê¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
SELECT FN_AddInt(2, 3);
FN_AddInt(2, 3)ÀÇ °á°ú°¡ 5¿Í °°À¸¸ç Á¤¼ö°¡ µé¾î°¥ ¼ö ÀÖ´Â ¸ðµç °÷¿¡ ÇÔ¼ö È£Ãâ¹®À» ¾µ ¼ö ÀÖ´Ù. ÇÁ·Î½ÃÀú´Â
µ¿ÀÛÀ» ó¸®ÇÏ´Â µ¥ ºñÇØ ÇÔ¼ö´Â °ªÀ» °è»êÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù.
Ä¿¼´Â °á°ú¼ÂÀÇ ÇÑ ÁöÁ¡À» °¡¸®Å°´Â Æ÷ÀÎÅÍÀÌ´Ù. SQL Server³ª
¿À¶óŬÀÇ Ä¿¼¿Í °³³ä»ó °°°í Á¤ÀÇ, ¿ÀÇÂ, ¼øȸ ¹æ¹ýµµ À¯»çÇÏ´Ù. ´Ù¸¸ °á°ú¼ÂÀÇ ³¡À» ÆǺ°ÇÏ´Â ¹æ¹ýÀÌ µ¶Æ¯ÇÏ´Ù. NOT FOUND ¿¡·¯
¹ß»ý½Ã Ưº°ÇÑ º¯¼ö¸¦ ¼³Á¤Çϵµ·Ï µî·ÏÇØ ³õ°í LOOP ¹®À¸·Î ¹«ÇÑ ·çÇÁ¸¦ µ¹´Ù°¡ ¿¡·¯ ¹ß»ý½Ã Å»ÃâÇÏ´Â
Çü½ÄÀÌ´Ù. ´ÙÀ½ ÇÁ·Î½ÃÀú´Â Ä¿¼¸¦ »ç¿ëÇÏ¿© tCity Å×À̺íÀÇ
µµ½Ã¸íÀ» ¼ø¼´ë·Î Àд´Ù.
DELIMITER $$
CREATE OR REPLACE PROCEDURE SP_dumpCity()
BEGIN
DECLARE
city_name CHAR(10);
DECLARE
eof INT DEFAULT 0;
DECLARE
testcursor CURSOR FOR SELECT name FROM tCity;
DECLARE
CONTINUE HANDLER FOR NOT FOUND SET eof = 1;
OPEN
testcursor;
fetch_loop:
LOOP
FETCH
testcursor INTO city_name;
IF
eof THEN
LEAVE
fetch_loop;
END
IF;
SELECT
city_name;
END
LOOP;
CLOSE
testcursor;
END $$
DELIMITER ;
SELECT name FROM tCity Äõ¸®¿¡ ´ëÇØ Ä¿¼¸¦ »ý¼ºÇÏ¿©
µµ½Ã¸íÀ» ¼ø¼´ë·Î Àд Ŀ¼¸¦ ¸¸µç´Ù. ³¡ ÆǺ°À» À§ÇØ NOT
FOUND ¿¡·¯ ¹ß»ý½Ã eof¿¡ 1À» ´ëÀÔÇÏ´Â
Çڵ鷯¸¦ ¼³Ä¡ÇØ µÎ°í Ä¿¼¸¦ ¿¬´Ù. LOOP¿¡¼ FETCH ¹®À¸·Î
Ä¿¼ÀÇ ´ÙÀ½°ªÀ» ÀÐµÇ eof°¡ 1ÀÌ µÇ¸é Å»ÃâÇÑ´Ù.
tCityÀÇ µµ½Ã¸íÀÌ Çϳª¾¿ Ãâ·ÂµÈ´Ù. ¾î·°Å³ª Àß ¼øȸÇÏ¸ç °ªµµ Àß Àоî Ä¿¼ÀÇ º»ºÐÀº Á¦´ë·Î ÇÏ´Â ¼ÀÀÌ´Ù. ±×·¯³ª
°á°ú¼ÂÀÇ ³¡À» ¸¸³ª´Â »óȲÀ» ¿¹¿Ü·Î ó¸®ÇÏ´Â ¹®¹ýÀº ¹Ù¶÷Á÷ÇÏÁö ¸øÇÑ ±¸Á¶ÀÌ´Ù. EOF´Â ºÒ°¡Ç×·ÂÀûÀÎ
¿¹¿Ü°¡ ¾Æ´Ñ Åë»óÀûÀ¸·Î ¸¸³ª´Â »óȲÀ̹ǷΠ¸®ÅÏ°ªÀ̳ª »óÅ°ªÀ¸·Î ó¸®ÇÏ´Â °ÍÀÌ ¿Ç´Ù.
MariaDB ¿ËÈ£ÀÚ´Â ¾î·°Å³ª µ¹¾Æ°¡¸é µÇÁö ¾Ê´À³Ä°í º¯È£ÇÏ°ÚÁö¸¸
ÀÌ·± ¾î»öÇÑ ¹®¹ýÀ» º¸¸é ¿ÀǼҽº°¡ »ó¿ë DBMS¿¡ ºñÇØ ÇѼö ¾Æ·¡ÀÓÀ» ÀÎÁ¤ÇÏÁö ¾ÊÀ» ¼ö ¾ø´Ù. EOF °ËÃâ¿¡ ¿¹¿Ü¸¦ ½á ¹ö¸®´Â ¹Ù¶÷¿¡ ÁøÂ¥ ¿¹¿Ü°¡ ¹ß»ýÇÏ´Â »óȲ°ú ±¸ºÐÇÒ ¼ö ¾ø´Â Ä¡¸íÀûÀÎ ¾àÁ¡ÀÌ ÀÖ´Ù.
MySQLÀº ¹öÀü 5ºÎÅÍ
Æ®¸®°Å¸¦ Áö¿øÇϱ⠽ÃÀÛÇØ ´Ù¸¥ DBMS¿¡ ºñÇØ µµÀÔÀÌ »ó´çÈ÷ ´Ê¾úÀ¸¸ç ¾ÆÁ÷ ±â´ÉÀûÀ¸·Î ¹Ì¿Ï¼ºÀÎ ºÎºÐµµ
¸¹´Ù. ±× ÈļÕÀÎ MariaDBµµ ¹°·ÐÀÌ´Ù. AFTER, BEFORE Æ®¸®°Å¸¸ Áö¿øÇϸç INSTEAD OF Æ®¸®°Å´Â
¾ÆÁ÷ Áö¿øÇÏÁö ¾Ê´Â´Ù.
Æ®¸®°Å º»Ã¼¿¡¼ NEW´Â »ðÀÔ ¶Ç´Â º¯°æÇÑ µ¥ÀÌÅ͸¦ °¡Áö´Â Àӽà Å×À̺íÀ̸ç
OLD´Â »èÁ¦ ¶Ç´Â º¯°æÀüÀÇ µ¥ÀÌÅ͸¦ °¡Áö´Â Àӽà Å×À̺íÀÌ´Ù. Æ®¸®°Å
º»Ã¼¿¡¼ µÎ Àӽà Å×À̺íÀ» ÂüÁ¶ÇÏ¸é ¾î¶² µ¥ÀÌÅÍ°¡ ¾î¶»°Ô ¹Ù²î¾ú´ÂÁö ¾Ë ¼ö ÀÖ´Ù. ´ÙÀ½ Æ®¸®°Å´Â tCity°¡ º¯°æµÉ ¶§ Àα¸¼öÀÇ º¯È¸¦ º¸¿© ÁØ´Ù.
DELIMITER $$
CREATE OR REPLACE TRIGGER TR_Message
AFTER UPDATE ON tCity
FOR EACH ROW
BEGIN
SET
@result = CONCAT(OLD.popu, '->', NEW.popu);
END $$
DELIMITER ;
tCity Å×À̺íÀÌ UPDATEµÇ°í
³ ÈÄ¿¡ OLDÀÇ Àα¸¼ö¿Í NEWÀÇ Àα¸¼ö¸¦ Á¶»çÇÏ¿© @result Àü¿ªº¯¼ö¿¡ ´ëÀÔÇØ µÐ´Ù. Æ®¸®°Å°¡ Àß µ¿ÀÛÇÏ´ÂÁö ´ÙÀ½
Äõ¸®·Î tCity Å×À̺íÀ» º¯°æÇØ º¸ÀÚ.
UPDATE tCity SET popu = popu + 1 WHERE name = '¼¿ï';
¼¿ïÀÇ Àα¸¼ö¸¦ 1 Áõ°¡½ÃÅ°¸é Æ®¸®°Å°¡ È£ÃâµÇ°í @result¿¡ º¯°æ ³»¿ªÀÌ ÀúÀåµÈ´Ù. ÀÌ º¯¼ö¸¦ Ãâ·ÂÇØ º¸¸é tCity Å×À̺íÀÌ ¾î¶»°Ô ¹Ù²î¾ú´ÂÁö ¾Ë ¼ö ÀÖ´Ù.
SELECT @result;
Æ®¸®°Å´Â »ç¿ëÀÚ°¡ È£ÃâÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó DBMS°¡ ÀÏÁ¤ÇÑ Á¶°ÇÀÌ µÉ
¶§ ÀÚµ¿À¸·Î È£ÃâÇÏ´Â ÄÚµåÀÌ´Ù. µû¶ó¼ º»¹®¿¡¼´Â Ãâ·Â ¸í·ÉÀ» »ç¿ëÇÒ ¼ö ¾øÀ¸¸ç ¹é±×¶ó¿îµå¿¡¼ ½ÇÇàµÇ´Â
Æ®¸®°ÅÀÇ Ãâ·ÂÀ» ¹Þ¾ÆÁÙ ´ë»óµµ ¾ø´Ù. ±×·¡¼ @result Àü¿ªº¯¼ö¿¡
°á°ú¸¦ ÀúÀåÇØ ³õ°í ÀÌ °ªÀ» Ãâ·ÂÇÏ¿© Æ®¸®°ÅÀÇ µ¿ÀÛÀ» È®ÀÎÇÏ¿´´Ù.
SQLÀº ±¸¹®ÀÌ º¹ÀâÇؼ ´Ù ¿Ü¿ì±â´Â ¾î·Á¿ì¸ç ÀÚÁÖ »ç¿ëÇÏÁö ¾Ê´Â
±¸¹®Àº Ç×»ó Çò°¥¸°´Ù. ÇÊ¿äÇÒ ¶§¸¶´Ù °Ë»öÇؼ ãÀ» ¼ö ÀÖÁö¸¸ ÀÛ¾÷ÀÇ È帧ÀÌ ²÷¾îÁ® »ý»ê¼ºÀÌ ¶³¾îÁö¸ç
À߸ø °Ë»öÇÏ¿© ¾û¶×ÇÑ ½Ç¼ö¸¦ ÇÏ´Â °æ¿ìµµ ÀÖ´Ù. ±âº»ÀûÀÎ SQL ±¸¹®Àº
ÀǵµÀûÀ¸·Î ¿Ü¿ö µÎ´Â °ÍÀÌ ÁÁ´Ù.
SELECT field FROM table WHERE cond ORDER BY
sort
OFFSET skip ROWS FETCH NEXT num ROWS ONLY
INSERT INTO table [(f1, f2, ...)] VALUES
(v1, v2, ...)
INSERT INTO dest [(f1, f2, ...)] SELECT f1,
f2, ... FROM src
CREATE TABLE dest AS SELECT f1, f2, ...
FROM src
DELETE FROM table WHERE cond
UPDATE table SET f1=v1, f2=v2 WHERE cond
MERGE INTO dest USING src ON (cond) WHEN
MATCHED THEN ... WHEN NOT MATCHED THEN ...
SELECT field FROM t1 [INNER] JOIN t2 ON
cond;
CAST(field AS type)
CREATE VIEW name [(f1, f2, ...)] AS SELECT
...
WITH table [(f1, f2, ...)] AS SELECT ...
OVER(PARTITION BY grouping ORDER BY sort)
PIVOT(sum FOR field IN (v1, v2, ...))
ƯÈ÷ ÀüÄ¡»çÀÇ À§Ä¡³ª Á¾·ù°¡ Çò°¥¸®´Âµ¥ Çʼö ±¸¹®ÀÇ ÀüÄ¡»ç¸¦ ´©¶ôÇÏ¸é ´çÀåÀº Àß ½ÇÇàµÇ´õ¶óµµ ȣȯ¼ºÀÌ ¶³¾îÁö¹Ç·Î
Ç¥ÁØ ±¸¹®ÀÇ ÀüÄ¡»ç´Â °¡±ÞÀû »ç¿ëÇÏ´Â ¹ö¸©À» µéÀÌ´Â °ÍÀÌ ÁÁ´Ù.
DBMS°£ÀÇ ±â´É Â÷ÀÌ´Â °ÅÀÇ ¾ø¾î ÇÑÂÊ¿¡¼ ±¸Çö °¡´ÉÇÑ ±â´ÉÀº ´Ù¸¥
ÂÊ¿¡¼µµ Ç×»ó ±¸Çö °¡´ÉÇÏ´Ù. ´Ù¸¸, ±¸¹®»óÀÇ Â÷ÀÌ°¡ ÀÖ¾î
´ëü ±â´ÉÀ» ã¾Æ¾ß ÇÑ´Ù. ´ÙÀ½ µµÇ¥´Â ¼¼ DBMSÀÇ ±¸¹®Àû
Â÷À̸¦ °£·«ÇÏ°Ô µµÇ¥·Î ¿ä¾àÇÑ´Ù. ÀÌ µµÇ¥¿¡¼ f´Â Çʵå, nÀº ÀÓÀÇÀÇ Á¤¼öÀÌ´Ù.
±â´É |
¿À¶óŬ |
SQL Server |
MariaDB |
|||
°è»ê½Ä Ãâ·Â |
SELECT ½Ä FROM dual |
SELECT ½Ä |
¿À¶óŬ, SQL Server µÎ
¹æ½Ä ¸ðµÎ Áö¿ø |
|||
¿À¶óŬÀº FROM ÀýÀÌ
ÇʼöÀÌ´Ù. |
||||||
n Çà Á¶È¸ |
WHERE rownum <= n |
TOP n [PERCENT] |
LIMIT [s], n = LIMIT n
OFFSET s |
|||
¿À¶óŬÀº Á¶°ÇÀ» °Ç ÈÄ Á¦ÇÑÇÏ·Á¸é ¼ºêÄõ¸®°¡ ÇÊ¿äÇÏ´Ù. |
||||||
ºÎºÐÇà Á¶È¸ |
ORDER BY f OFFSET s ROWS
FETCH NEXT n ROWS ONLY |
¹ÌÁö¿ø |
||||
¿À¶óŬÀº ORDER BY¿Í
OFFSETÀ» ¸ðµÎ »ý·«ÇÏ¿© Á¤·Ä¾øÀÌ Ã³À½ºÎÅÍ ¼±ÅÃÇÒ ¼ö ÀÖÀ¸³ª SQL
Server´Â ¸ðµç ±¸¹®ÀÌ Çʼö¿©¼ »ý·«ÇÒ ¼ö ¾ø´Ù. |
||||||
ÀÚµ¿ Ä¿¹Ô |
OFF |
ON |
ON |
|||
µðÆúÆ® ¼³Á¤¸¸ ´Ù¸¦ »Ó ¼Â ´Ù ÀÚµ¿ Ä¿¹Ô ¿É¼ÇÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. |
||||||
È®Àå INSERT |
¹ÌÁö¿ø |
Áö¿ø |
Áö¿ø |
|||
INSERT INTO (Çʵå¸ñ·Ï) VALUES (....), (....), (....) Çü½ÄÀ¸·Î
¿©·¯ ÇàÀ» ÇѲ¨¹ø¿¡ »ðÀÔÇÑ´Ù. |
||||||
Á¶È¸ °á°ú Å×ÀÌºí »ý¼º |
CREATE TABLE t AS SELECT
... |
SELECT ... INTO t
FROM... |
¿À¶óŬ°ú °°À½ |
|||
µ¥ÀÌÅ͸¸ º¹»çÇÒ »Ó ±âº»Å°³ª Á¦¾à ¼³Á¤Àº º¹»çÇÏÁö ¾Ê´Â´Ù. |
||||||
ÀÚµ¿ Áõ°¡¿ |
½ÃÄö½º, GENERATED AS
IDENTITY |
½ÃÄö½º, IDENTITY(start,
inc) |
AUTO_INCREMENT |
|||
¼¼ DBMS¸¦ µ¿½Ã¿¡
Áö¿øÇÏ´Â ¹æ¹ýÀº ¾ø´Ù. ½ÃÄö½º´Â SQL Serverµµ
Áö¿øÇÏÁö¸¸ µðÆúÆ® ŸÀÔÀÌ BIGINTÀÌ°í 0ÀÌ ¾Æ´Ñ À½¼ö
ù°ª¿¡¼ ½ÃÀÛÇÑ´Ù. |
||||||
ÀζóÀκäÀÇ º°¸í |
ÇÊ¿äÇÒ ¶§¸¸ ºÙÀδÙ. AS´Â
¾µ ¼ö ¾ø´Ù. |
»ç¿ëÇÏÁö ¾Ê¾Æµµ ºÙ¿©¾ß ÇÑ´Ù. |
SQL Server¿Í °°À½ |
|||
ȣȯ¼º È®º¸¸¦ À§ÇØ ÀζóÀκ信 AS¾øÀÌ
À̸§¸¸À¸·Î º°¸íÀ» ºÙÀδÙ. SELECT * FROM (SELECT ...) A |
||||||
Å×À̺í Â÷ÁýÇÕ |
MINUS |
EXCEPT |
SQL Server¿Í °°À½ |
|||
UNION ÇÕÁýÇÕ, INTERSECT ±³ÁýÇÕÀº °°Áö¸¸ Â÷ÁýÇÕ¸¸ Å°¿öµå°¡
´Ù¸£´Ù. |
||||||
MERGE |
MERGE INTO t USING s ON
(Á¶°Ç) |
MERGE t USING s ON Á¶°Ç UPDATE FROM Áö¿ø |
¹ÌÁö¿ø |
|||
SQL Server´Â INTO¿Í ON ÀýÀÇ
°ýÈ£°¡ ¿É¼ÇÀÌ¸ç »ý·«ÇÒ ¼ö ÀÖ´Ù. MERGE¿Í À¯»çÇÑ UPDATE
FROM ±¸¹®µµ Áö¿øÇÑ´Ù. |
||||||
ROLLUP |
ROLLUP(f) |
¿À¶óŬ, MariaDB µÎ
¹æ½Ä ¸ðµÎ Áö¿ø |
f WITH ROLLUP |
|||
MariaDB´Â CUBE¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù. |
||||||
PIVOT |
PIVOT(... IN ('f1',
'f2', 'f3')) |
PIVOT(... IN (f1, f2,
f3)) pvt |
¹ÌÁö¿ø |
|||
INÀýÀÇ Çʵ忡 µû¿ÈÇ¥ »ç¿ë ¿©ºÎ¿Í ÇǺ¿ °á°ú Å×À̺íÀÇ º°¸í ÁöÁ¤ ¿©ºÎ°¡ ´Ù¸£´Ù. |
||||||
¹®ÀÚ¿ ¿¬°á |
|| |
+ |
CONCAT |
|||
¿À¶óŬÀº ¼ýÀÚ µ¡¼À°ú ¹®ÀÚ¿ ¿¬°á ¿¬»êÀÚ°¡ ±¸ºÐµÇ¾î ÀÖ¾î ŸÀÔ º¯È¯ÀÌ
ÀÚµ¿Àε¥ ºñÇØ SQL Server´Â + ¿¬»êÀÚ·Î ¸ðµÎ
¼öÇàÇÏ¿© ¾Ö¸ÅÇÑ °æ¿ì°¡ »ý±â¸ç ŸÀÔ º¯È¯À» ¼öµ¿À¸·Î ÁöÁ¤ÇØ¾ß ÇÑ´Ù. |
||||||
¹®ÀÚ¿ ±æÀÌ |
LENGTH |
LEN |
CHAR_LENGTH |
|||
¹®ÀÚÀÇ ¼öÀΰ¡ ¹ÙÀÌÆ® ¼öÀΰ¡¿¡ µû¶ó ÇÔ¼ö¸¦ Àß ±¸ºÐÇØ¾ß ÇÑ´Ù. |
||||||
ºÎºÐ ¹®ÀÚ¿ ÃßÃâ |
SUNSTRING |
SUBSTR |
µÑ ´Ù Áö¿ø |
|||
ÀμöÀÇ ±¸Á¶´Â À¯»çÇÏ´Ù. |
||||||
ºÎºÐ ¹®ÀÚ¿ °Ë»ö |
INSTR |
CHARINDEX |
POSITION |
|||
ÀμöÀÇ ±¸Á¶´Â À¯»çÇÏ´Ù. |
||||||
NULL ´ëü |
NVL |
ISNULL |
IFNULL |
|||
ÇÔ¼ö¸í¸¸ ´Ù¸£¸ç »ç¿ë¹ýÀº °°´Ù. |
||||||
¿À´Ã ³¯Â¥ |
SYSDATE |
GETDATE() |
NOW() |
|||
SYSDATE¿¡´Â °ýÈ£¸¦ ºÙÀÌÁö ¾Ê´Â´Ù. |
||||||
1.Å×À̺í
Çʵ尡 ¸ð¿© ÇϳªÀÇ ¿£ÅÍƼ¸¦ Ç¥ÇöÇÏ´Â ·¹Äڵ尡 µÇ¸ç ·¹ÄÚµåÀÇ ÁýÇÕÀÌ Å×À̺íÀÌ´Ù.
2.¨é
Ä÷³Àº ·¹Äڵ带 ±¸¼ºÇÏ´Â Á¤º¸ ÇϳªÀÌ´Ù. ·¹ÄÚµå´Â Çà ¶Ç´Â Æ©ÇÃÀ̶ó°íµµ
ºÎ¸¥´Ù.
3.¨è
¿ä±¸ »çÇ׸¸ Àü´ÞÇÏ¸ç ½ÇÇà °úÁ¤Àº DB ¿£ÁøÀÌ ÆÇ´ÜÇÏ¿© °áÁ¤ÇÑ´Ù.
4.VARCHAR
°íÁ¤ ±æÀÌ´Â CHAR ŸÀÔÀ» ¾²¸ç °¡º¯ ±æÀÌ´Â VARCHAR ŸÀÔÀ» ¾´´Ù.
1.SELECT name, depart, grade FROM tStaff;
ÇÊµå ¸ñ·Ï¿¡ name, depart, grade Çʵ带 ÄÞ¸¶·Î ±¸ºÐÇÏ¿©
³ª¿ÇÑ´Ù.
2.SELECT name AS "µµ½Ã", popu AS "Àα¸(¸¸¸í)", region AS "Áö¿ª" FROM
tCity;
¼¼ °³ÀÇ Çʵ带 ¸®½ºÆ®¿¡ ¾²°í AS ´ÙÀ½¿¡ º°¸íÀ» ºÙÀδÙ. AS´Â »ý·« °¡´ÉÇÏ¸ç µµ½Ã, Áö¿ªÀº Ư¼ö¹®ÀÚ³ª °ø¹éÀÌ ¾ø¾î µû¿ÈÇ¥¸¦
»ý·«Çصµ »ó°ü¾ø´Ù. ±×·¯³ª Àα¸´Â °ýÈ£°¡ ÀÖ¾î µû¿ÈÇ¥¸¦ »ý·«ÇÒ ¼ö ¾ø´Ù.
3.SELECT 60*60*24*365 FROM dual;
ÃÊ,ºÐ,½Ã,ÀÏÀ» ¸ðµÎ °öÇÑ ¼ö½ÄÀ» SELECT·Î Ãâ·ÂÇÑ´Ù. º°¸íÀº ²À ºÙÀÌÁö ¾Ê¾Æµµ »ó°ü¾øÀ¸¸ç SQL Server¿Í MariaDB´Â FROM dualµµ »ý·« °¡´ÉÇÏ´Ù.
4.SELECT name FROM tCity WHERE popu <
10;
Àα¸ ÇʵåÀÎ popu¸¦ 10°ú
ºñ±³ÇÏ´Â Á¶°Ç½ÄÀ» ÀÛ¼ºÇ쵂 ¹Ì¸¸À̶ó°í ÇßÀ¸¹Ç·Î < ¿¬»êÀÚ·Î ºñ±³ÇÑ´Ù. 10¸¸ ÀÌÇ϶ó¸é <=·Î ºñ±³ÇÑ´Ù. ÀÌ Á¶°Ç¿¡ ¸Â´Â µµ½ÃÀÇ À̸§¸¸ Ãâ·ÂÇ϶ó°í ÇßÀ¸¹Ç·Î ÇÊµå ¸ñ·Ï¿¡´Â name¸¸
ÁöÁ¤Çß´Ù. ȫõ¸¸ Ãâ·ÂµÈ´Ù.
5.SELECT * FROM tCity WHERE region = 'Àü¶ó';
Áö¿ª ÇʵåÀÎ regionÀÌ 'Àü¶ó'ÀÎ ÇàÀÇ ¸ðµç Çʵ带 Ãâ·ÂÇÑ´Ù. ¼øõ, ÀüÁÖ°¡ Ãâ·ÂµÈ´Ù.
6.SELECT name FROM tStaff WHERE salary
>= 400;
ÀÌ»óÀ̶ó°í ÇßÀ¸¹Ç·Î salary Çʵ带 >= ¿¬»êÀÚ·Î ºñ±³ÇÑ´Ù. ±èÀ¯½Å,
½Å»çÀÓ´ç, À庸°í ¼¼ ¸íÀÌ Ãâ·ÂµÈ´Ù.
7.SELECT name FROM tStaff WHERE salary <
300 AND score >= 60;
¿ù±ÞÀÌ 300¹Ì¸¸ÀÎ Á¶°Ç°ú ¼ºÃëµµ°¡ 60ÀÌ»óÀÎ Á¶°ÇÀ» AND·Î ¿¬°áÇÑ´Ù.
8.SELECT name FROM tStaff WHERE depart = '¿µ¾÷ºÎ' AND gender = '¿©';
depart°¡ ¿µ¾÷ºÎÀÌ°í gender°¡
¿©ÀÎ Á¶°ÇÀ» AND·Î ¿¬°áÇÑ´Ù.
9.SELECT name FROM tStaff WHERE name LIKE 'Á¤%';
À̸§ÀÇ Ã¹ ±ÛÀÚ°¡ 'Á¤'ÀÎÁö
Á¡°ËÇÑ´Ù.
10.SELECT name FROM tStaff WHERE name LIKE
'%½Å%';
À̸§¿¡ ½ÅÀÌ Æ÷ÇÔµÈ ¸ðµç °æ¿ì¸¦ °Ë»öÇÏ¸ç ¾ÕµÚ·Î ÀÓÀÇÀÇ ¹®ÀÚ°¡ ¿Íµµ »ó°ü¾ø´Ù.
11.SELECT * FROM tCity WHERE area BETWEEN
500 AND 1000;
¶Ç´Â WHERE area >= 500 AND area <= 1000
Á¶°ÇÀ¸·Îµµ °Ë»öÇÒ ¼ö ÀÖ´Ù.
12.SELECT * FROM tStaff WHERE salary
BETWEEN 200 AND 299;
200¸¸¿ø´ë¶ó¸é 300¸¸¿øÀº
Á¦¿ÜµÇ¾î¾ß ÇϹǷΠBETWEENÀ¸·Î °Ë»öÇÒ ¶§´Â 299±îÁö¸¸
Æ÷ÇÔÇÑ´Ù. ÀÌ·¸°Ô ÇÏ¸é ¿ù±ÞÀÌ 299¸¸ 5õ¿øÀÎ Á÷¿øÀÌ Á¦¿ÜµÇ´Â ¹®Á¦°¡ ÀÖÁö¸¸ salary ÇʵåÀÇ ´ÜÀ§°¡ ¸¸¿øÀ̾î¼
¾ÈÀüÇÏ´Ù. 300¹Ì¸¸ÀÎ Á¶°ÇÀº ºÎµîÈ£¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ´õ Á¤È®ÇÏ´Ù.
SELECT * FROM tStaff WHERE salary >= 200
AND salary < 300;
13.SELECT * FROM tStaff WHERE depart IN ('Ãѹ«ºÎ', '¿µ¾÷ºÎ');
IN ¸ñ·Ï¿¡ Ãѹ«ºÎ¿Í ¿µ¾÷ºÎ¸¦ Æ÷ÇÔÇÑ´Ù. ¶Ç´Â µÎ Á¶°ÇÀ» °¢°¢ ºñ±³ÇÏ¿© OR·Î ¿¬°áÇÑ´Ù.
SELECT * FROM tStaff WHERE depart ='Ãѹ«ºÎ' OR depart = '¿µ¾÷ºÎ';
14.SELECT * FROM tStaff WHERE depart IN ('Àλç°ú', '¿µ¾÷ºÎ') AND grade = '´ë¸®';
IN ¸ñ·Ï¿¡ Àλç°ú¿Í ¿µ¾÷ºÎ¸¦ Æ÷ÇÔÇÏ°í grade°¡ ´ë¸®ÀÎ Á¶°ÇÀ» Çϳª ´õ AND·Î ¿¬°áÇÑ´Ù. ¼¼ Á¶°ÇÀ» °¢°¢ ¿¬°áÇÒ ¶§´Â ORÀÌ ¸ÕÀú 󸮵ǵµ·Ï °ýÈ£¸¦ °¨½Î¾ß
ÇÑ´Ù. °ýÈ£°¡ ¾øÀ¸¸é ANDÀÇ ¿ì¼±¼øÀ§°¡ ´õ ³ô´Ù.
SELECT * FROM tStaff WHERE (depart ='Àλç°ú' OR depart = '¿µ¾÷ºÎ') AND grade = '´ë¸®';
15.SELECT * FROM tStaff WHERE grade IN('Â÷Àå', 'ºÎÀå', 'ÀÌ»ç') AND
gender = '¿©';
Â÷Àå±Þ ÀÌ»óÀÎ Â÷Àå, ºÎÀå, À̻縦
IN ¸ñ·Ï¿¡ Æ÷ÇÔÇÏ°í gender°¡ ¿©ÀÎ Á¶°ÇÀ» AND·Î ¿¬°áÇÑ´Ù. Á÷±ÞÀº ¼öÄ¡°ªÀÌ ¾Æ´Ï¾î¼ ºÎµî ºñ±³ÇÒ ¼ö ¾øÀ¸¸ç
´õ ³ôÀº Á÷±ÞÀÇ ÁýÇÕÀ» ¸¸µç ÈÄ IN ¿¬»êÀÚ·Î ºñ±³ÇØ¾ß ÇÑ´Ù.
16.SELECT * FROM tStaff ORDER BY salary,
score DESC;
1Â÷ Á¤·Ä ±âÁØÀ» salary ¿À¸§Â÷¼øÀ¸·Î
ÁöÁ¤ÇÏ°í 2Â÷ Á¤·Ä ±âÁØÀº ¼ºÃëµµ¿¡ ´ëÇØ ³»¸²Â÷¼øÀ¸·Î ÁöÁ¤ÇÑ´Ù.
17.SELECT * FROM tStaff WHERE depart = '¿µ¾÷ºÎ' ORDER BY joindate;
WHERE ÀýÀ» ¸ÕÀú ¾²°í ORDER
BY¸¦ µÚ¿¡ ÀûÀ½À» À¯ÀÇÇÏÀÚ.
18.SELECT DISTINCT depart FROM tStaff WHERE
joindate > '20200101';
DISTINCT Å°¿öµå¸¦ »©¸é Ãѹ«ºÎ 2¸í, Àλç°ú 1¸íÀÇ ½ÅÀÔ
»ç¿øÀÌ ÀÖ¾úÀ½À» ¾Ë ¼ö ÀÖ´Ù. ¿©±â¼ ¾Ë°í ½ÍÀº °ÍÀº Àοø¼ö°¡ ¾Æ´Ï¶ó ¹ÞÀº ÀûÀÌ ÀÖ´Â ºÎ¼ ¸ñ·ÏÀ̹ǷÎ
DISTINCT Å°¿öµå°¡ ÇÊ¿äÇÏ´Ù.
19.SELECT * FROM tStaff ORDER BY salary
DESC OFFSET 11 ROWS FETCH NEXT 4 ROWS ONLY;
12À§ºÎÅÍ Ãâ·ÂÇÏ·Á¸é ¾ÕÂÊ 11¸íÀ»
°Ç³Ê ¶Ù¾î¾ß Çϸç 16À§±îÁö 4¸íÀ» Ãâ·ÂÇÏ¸é µÈ´Ù.
1.SELECT name FROM tStaff WHERE score IS
NULL;
½ÇÀûÀÌ ¾ø´Ù´Â Á¶°ÇÀº score Çʵ尡 NULLÀÎÁö Á¡°ËÇϸç À̶§ IS NULL ¿¬»êÀÚ¸¦ »ç¿ëÇÑ´Ù. Á÷¿ø ¸ñ·ÏÀ» Ãâ·ÂÇϱâ À§ÇØ COUNT(*) ÇÔ¼ö·Î °³¼ö¸¦ ¼¼´Â ´ë½Å
name Çʵ带 Á¶»çÇÑ´Ù.
2.SELECT COUNT(*) FROM tStaff WHERE score
>= 80;
·¹ÄÚµå °³¼ö¸¸ ¼¼¸é µÇ¹Ç·Î COUNT(*)¸¦ ¾²¸é µÈ´Ù. ±»ÀÌ COUNT(name)À̳ª COUNT(score)
½ÄÀ¸·Î Çʵ带 ÁöÁ¤ÇÒ ÇÊ¿ä´Â ¾ø´Ù.
3.SELECT MAX(salary) FROM tStaff WHERE
gender = '¿©';
WHERE Àý¿¡¼ ¿©Á÷¿ø¸¸À¸·Î Á¦ÇÑÇÏ°í MAX(salary)¸¦ Á¶»çÇÑ´Ù.
4.SELECT MIN(joindate) FROM tStaff WHERE
depart = 'Ãѹ«ºÎ';
ÃÖÃÊ ÀÔ»çÀÏÀº joindate°¡ °¡Àå ÀÛÀº °ªÀ» ãÀ¸¸é µÈ´Ù. ³¯Â¥³ª ¹®ÀÚ¿¿¡ ´ëÇؼµµ MIN, MAX Áý°è ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö
ÀÖ´Ù.
5.SELECT region, SUM(popu) FROM tCity GROUP
BY region;
regionÀ» ±âÁØ Çʵå·Î ÇÏ¿© ±×·ìÇÎÇÏ°í SUM(popu)¸¦ Áý°èÇÑ´Ù.
6.SELECT region, MAX(area) FROM tCity WHERE
popu > 50 GROUP BY region;
Àα¸ 50¸¸ ÀÌ»óÀº °¡Àå ³ÐÀº ¸éÀûÀ» ±¸Çϱâ ÀüÀÇ Á¶°ÇÀ̹ǷΠWHERE Àý·Î ÁöÁ¤ÇÑ´Ù. °¿øµµ´Â
50¸¸ÀÌ ³Ñ´Â µµ½Ã°¡ ¾ø¾î ¾Æ¿¹ ³ªÅ¸³ªÁö ¾ÊÀ¸¸ç Àü¶óµµ´Â ¼øõÀÌ °¡Àå ³ÐÁö¸¸ Àα¸°¡ 27¸¸À̾î¼
Á¦¿ÜµÇ°í Àα¸ 65¸¸ÀÇ ÀüÁÖ ¸éÀûÀÎ 205¸¸ÀÌ Á¶»çµÈ´Ù.
7.SELECT region, AVG(area) FROM tCity GROUP
BY region HAVING AVG(area) >= 1000;
Áö¿ªÀ» ±âÁØÀ¸·Î ±×·ìÇÎÇÏ°í HAVING Àý·Î Æò±Õ ¸éÀûÀ» Á¦ÇÑÇÑ´Ù. Áö¿ªº° Æò±Õ ¸éÀûÀ» ±¸ÇÑ ÈÄ¿¡ Ãâ·ÂÇÒ Á¶°ÇÀ» ÁöÁ¤ÇϹǷΠHAVING Àý·Î
ÀÛ¼ºÇÑ´Ù. °¿øµµ¸¸ Ãâ·ÂµÈ´Ù.
1.INSERT INTO tCity VALUES ('¿ëÀÎ',293,98,'n','°æ±â');
µµ½Ã¸í, ¸éÀû, Àα¸, ±¤¿ª½Ã ¿©ºÎ, Áö¿ª Çʵ尪À» ¼ø¼´ë·Î ³ª¿ÇÑ´Ù. »ðÀÔÀ» È®Á¤ÇÏ·Á¸é COMMIT ¸í·Éµµ È£ÃâÇØ¾ß ÇÑ´Ù.
2.INSERT INTO tStaff VALUES ('±è»óÇü','Ãѹ«ºÎ','³²','2021-8-1','»ç¿ø',480,10.0);
±âÁ¸ Á÷¿ø°ú À̸§¸¸ Áߺ¹µÇÁö ¾ÊÀ¸¸é ÀÓÀÇÀÇ Á¤º¸¸¦ »ðÀÔÇÒ ¼ö ÀÖ´Ù.
3.¿À¶óŬÀº È®Àå INSERT ¸í·ÉÀ»
Áö¿øÇÏÁö ¾Ê¾Æ µµ½Ãº°·Î INSERT INTO ¸í·ÉÀ» ÀÏÀÏÀÌ ÀÛ¼ºÇØ¾ß ÇÑ´Ù. ÇÊµå ¸ñ·ÏÀº ¼±¾ð ¼ø¼¿Í °°¾Æ »ý·«Çصµ »ó°ü¾ø´Ù.
INSERT INTO tCity VALUES ('ÀÌõ',461,21,'n','°æ±â');
INSERT INTO tCity VALUES ('´ë±¸',883,248,'y','°æ»ó');
INSERT INTO tCity VALUES ('¿µ¿ù',1127,4,'n','°¿ø');
SQL Server¿Í MariaDB´Â
È®Àå INSERT ¹®À¸·Î ¼¼ µµ½Ã¸¦ ÇѲ¨¹ø¿¡ ÀÔ·ÂÇÒ ¼ö ÀÖ´Ù.
INSERT INTO tCity VALUES
('ÀÌõ',461,21,'n','°æ±â'),
('´ë±¸',883,248,'y','°æ»ó'),
('¿µ¿ù',1127,4,'n','°¿ø');
4.¿À¶óŬ, MariaDB´Â
´ÙÀ½ Äõ¸®¹®À» ÀÛ¼ºÇÑ´Ù. score°¡ 80 ÀÌ»óÀÎ Á÷¿øÀÇ
À̸§°ú ¿ù±ÞÀ» Á¶È¸ÇÏ¿© tStaff_excellent Å×À̺íÀ» »õ·Î »ý¼ºÇÑ´Ù.
CREATE TABLE tStaff_excellent AS SELECT
name, salary FROM tStaff WHERE score >= 80;
SQL Server´Â ÀÌ ¸í·É ´ë½Å SELECT INTO ±¸¹®À¸·Î ÀÛ¼ºÇÑ´Ù.
SELECT name, salary INTO tStaff_excellent
FROM tStaff WHERE score >= 80;
¸í·É ½ÇÇà ÈÄ tStaff_excellent Å×À̺íÀ» Á¶È¸Çϸé 4¸íÀÇ Á÷¿ø ¸ñ·ÏÀÌ ³ªÅ¸³´Ù.
5.DELETE FROM tStaff WHERE depart = '¿µ¾÷ºÎ';
7¸íÀÇ Á÷¿øÀÌ ÇѲ¨¹ø¿¡ »ç¶óÁø´Ù.
COMMIT;À» ½ÇÇàÇϸé ÇØ°í¸¦ È®Á¤ÇÑ´Ù.
6.UPDATE tStaff SET grade = '´ë¸®' WHERE grade = '»ç¿ø' and gender = '¿©';
¿©ÀÚÀÌ¸é¼ »ç¿øÀÎ Á÷¿øÀ» ã¾Æ¾ß ÇϹǷΠµÎ °³ÀÇ Á¶°ÇÀ» AND·Î ¿¬°áÇÑ´Ù. 3¸íÀÇ ¿©»ç¿øÀÌ ´ë¸®°¡ µÈ´Ù.
7.UPDATE tStaff SET salary = salary * 1.1
WHERE depart = '¿µ¾÷ºÎ';
salary Çʵ带 110%·Î
°»½ÅÇÏ¸é µÈ´Ù. SET salary = salary + salary * 0.1·Î °è»êÇصµ ¸¶Âù°¡ÁöÀÌ´Ù.
1.±âÁ¸ tStaff »ý¼º
Äõ¸®¹®ÀÇ °¢ Çʵ忡 DEFAULT Å°¿öµå¿Í ±âº»°ªÀ» ÁöÁ¤ÇÑ´Ù.
CREATE TABLE tStaffDefault
(
name
CHAR (15) PRIMARY KEY,
depart
CHAR (10) DEFAULT('¿µ¾÷ºÎ') NOT NULL,
gender
CHAR(3) NOT NULL,
joindate
DATE NOT NULL,
grade
CHAR(10) DEFAULT('¼ö½À') NOT NULL,
salary
INT DEFAULT(280) NOT NULL,
score
DECIMAL(5,2) DEFAULT(1.0) NULL
);
ÀÌ Å×ÀÌºí¿¡ ·¹Äڵ带 »ðÀÔÇÒ ¶§´Â ±âº»°ªÀÌ ¾ø´Â À̸§, ¼ºº°, ÀÔ»çÀÏ Çʵ常 ÀÔ·ÂÇÏ¸é µÈ´Ù.
INSERT INTO tStaffDefault (name, gender,
joindate) VALUES ('ÀÌÀ²°î','³²','2021-5-5');
³ª¸ÓÁö Çʵå´Â ±âº»°ªÀÌ Àû¿ëµÈ´Ù.
2.depart, gender, salary¿¡ CHECK Á¶°ÇÀ» ¼³Á¤ÇÑ´Ù.
CREATE TABLE tStaffCheck
(
name
CHAR (15) PRIMARY KEY,
depart
CHAR (10) NOT NULL CHECK(depart IN ('¿µ¾÷ºÎ','Ãѹ«ºÎ','Àλç°ú')),
gender
CHAR(3) NOT NULL CHECK(gender = '³²' OR gender = '¿©'),
joindate
DATE NOT NULL,
grade
CHAR(10) NOT NULL,
salary
INT NOT NULL CHECK(salary > 0),
score
DECIMAL(5,2) NULL
);
üũ Á¶°ÇÀ» À§¹ÝÇÏ´Â ·¹ÄÚµå´Â »ðÀÔÇÒ ¼ö ¾ø´Ù.
3.Å×À̺í Á¦¾àÀ¸·Î ¼¼ Çʵ带 ¹¾î º¹ÇÕÅ°·Î ÁöÁ¤ÇÑ´Ù.
CREATE TABLE tStaffCompoKey
(
name
CHAR (15) NOT NULL,
depart
CHAR (10) NOT NULL,
gender
CHAR(3) NOT NULL,
joindate
DATE NOT NULL,
grade
CHAR(10) NOT NULL,
salary
INT NOT NULL,
score
DECIMAL(5,2) NULL,
CONSTRAINT
PK_tStaff PRIMARY KEY (name, depart, gender)
);
À̸§ÀÌ °°Àº µÎ ¸íÀÇ »ç¿øÀÌ ´Ù¸¥ ºÎ¼¿¡ ÀÔ»çÇÒ ¼ö ÀÖ´Ù.
INSERT INTO tStaffCompoKey VALUES ('±èö¼ö','Ãѹ«ºÎ','³²','2021-1-1','»ç¿ø',280,10);
INSERT INTO tStaffCompoKey VALUES ('±èö¼ö','¿µ¾÷ºÎ','³²','2021-2-1','»ç¿ø',290,20);
À̸§°ú ºÎ¼°¡ °°¾Æµµ ¼ºº°ÀÌ ´Ù¸£¸é Áߺ¹ °¡´ÉÇÏ´Ù.
1.°ÅÁÖÁö´Â ȸ¿ø¿¡ ´ëÇØ Á¾¼ÓÀûÀ̹ǷΠº°µµ Å×À̺í·Î ºÐ¸®ÇØ¾ß ÇÏÁö¸¸
¹è¼ÛÁö´Â ȸ¿ø»Ó¸¸ ¾Æ´Ï¶ó ÁÖ¹®¹øÈ£¿¡µµ Á¾¼ÓÀûÀ̹ǷΠÁÖ¹® Å×ÀÌºí¿¡ ³²°Ü µÎ¾î¾ß ÇÑ´Ù. º¸¶óµ¹ÀÌ°¡ ³ëÆ®ºÏÀ»
¼¿ï »ç´Â Ä£±¸¿¡°Ô ¼±¹°ÇÑ´Ù¸é ¹è¼ÛÁö´Â ÃáõÀÌ ¾Æ´Ñ ¼¿ïÀÏ ¼öµµ ÀÖ´Ù.
1. SELECT name FROM tStaff WHERE score =
(SELECT MAX(score) FROM tStaff);
MAX Áý°è ÇÔ¼ö·Î ¼ºÃëµµÀÇ ÃÖ°íÁ¡À» ã°í ÀÌ Á¡¼ö·ÎºÎÅÍ Á÷¿ø À̸§À»
Á¶»çÇÑ´Ù. µÎ °³ÀÇ Äõ¸®¹®À» ÀÛ¼ºÇÑ ÈÄ Çϳª·Î ÇÕÄ¡±â¸¸ ÇÏ¸é µÈ´Ù. ½Å»çÀÓ´çÀ»
Ãâ·ÂÇÑ´Ù.
2.SELECT name FROM tStaff WHERE salary
>= (SELECT AVG(salary) FROM tStaff);
°°Àº ¹æ½ÄÀÌ´Ù. Æò±Õ ¿ù±ÞÀ» ±¸ÇÏ´Â Äõ¸®¸¦ ¸ÕÀú ÀÛ¼ºÇÏ°í ÀÌ Æò±Õ°ªº¸´Ù
¿ù±ÞÀÌ ´õ Å©°Å³ª °°Àº Á÷¿ø ¸ñ·ÏÀ» Ãâ·ÂÇÏ¸é µÈ´Ù.
3.SELECT name, salary FROM tEmployee WHERE
name =
(SELECT employee FROM tProject WHERE
project = '³ëÁ¶ Çù»ó°Ç');
tProject¿¡¼ ³ëÁ¶ Çù»ó°ÇÀ» ¸ÃÀº Á÷¿øÀÇ À̸§À» ¸ÕÀú ±¸ÇÏ°í
ÀÌ À̸§À¸·ÎºÎÅÍ tEmployee Å×À̺íÀ» °Ë»öÇÏ¿© ¿ù±ÞÀ» Á¶»çÇÑ´Ù.
4.SELECT member, addr FROM tMember WHERE
age = (SELECT MAX(age) FROM tMember);
³ªÀÌÀÇ ÃÖ´ë°ªÀ» ã°í ÀÌ ³ªÀÌ¿Í °°Àº »ç¶÷À» ã´Â´Ù. ¹æÀÚ·Î Á¶»çµÇ´Âµ¥
¿©·¯ ¸í À־ »ó°ü¾ø´Ù.
5.SELECT member, money FROM tMember WHERE
member =
(SELECT member FROM tOrder WHERE item = '´ëÃß');
tOrder¿¡¼ ´ëÃ߸¦ ±¸ÀÔÇÑ È¸¿øÀ» Á¶»çÇÏ°í tMember¿¡¼ ÇØ´ç ȸ¿øÀÇ À̸§°ú ¿¹Ä¡±ÝÀ» Á¶»çÇÑ´Ù.
6.SELECT price FROM tItem WHERE item =
(SELECT item FROM tOrder WHERE member = 'ÃáÇâ');
ÃáÇâÀÌ°¡ ±¸ÀÔÇÑ »óÇ°ÀÇ À̸§Àº tOrder¿¡¼ Á¶»çÇÏ°í ÀÌ »óÇ°ÀÇ
°¡°ÝÀº tItem¿¡¼ Á¶»çÇÑ´Ù.
7.SELECT item, (SELECT delivery FROM
tCategory WHERE category = I.category) AS delivery FROM tItem I;
»óÇ°¸íÀº tItem Å×ÀÌºí¿¡ ÀÖ°í ¹è¼Ûºñ Á¤º¸´Â À¯Çü Å×ÀÌºí¿¡ ÀÖ´Ù. tItemÀ» ÀÐÀ¸¸ç ¼ºêÄõ¸®·Î »óÇ°ÀÇ À¯ÇüÀ» Àü´ÞÇÏ¿© ¹è¼Ûºñ¸¦ Á¶»çÇÏ¸é µÈ´Ù.
8.SELECT item FROM (SELECT * FROM tOrder
WHERE status = 1) A WHERE A.num >= 10;
ÁÖ¹®¹ÞÀº ¸ñ·ÏÀ» ¸ÕÀú ±¸ÇÏ°í ±× Áß¿¡ ¼ö·®ÀÌ 10°³ ÀÌ»óÀÎ °ÍÀ» °í¸£¸é
µÈ´Ù. 10°³ ÀÌ»óÀÎ »óÇ°Àº ´ëÃß¹Û¿¡ ¾ø´Ù.
9.
MERGE INTO tStaff T USING tStaff2 S ON (S.name =
T.name)
WHEN MATCHED THEN
UPDATE
SET T.depart = S.depart, T.salary = S.salary, T.score = S.score
WHEN NOT MATCHED THEN
INSERT
VALUES (S.name, S.depart, S.gender, S.joindate, S.grade, S.salary, S.score);
¾ÈâȣÀÇ ¿ù±Þ°ú ¼º»ï¹®ÀÇ ¼Ò¼ÓÀÌ ¹Ù²î¸ç ¾î¿ìµ¿ÀÌ »õ·Î Ãß°¡µÇ¾î tStaffÀº
ÃÑ 21¸íÀÇ Á÷¿øÀ¸·Î ´Ã¾î³´Ù.
10.MERGE INTO tStaff T USING (SELECT * FROM
tStaff2 WHERE grade = '´ë¸®') S ON (S.name = T.name)
....
¼ºêÄõ¸®·Î tStaff2ÀÇ ´ë¸®±Þ »ç¿ø¸¸ ÀÐ¾î º´ÇÕÇÑ´Ù. ON Àý¿¡ Á¶°ÇÀ» ÀÛ¼ºÇÏ´Â °ÍÀÌ ¾Æ´ÔÀ» À¯ÀÇÇÏÀÚ.
1. SELECT name, salary, project FROM
tEmployee, tProject WHERE tEmployee.name = tProject.employee;
FROM Àý¿¡ µÎ Å×À̺íÀ» ÄÞ¸¶·Î ±¸ºÐÇÏ¿© Àû°í WHERE Àý¿¡¼ ¿Ü·¡Å°ÀÎ Á÷¿ø¸íÀÌ °°´Ù´Â Á¶°ÇÀ» ¼³Á¤Çϸç ÇÊµå ¸ñ·Ï¿¡¼ À̸§,
¿ù±Þ°ú ÇÁ·ÎÁ§Æ®¸íÀ» Ãâ·ÂÇÑ´Ù.
2.SELECT name, salary, project FROM
tEmployee INNER JOIN tProject ON tEmployee.name = tProject.employee;
ÄÞ¸¶¸¦ INNER JOINÀ¸·Î º¯°æÇÏ°í WHERE ÀýÀ» ON Àý·Î º¯°æÇÏ¸é µÈ´Ù. Ãâ·Â °á°ú´Â °°´Ù.
3.¼¼ ¸í·É ¸ðµÎ ¿ÏÀüÈ÷ °°Àº °á°ú¼ÂÀ» Ãâ·ÂÇÑ´Ù. µÎ Å×À̺íÀº ¿Ü·¡Å° Á¦¾à¿¡ ÀÇÇØ ¹«°á¼ºÀ» ¿Ïº®ÇÏ°Ô ÁöÅ°±â ¶§¹®¿¡ Á¤º¸°¡ ¾ø´Â °æ¿ì°¡ ¾ø´Ù. µû¶ó¼ ¾î¶² ¹æ½ÄÀ¸·Î Á¶ÀÎÇϳª °á°ú´Â °°´Ù.
4.SELECT P.project, P.cost, E.name project
FROM (SELECT * FROM tProject WHERE cost < 500) P
INNER JOIN tEmployee E ON E.name =
P.employee;
tProject Å×ÀÌºí¿¡ ºñ¿ë 500¸¸¿ø
¹Ì¸¸ Á¶°ÇÀ» ÁöÁ¤ÇÑ ÈÄ Á÷¿ø Å×À̺í°ú Á¶ÀÎÇÑ´Ù.
5.SELECT I.*, C.discount, C.delivery FROM
tItem I
INNER JOIN tCategory C ON I.category =
C.category;
»óÇ° Á¤º¸´Â tItem Å×ÀÌºí¿¡ ÀÖÁö¸¸ ÇÒÀÎÀ²°ú ¹è¼Ûºñ´Â tCategory¿¡ ÀÖ´Ù. µÎ Å×À̺íÀ» Á¶ÀÎÇÏ¿© tItemÀÇ ¸ðµç Çʵå¿Í tCategoryÀÇ discount, delivery Çʵ带 °°ÀÌ Ãâ·ÂÇÑ´Ù.
6.SELECT * FROM tOrder O INNER JOIN tItem I
ON O.item = I.item WHERE I.category ='½ÄÇ°';
tOrder¿¡´Â ÁÖ¹® ¹ÞÀº Á¦Ç°¸í¸¸ ÀÖÀ» »Ó ±× Á¦Ç°ÀÇ À¯Çü Á¤º¸´Â
¾ø´Ù. ÀÌ Á¤º¸¸¦ Á¶»çÇϱâ À§ÇØ tCategory¿Í Á¶ÀÎÇÏ°í
WHERE Á¶°ÇÀý¿¡¼ ½ÄÇ° À¯Çü¸¸ Ãâ·ÂÇÑ´Ù.
1.SELECT name, area, ROUND(SQRT(area), 2)
FROM tCity;
¸éÀûÀÇ Á¦°ö±ÙÀ» ±¸ÇÏ´Â ¹®Á¦À̸ç SQRT ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. ´Ü, ¿À¶óŬÀÇ °æ¿ì ¼Ò¼öÁ¡ ÀÌÇÏ°¡ ³Ê¹« ±æ°Ô Ç¥½ÃµÇ¹Ç·Î Àû´çÇÑ ÀÚ¸®¿¡¼
¹Ý¿Ã¸² ó¸®ÇÏ´Â °ÍÀÌ º¸±â ÁÁ´Ù.
2.SELECT name, area, popu, ROUND(popu *
10000 / area, 1) AS "Àα¸¹Ðµµ" FROM tCity;
Àα¸¸¦ ¸éÀûÀ¸·Î ³ª´©´Â ¼ö½ÄÀ» ROUND ÇÔ¼ö·Î °¨½Î°í µÎ ¹ø° Àμö¸¦
1·Î ÁöÁ¤ÇÑ´Ù. ¼Ò¼öÁ¡ ÀÌÇÏ 2¹ø° ÀÚ¸®¿¡¼ ¹Ý¿Ã¸²ÇÑ´Ù.
3.DBMS¸¶´Ù ±ÛÀÚ¼ö¸¦ ¼¼´Â ÇÔ¼ö¸íÀÌ ´Þ¶ó °¢°¢ µû·Î ÀÛ¼ºÇØ¾ß ÇÑ´Ù. ÇÔ¼ö À̸§¸¸ ´Ù¸¦ »Ó »ç¿ëÇÏ´Â ¹æ¹ýÀº ºñ½ÁÇÏ´Ù.
¿À¶óŬ : SELECT * FROM tStaff WHERE
LENGTH(TRIM(name)) = 4;
SQL Server : SELECT * FROM tStaff WHERE
LEN(name) = 4;
MariaDB : SELECT * FROM tStaff WHERE
CHAR_LENGTH(name) = 4;
¿À¶óŬÀº CHAR ŸÀÔÀÇ °ø¹éµµ ±ÛÀÚ¼ö·Î ¼¼±â ¶§¹®¿¡ TRIM ÇÔ¼ö·Î ºÒÇÊ¿äÇÑ °ø¹éÀ» Á¦°ÅÇÑ ÈÄ ºñ±³ÇØ¾ß ÇÑ´Ù. tStaffÀÇ
name Çʵ尡 CHAR ŸÀÔÀÌ¾î¼ µÚÂÊ¿¡ °ø¹éÀÌ Àִµ¥
VARCHAR ŸÀÔÀ̶ó¸é TRIM ÇÔ¼ö°¡ ¾ø¾îµµ »ó°ü¾ø´Ù.
4.SELECT SUBSTR('950314-1919234', 5, 2)
FROM dual;
Áֹεî·Ï¹øÈ£ÀÇ ±¸Á¶¸¦ ¾Ë°í ÀÖÀ¸´Ï 5° ÀÚ¸®ºÎÅÍ 2 ±ÛÀÚ¸¦ ÃßÃâÇÏ¸é µÈ´Ù.
5.SELECT name, CONCAT(SUBSTR(name, 1, 1),
grade) FROM tStaff;
À̸§ÀÇ Ã¹ ±ÛÀÚ¸¦ ÃßÃâÇÏ°í µÚ¿¡ Á÷±ÞÀ» ºÙÀδÙ. ¿À¶óŬÀº || ¿¬»êÀÚ, SQL Server´Â +
¿¬»êÀÚ¸¦ »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ ȣȯ¼º È®º¸¸¦ À§ÇØ CONCAT ÇÔ¼ö¸¦ »ç¿ëÇÏ¿´´Ù.
6.ù ¼¼ ±ÛÀÚ¸¸ ÃßÃâÇÏ°í ,¸¦
-·Î ¹Ù²Û ÈÄ ¾Õ¿¡ 'i'¸¦, µÚ¿¡ 'ÀÎÄ¡'¸¦ ¿¬°áÇÑ´Ù. ÇÊ¿äÇÑ Á¤º¸°¡ µé¾î Àֱ⸸ ÇÏ´Ù¸é ¹®ÀÚ¿À» ÁÖ¹°·°°Å·Á ¿øÇÏ´Â ÇüÅ·Π¸¸µé ¼ö ÀÖ´Ù.
¿À¶óŬ : SELECT 'i' ||
REPLACE(SUBSTR('5,13inch,16RAM,256SSD',1, 4), ',', '-') || 'ÀÎÄ¡' FROM dual;
SQL Server : SELECT 'i' +
REPLACE(LEFT('5,13inch,16RAM,256SSD',4), ',', '-') + 'ÀÎÄ¡';
7.SELECT name, DECODE(metro, 'y', '±¤¿ª½Ã', 'n', 'Áö¹æµµ½Ã') FROM tCity;
metro Çʵ尡 'y'À̸é
±¤¿ª½Ã¸¦ ¸®ÅÏÇÏ°í 'n'À̸é Áö¹æµµ½Ã¸¦ ¸®ÅÏÇÑ´Ù. y, n µÎ
°¡Áö °æ¿ì¸¸ ÀÖ°í ±× ¿ÜÀÇ °æ¿ì´Â ¾øÀ¸¹Ç·Î ¸¶Áö¸· Àμö´Â ±»ÀÌ ÀûÀ» ÇÊ¿ä ¾ø´Ù. SQL Server´Â
CASE¸¦ ´ë½Å »ç¿ëÇÑ´Ù.
8.SELECT Y, count(*) FROM (SELECT
TO_CHAR(joindate, 'yyyy') Y FROM tStaff) GROUP BY Y ORDER BY Y;
¼ºêÄõ¸®¿¡¼ ³âµµ¸¸ ÃßÃâÇÑ Çʵå Y¸¦ Á¤ÀÇÇÏ°í Y¿¡ ´ëÇØ ±×·ìÇÎ, Á¤·ÄÀ» ¼öÇàÇϸé Äõ¸®¹® ±æÀÌ°¡ ÁÙ¾îµé°í ¼Óµµµµ ´õ
»¡¶óÁø´Ù.
9.SELECT * FROM tOrder WHERE SYSDATE -
orderdate <= 7;
¿À´Ã ³¯Â¥¿Í ÁÖ¹® ³¯Â¥°¡ 7º¸´Ù À۰ųª °°À¸¸é ¹ÝÇ° °¡´ÉÇÑ ÁÖ¹®ÀÌ´Ù.
1.CREATE VIEW vItemPrice AS SELECT item,
price FROM tItem;
2.CREATE VIEW vDelivering AS SELECT * FROM
tOrder WHERE status = 2;
3.CREATE VIEW vStaffBonus (name, bonus) AS
SELECT name, salary * score / 100 FROM tStaff;
¿øº»ÀÇ AS bonus¸¦ »©°í ºä À̸§ ´ÙÀ½¿¡ (name, bonus)·Î ºäÀÇ Çʵå¸íÀ» ÁöÁ¤ÇÑ´Ù.
4.´ÙÀ½ ¸í·ÉÀ» ¼ø¼´ë·Î ½ÇÇàÇÑ´Ù.
Àӽà Å×ÀÌºí¿¡ »çº»À» º¹»çÇÏ´Â Äڵ常 DBMS ¸¶´Ù ´Ù¸£°í ³ª¸ÓÁö °úÁ¤Àº °°´Ù.
¿À¶óŬ : CREATE GLOBAL TEMPORARY TABLE tCityTemp AS
SELECT * FROM tCity;
INSERT
INTO tCityTemp SELECT * FROM tCity WHERE region = 'Àü¶ó';
SQL Server : SELECT * INTO #tTemp FROM tCity WHERE
region = 'Àü¶ó';
MariaDB : CREATE TEMPORARY TABLE tCityTemp AS
SELECT * FROM tCity WHERE region =
'Àü¶ó';
INSERT INTO tCityTemp SELECT * FROM tCity WHERE
area > 500;
DELETE FROM tCityTemp WHERE popu < 50;
UPDATE tCityTemp SET area = area * 30;
Áß°£ °úÁ¤¿¡¼ ¼øõÀº µÎ Á¶°Ç¿¡ ¸ðµÎ ¸Â¾Æ µÎ ¹ø »ðÀԵǴµ¥ Àӽà Å×À̺íÀº Á¦¾àÀÌ ¾ø¾î PK Ãæµ¹ °ÆÁ¤¾øÀÌ Áߺ¹ »ðÀÔÇÒ ¼ö ÀÖ´Ù. 1Á¦°ö ų·Î¹ÌÅÍ´Â 302500ÆòÀÌ¾î¼ ´ë·« 30À» °öÇÏ¸é µÈ´Ù.
1.SELECT region, AVG(popu) FROM tCity GROUP
BY ROLLUP(region);
regionÀ¸·Î ±×·ìÇÎÇ쵂 ROLLUPÀ¸·Î
°¨½Î¸é Àüü Áö¿ªÀÇ Æò±Õµµ °°ÀÌ °è»êÇÑ´Ù.
2.SELECT year, month, SUM(sales) FROM
tMonthSale GROUP BY year, ROLLUP(month);
³âµµº°, ¿ùº°·Î ±×·ìÇÎÇÏ°í month
Çʵ忡 ´ëÇؼ¸¸ ¼Ò°è¸¦ °è»êÇÏ¸é °¢ ¿¬µµÀÇ ¸ðµç ¿ù¸ÅÃ⠼Ұ踦 ±¸ÇÑ´Ù. ³âµµ¿¡ ´ëÇؼµµ
¼Ò°è¸¦ Ãâ·ÂÇϸé Àüü ¸ÅÃâ ÇÕ°è±îÁö ±¸ÇÑ´Ù. ¿ùº°, ³âµµº°
±×·ìÇÎÀº º° Àǹ̰¡ ¾ø´Ù.
3.SELECT name, depart, salary, ROUND(salary
* 100.0 / SUM(salary) OVER(PARTITION BY depart), 2) AS ºÎ¼¿ù±ÞºñÀ² FROM tStaff;
ºÎ¼º°·Î ±×·ìÇÎÇÑ ¿ù±Þ ÃÑÇÕÀ¸·Î Á÷¿ø ¿ù±ÞÀ» ³ª´©¾î ¹éºÐÀ²À» ±¸ÇÏ°í ¼Ò¼öÁ¡ ÀÌÇÏ 2ÀÚ¸®¿¡¼ ¹Ý¿Ã¸² ó¸®ÇÑ´Ù.
4.SELECT year, month, sales, SUM(sales)
OVER (ORDER BY year, month) AS ´©Àû¸ÅÃâ FROM tMonthSale;
year, month·Î Á¤·ÄÇÏ¿© ¸ÅÃâ ÃÑÇÕÀ» Ãâ·ÂÇÑ´Ù. ù ÇàºÎÅÍ ´©ÀûÀ» ½ÃÀÛÇÏ¿© ¸¶Áö¸· Çà±îÁö ´©ÀûÀ» ¹Ýº¹ÇÑ´Ù.
5.SELECT year, month, sales, SUM(sales)
OVER (PARTITION BY year ORDER BY month) AS ´©Àû¸ÅÃâ FROM
tMonthSale;
year¸¦ ±×·ìÇÎ ±âÁØ Çʵå·Î ÁöÁ¤ÇÏ°í month·Î Á¤·ÄÇÏ¿© ´©Àû ¸ÅÃâÀ» ±¸ÇÑ´Ù. 2021³â°ú 2022³âÀÇ ±×·ìÀÌ ºÐ¸®µÇ¾î 2022³âÀº 1¿ùºÎÅÍ ¸ÅÃâÀ» »õ·Î ´©ÀûÇÑ´Ù.
6.SELECT depart, AVG(salary) FROM tStaff
GROUP BY depart;
SELECT DISTINCT depart, AVG(salary) OVER
(PARTITION BY depart) FROM tStaff;
ÀÌ µÎ ±¸¹®Àº °á°ú¼ÂÀÌ °°´Ù. OVERÀÇ PARTITION BY·Î ºÎ¼º° Æò±Õ ¿ù±ÞÀ» ±¸Ç쵂 Á÷¿ø ¸ñ·ÏÀ» ´Ù Ãâ·ÂÇÒ ÇÊ¿ä´Â ¾øÀ¸¹Ç·Î DISTINCT Å°¿öµå¸¦ ºÙ¿© Áߺ¹ÇàÀ» Á¦°ÅÇÑ´Ù.
7.SELECT RANK() OVER (ORDER BY POPU DESC), tCity.*
FROM tCity;
Ãáõ°ú ¼øõÀÇ Àα¸°¡ °°¾Æ °øµ¿ ¼øÀ§·Î ó¸®ÇÑ´Ù. °øµ¿ ¼øÀ§¸¦ °Ç³Ê
¶Ù·Á¸é DENSE_RANK ÇÔ¼ö¸¦ ´ë½Å »ç¿ëÇÑ´Ù.
8.SELECT RANK() OVER (PARTITION BY region
ORDER BY area DESC), tCity.* FROM tCity;
PARTITION BY regionÀ¸·Î Áö¿ªº°·Î ±×·ìÇÎÇÏ°í ORDER BY area DESC±¸¹®À¸·Î ¸éÀûÀÇ ¿ª¼øÀ¸·Î Á¤·ÄÇÏ¿© ¼øÀ§¸¦ ¸Å±ä´Ù.
°¿øµµ¿¡¼´Â ȫõÀÌ 1µî, ÃáõÀÌ 2µîÀÌ´Ù.
9.SELECT RANK() OVER (PARTITION BY gender
ORDER BY salary DESC) AS ¼øÀ§, tStaff.* FROM tStaff;
gender ±âÁØÀ¸·Î ±×·ìÇÎÇÏ°í ¿ù±Þ ³»¸²Â÷¼øÀ¸·Î Á¤·ÄÇÏ¿© ¼øÀ§¸¦
¸Å±ä´Ù.
10.SELECT NTILE(3) OVER (ORDER BY popu
DESC), tCity.* FROM tCity;
Àα¸ÀÇ ³»¸²Â÷¼øÀ¸·Î Á¤·ÄÇÏ¿© NTILE(3)À¸·Î 3ºÐÇÒÇÑ´Ù. 8°³ÀÇ µµ½Ã¸¦ 3°³ÀÇ
±×·ìÀ¸·Î ³ª´©¸é 3, 3, 2°³·Î ºÐÇÒÇÑ´Ù.
11.SELECT depart, name, salary,
salary
- PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY salary) OVER (PARTITION BY
depart) AS disc
FROM tStaff ORDER BY depart, name;
ºÎ¼¿¡ ½ÇÁ¦ Á¸ÀçÇÏ´Â ¿ù±Þ°úÀÇ Â÷À̸¦ ±¸Çϱâ À§ÇØ ÀÌ»ê ÁßÀ§°ªÀ¸·Î °è»êÇß´Ù. ¼öÇÐÀûÀÎ
ÁßÀ§°ª°úÀÇ Â÷À̸¦ ±¸ÇÏ·Á¸é PERCENTILE_CONT ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù.
12.SELECT item, º½,
NVL(¿©¸§, 0) AS ¿©¸§, °¡À», NVL(°Ü¿ï, 0) AS °Ü¿ï
FROM tSeason2
PIVOT (SUM(sale) FOR season IN ('º½' AS º½, '¿©¸§' AS ¿©¸§, '°¡À»' AS °¡À», '°Ü¿ï' AS °Ü¿ï)) pvt
NVL ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é µÇ´Âµ¥ ¾îµð´Ù Àû¿ëÇÒÁö Çò°¥¸°´Ù. NVL ÇÔ¼ö´Â ÃÖÁ¾ Ãâ·ÂÇϱâ Àü¿¡ Àû¿ëÇØ¾ß ÇϹǷΠÇǺ¿ÇÑ ÈÄ SELECT Àý¿¡¼
ÁöÁ¤ÇÏ¸é µÈ´Ù. ÆíÀÇ»ó ¿©¸§, °Ü¿ï¿¡ ´ëÇؼ¸¸ NVLÀ» Àû¿ëÇß´Ù. ´ÙÀ½ Äڵ尡 ¾Æ´ÔÀ» ÁÖÀÇÇÏÀÚ.
SELECT * FROM tSeason2
PIVOT (SUM(sale) FOR season IN ('º½', NVL('¿©¸§', 0), '°¡À»',
NVL('°Ü¿ï', 0))) pvt;
IN ÀýÀº ÇǺ¿ ´ë»ó °ª¸¸ ÁöÁ¤ÇÒ »Ó ±× °ª¿¡ ´ëÇÑ Ã³¸®±îÁö ÁöÁ¤ÇÏ´Â
°ÍÀº ¾Æ´Ï´Ù. ÇǺ¿Àº ÀÏ´Ü Ç쵂 ±× °á°ú¸¦ ¾î¶»°Ô º¸¿©ÁÙ °ÍÀΰ¡´Â SELECT
Àý¿¡¼ ÁöÁ¤ÇÑ´Ù.
13.³âµµº° ÃÑ ÆǸŷ® Áý°è´Â ´ÙÀ½ Äõ¸®·Î ±¸ÇÑ´Ù.
SELECT year, SUM(sales) FROM tMonthSale
GROUP BY year;
ÀÌ °á°ú¸¦ ÇǺ¿Çؼ ³âµµ¸¦ ¿·Î º¯È¯ÇÏ·Á¸é ÇǺ¿ÀÌ ÇÊ¿äÇÏ´Ù.
SELECT * FROM tMonthSale PIVOT(SUM(sales)
FOR year IN(2021, 2022)) pvt;
³âµµ°¡ ¿·Î ÀüȯµÇÁö¸¸ ¿ùº°·Î ±×·ìÇÎµÇ¾î ³âµµº° ÆǸŷ®ÀÌ ¾Æ´Ñ ¿ùº° ÆǸŷ®ÀÌ µÈ´Ù. ¿ùÀ» Á¦°ÅÇÏ°í ³âµµº°·Î ±×·ìÇÎÇÏ·Á¸é ÀζóÀκ信¼ ¿ùÀ» Á¦¿ÜÇØ¾ß ÇÑ´Ù.
SELECT * FROM
(
SELECT year, sales FROM tMonthSale
) prepvt
PIVOT(SUM(sales) FOR year IN(2021, 2022)) pvt;
year¿Í sales µÎ
°³ÀÇ Çʵ常 ³²±ä ÈÄ ³âµµÀÇ 2021, 2022°ª¿¡ ´ëÇØ ÆǸŷ®ÀÇ Çհ踦 ±¸ÇÑ´Ù.
1.ALTER TABLE tStaff ADD tel CHAR(20) NULL;
UPDATE tStaff SET tel = '015-396-1004'
WHERE name = 'À±ºÀ±æ';
ÀüȹøÈ£´Â ±æÀÌ°¡ ÀÏÁ¤ÇÏ°í ÃÖ´ë 20ÀÚ¸¦ ³Ñ±âÁö ¾ÊÀ¸¹Ç·Î CHAR(20) ŸÀÔÀÌ ÀûÇÕÇÏ´Ù. ±âÁ¸ Á÷¿øÀº ¾ÆÁ÷ ÀüȹøÈ£°¡ ¾øÀ¸¹Ç·Î
NULL °¡´ÉÇØ¾ß ÇÑ´Ù. À±ºÀ±æÀÇ ÀüȹøÈ£¸¦ ÀÔ·ÂÇØ º¸¾Ò´Ù.
2.ALTER TABLE tStaff DROP COLUMN tel;
3.UPDATE tStaff SET score = 10 WHERE score
IS NULL;
ALTER TABLE tStaff MODIFY score DECIMAL(5,2) NOT NULL;
ÀÌ¹Ì NULLÀÎ ·¹Äڵ尡 ÀÖ¾î ÀÌ °ªÀ» ÀÓÀÇÀÇ °ªÀ¸·Î ä¿î ÈÄ NOT NULL·Î º¯°æÇØ¾ß ÇÑ´Ù.
1.
DECLARE
v_hour INT := 24;
v_minute INT := 60;
v_second INT := 60;
BEGIN
DBMS_OUTPUT.PUT_LINE('ÇÏ·ç´Â ' || v_hour * v_minute
* v_second || 'ÃÊÀÔ´Ï´Ù.');
END;
¹®ÀÚ¿À» ¿¬°áÇÏ´Â || ¿¬»êÀÚº¸´Ù °ö¼À ¿¬»êÀÚÀÎ *ÀÇ ¿ì¼± ¼øÀ§°¡ ³ô¾Æ ¿¬»ê½Ä¿¡ ±»ÀÌ °ýÈ£¸¦ °¨½ÎÁö ¾Ê¾Æµµ »ó°ü¾ø´Ù.
2.
DECLARE
v_maxSalary INT;
v_name tStaff.name%TYPE;
v_depart tStaff.depart%TYPE;
BEGIN
SELECT MAX(salary) INTO v_maxSalary FROM tStaff;
SELECT name, depart INTO v_name, v_depart FROM tStaff WHERE salary =
v_maxSalary;
DBMS_OUTPUT.PUT_LINE(TRIM(v_depart) || 'ÀÇ ' ||
TRIM(v_name) || 'ÀÔ´Ï´Ù.');
END;
"Àλç°úÀÇ À庸°íÀÔ´Ï´Ù."¸¦
Ãâ·ÂÇÑ´Ù.
3.
DECLARE
v_score INT := 86;
BEGIN
DBMS_OUTPUT.PUT_LINE(
CASE
WHEN
v_score >= 95 THEN 'A+'
WHEN
v_score >= 90 THEN 'A'
WHEN
v_score >= 85 THEN 'B+'
WHEN
v_score >= 80 THEN 'B'
END
);
END;
4.SELECT * FROM tStaff ORDER BY grade;
grade¸¦ ±âÁØÀ¸·Î Á¤·ÄÇϸé Á÷±ÞÀÇ °¡³ª´Ù¼øÀÏ »Ó ³ôÀº Á÷±Þ¼øÀÌ
¾Æ´Ï´Ù. ¾î¶² Á÷±ÞÀÌ ¾ó¸¶³ª ³ôÀºÁö CASE ¹®À¸·Î ÀÏÀÏÀÌ
Á¤ÇØ ÁÖ¾î¾ß ÇÑ´Ù.
SELECT * FROM tStaff ORDER BY
CASE grade
WHEN 'ÀÌ»ç' THEN 1
WHEN 'ºÎÀå' THEN 2
WHEN 'Â÷Àå' THEN 3
WHEN '°úÀå' THEN 4
WHEN '´ë¸®' THEN 5
WHEN '»ç¿ø' THEN 6
END;
¶Ç´Â DECODE ÇÔ¼ö·Î ´õ °£´ÜÇÏ°Ô Á¤·ÄÇÒ ¼ö ÀÖ´Ù.
SELECT * FROM tStaff ORDER BY
DECODE(TRIM(grade), 'ÀÌ»ç',
1, 'ºÎÀå', 2, 'Â÷Àå', 3, '°úÀå', 4, '´ë¸®', 5, '»ç¿ø',
6);
grade Çʵ尡 CHAR ŸÀÔÀ̾î¼
µÚÂÊÀÇ °ø¹éÀ» ÀÚ¸¥ ÈÄ ºñ±³ÇØ¾ß Á¤È®ÇÏ´Ù.
1.
CREATE OR REPLACE PROCEDURE
SP_PrintSalaryScore(p_name tStaff.name%TYPE)
AS
v_salary tStaff.salary%TYPE;
v_score tStaff.score%TYPE;
BEGIN
SELECT salary, score INTO v_salary, v_score FROM tStaff WHERE name =
p_name;
DBMS_OUTPUT.PUT_LINE(p_name || 'ÀÇ ¿ù±ÞÀº ' ||
v_salary ||
', ¼ºÃëµµ´Â ' || v_score || 'ÀÔ´Ï´Ù.');
END;
Á÷¿øÀÇ À̸§Àº p_name Àμö·Î Àü´Þ¹Þ´Â´Ù. tStaff¿¡¼ name°ú p_nameÀ»
ºñ±³ÇÏ¿© ÇØ´ç Á÷¿øÀ» ã°í ¿ù±Þ°ú ¼ºÃëµµ Çʵ带 v_salary, v_score º¯¼ö¿¡ ´ëÀÔÇÑ ÈÄ Ãâ·ÂÇÑ´Ù.
2.
CREATE OR REPLACE FUNCTION
FN_GetPopuDencity(p_name CHAR)
RETURN NUMBER
AS
v_dencity NUMBER;
BEGIN
SELECT (popu * 10000.0)/area INTO v_dencity FROM tCity WHERE name =
p_name;
RETURN
v_dencity;
END;
Àα¸°¡ ¸¸¸í ´ÜÀ§·Î ÀúÀåµÇ¾î ÀÖÀ¸¹Ç·Î 10000À» °öÇØ¾ß ÇÑ´Ù. µµ½Ã¸í¸¸ Àü´ÞÇϸé Àα¸¹Ðµµ¸¦ ±¸ÇØ ¸®ÅÏÇÑ´Ù. ´ÙÀ½ ¸í·ÉÀº ȫõÀÇ
Àα¸¹Ðµµ 38À» °è»êÇÏ¿© Ãâ·ÂÇÑ´Ù.
SELECT FN_GetPopuDencity('ȫõ') FROM dual;
¼ºêÄõ¸®ÀÇ °á°ú°ªÀ» ¹Ù·Î ¸®ÅÏÇÒ ¼ö ¾ø¾î º¯¼ö·Î ´ëÀÔÇÑ ÈÄ º¯¼ö¸¦ ¸®ÅÏÇØ¾ß ÇÑ´Ù. ÀÌ¿¡ ºñÇØ SQL ServerÀÇ °æ¿ì´Â ¼ºêÄõ¸®¸¦ ¹Ù·Î ¸®ÅÏÇÒ ¼ö
ÀÖ´Ù.
CREATE FUNCTION GetPopuDens(@p_name CHAR(10))
RETURNS DECIMAL
AS
BEGIN
RETURN
(SELECT (popu * 10000.0)/area FROM tCity WHERE name = @p_name);
END
SELECT dbo.GetPopuDens('ȫõ'); Çü½ÄÀ¸·Î È£ÃâÇÑ´Ù.
3.
CREATE OR REPLACE FUNCTION FN_GetRangeSum(p_start
INT, p_end INT, p_step INT)
RETURN INT
AS
v_num INT := p_start;
v_total INT := 0;
BEGIN
WHILE v_num <= p_end
LOOP
v_total := v_total + v_num;
v_num := v_num + p_step;
END LOOP;
RETURN v_total;
END;
Àμö¸¦ ¼¼ °³ ¹Þ¾Æ p_start´Â v_numÀÇ ÃʱⰪÀ¸·Î, p_end´Â WHILE ¹®ÀÇ Á¶°ÇÀ¸·Î, p_stepÀº v_numÀÇ Áõ°¡°ªÀ¸·Î »ç¿ëÇÑ´Ù. 1¾¿ Áõ°¡ÇÏ´Â °ÍÀÌ ¾Æ´Ï¾î¼ FOR ¹®Àº »ç¿ëÇÒ ¼ö ¾ø´Ù.
1.CURSOR¸¦ Á÷Á¢ Á¤ÀÇÇÏ¿© ¼øȸÇÒ ¼öµµ ÀÖ°í FOR ¹®À¸·Î Ä¿¼¸¦ »ý¼ºÇÏ¿© ¼øȸÇÒ ¼öµµ ÀÖ´Ù.
DECLARE
CURSOR v_cursor IS SELECT * FROM tStaff;
v_staff tStaff%ROWTYPE;
BEGIN
OPEN v_cursor;
LOOP
FETCH v_cursor INTO v_staff;
EXIT
WHEN v_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(v_staff.name || v_staff.depart || v_staff.salary);
END LOOP;
CLOSE v_cursor;
END;
DECLARE
BEGIN
FOR v_cursor IN (SELECT * FROM tStaff)
LOOP
DBMS_OUTPUT.PUT_LINE(v_cursor.name || v_cursor.depart || v_cursor.salary);
END LOOP;
END;
2.ÇØ´ç ºÎ¼ÀÇ Á÷¿ø ¸ñ·ÏÀ» Á¶»çÇÏ¿© Ãâ·Â¿ë Ä¿¼¸¦ ¸®ÅÏÇÏ´Â ÇÁ·Î½ÃÀú¸¦
ÀÛ¼ºÇÑ´Ù.
CREATE OR REPLACE PROCEDURE
SP_OutStaffSalary(p_depart IN CHAR, o_cursor OUT SYS_REFCURSOR)
AS
BEGIN
OPEN o_cursor FOR SELECT name, salary FROM tStaff WHERE depart = p_depart;
END;
´ÙÀ½ ÄÚµå·Î Å×½ºÆ®ÇÑ´Ù.
DECLARE
v_cursor SYS_REFCURSOR;
v_name CHAR(15);
v_salary INT;
BEGIN
SP_OutStaffSalary('Àλç°ú', v_cursor);
LOOP
FETCH v_cursor INTO v_name, v_salary;
EXIT
WHEN v_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(TRIM(v_name) || 'ÀÇ ¿ù±ÞÀº ' ||
v_salary || '¸¸¿øÀÔ´Ï´Ù.');
END LOOP;
END;
Á÷¿øÀÇ À̸§°ú ¿ù±Þ ¸ñ·ÏÀ» Ãâ·ÂÇÑ´Ù.
1.
CREATE OR REPLACE TRIGGER TR_ChangeSalary
AFTER UPDATE OF salary ON tStaff
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE(:OLD.name || ':' || :OLD.salary || '->' ||
:NEW.salary);
END;
¿ù±ÞÀÇ º¯È¿¡¸¸ °ü½ÉÀÌ ÀÖÀ¸¹Ç·Î AFTER UPDATE ´ÙÀ½¿¡ OF salary¸¦ ÁöÁ¤ÇÑ´Ù. º»Ã¼¿¡¼´Â Á÷¿ø À̸§°ú ÀÌÀü, ÀÌÈÄ ¿ù±ÞÀ» Ãâ·ÂÇÑ´Ù. Á÷¿ø 1¸íÀÇ
¿ù±ÞÀ» º¯°æÇÏ¸é ¸Þ½ÃÁö Çϳª¸¦ Ãâ·ÂÇÏ°í ºÎ¼ÀÇ ¸ðµç Á÷¿ø ¿ù±ÞÀ» º¯°æÇÏ¸é °¢ ºÎ¼¿øÀÇ ¿ù±Þ º¯°æ ³»¿ªÀ» Ãâ·ÂÇÑ´Ù.
2.
CREATE OR REPLACE TRIGGER TR_ChangeSalary
AFTER UPDATE ON tStaff
FOR EACH ROW
BEGIN
IF :NEW.salary > :OLD.salary * 1.1 THEN
RAISE_APPLICATION_ERROR(-20000, '¹º°¡ ¼ö»óÇÑ ¿ù±Þ ÀλóÀÓ');
END IF;
END;
»õ ¿ù±ÞÀÌ ÀÌÀü ¿ù±ÞÀÇ 1.1¹è°¡ ³ÑÀ¸¸é ¿¹¿Ü¸¦ ÀÏÀ¸ÄÑ °»½ÅÀ» Ãë¼ÒÇÑ´Ù.
3.
CREATE OR REPLACE TRIGGER TR_ChangeSalary
BEFORE UPDATE ON tStaff
FOR EACH ROW
BEGIN
IF :NEW.salary > :OLD.salary * 1.1 THEN
:NEW.salary := :OLD.salary * 1.1;
END IF;
END;
°ªÀÌ º¯°æµÇ±â ÀüÀÇ À̺¥Æ®¸¦ ¹Þ¾Æ¾ß ÇϹǷΠBEFORE Æ®¸®°Å·Î º¯°æÇÑ´Ù. »õ ¿ù±ÞÀÌ ÀÌÀü ¿ù±ÞÀÇ 10%¸¦ ÃÊ°úÇÏ¸é »óÇѼ± 10% ÀλóÀ¸·Î °Á¦ º¯°æÇÑ´Ù.