DBeaver

ÅëÇÕ Äõ¸®Åø

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) ¿É¼ÇÀº ²ôÀÚ. Å×ÀÌºí¿¡ º°¸íÀ» ÀÚµ¿À¸·Î ´Þ¾ÆÁÖ´Â ±â´ÉÀε¥ Ãʺ¸ÀÚ¿¡°Ô Çò°¥¸®´Â ºÎÀÛ¿ëÀÌ ÀÖ´Ù. ³ª¸ÓÁö ¿É¼ÇÀº ÇÊ¿ä¿¡ µû¶ó Á¶Á¤ÇØ ¾²µµ·Ï ÇÏÀÚ. ±Û²Ã Å©±â³ª ¸ð¾ç Á¤µµ´Â ÃëÇâ¿¡ ¸Â°Ô Á¶Á¤ÇØ µÎ´Â °ÍÀÌ ÁÁ´Ù.

MariaDB ¿¬°á

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¸¦ ´©¸¥´Ù. ¿©·¯ ÁÙ ½ÇÇà°ú ÇÑ ÁÙ ½ÇÇàÀÇ ´ÜÃàÅ°°¡ ±¸ºÐµÇ¾î ÀÖ¾î ±»ÀÌ ºí·ÏÀ» ¼±ÅÃÇÏÁö ¾Ê¾Æµµ µÇ´Â ÀÌÁ¡ÀÌ ÀÖ´Ù.

SQL Server ¿¬°á

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 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Àº ±¸¹®ÀÌ º¹ÀâÇؼ­ ´Ù ¿Ü¿ì±â´Â ¾î·Á¿ì¸ç ÀÚÁÖ »ç¿ëÇÏÁö ¾Ê´Â ±¸¹®Àº Ç×»ó Çò°¥¸°´Ù. ÇÊ¿äÇÒ ¶§¸¶´Ù °Ë»öÇؼ­ ãÀ» ¼ö ÀÖÁö¸¸ ÀÛ¾÷ÀÇ È帧ÀÌ ²÷¾îÁ® »ý»ê¼ºÀÌ ¶³¾îÁö¸ç À߸ø °Ë»öÇÏ¿© ¾û¶×ÇÑ ½Ç¼ö¸¦ ÇÏ´Â °æ¿ìµµ ÀÖ´Ù. ±âº»ÀûÀÎ 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°£ÀÇ ±â´É Â÷ÀÌ´Â °ÅÀÇ ¾ø¾î ÇÑÂÊ¿¡¼­ ±¸Çö °¡´ÉÇÑ ±â´ÉÀº ´Ù¸¥ ÂÊ¿¡¼­µµ Ç×»ó ±¸Çö °¡´ÉÇÏ´Ù. ´Ù¸¸, ±¸¹®»óÀÇ Â÷ÀÌ°¡ ÀÖ¾î ´ëü ±â´ÉÀ» ã¾Æ¾ß ÇÑ´Ù. ´ÙÀ½ µµÇ¥´Â ¼¼ 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Àå

1.Å×À̺í

Çʵ尡 ¸ð¿© ÇϳªÀÇ ¿£ÅÍƼ¸¦ Ç¥ÇöÇÏ´Â ·¹Äڵ尡 µÇ¸ç ·¹ÄÚµåÀÇ ÁýÇÕÀÌ Å×À̺íÀÌ´Ù.

2.¨é

Ä÷³Àº ·¹Äڵ带 ±¸¼ºÇÏ´Â Á¤º¸ ÇϳªÀÌ´Ù. ·¹ÄÚµå´Â Çà ¶Ç´Â Æ©ÇÃÀ̶ó°íµµ ºÎ¸¥´Ù.

3.¨è

¿ä±¸ »çÇ׸¸ Àü´ÞÇÏ¸ç ½ÇÇà °úÁ¤Àº DB ¿£ÁøÀÌ ÆÇ´ÜÇÏ¿© °áÁ¤ÇÑ´Ù.

4.VARCHAR

°íÁ¤ ±æÀÌ´Â CHAR ŸÀÔÀ» ¾²¸ç °¡º¯ ±æÀÌ´Â VARCHAR ŸÀÔÀ» ¾´´Ù.

4Àå

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¸íÀ» Ãâ·ÂÇÏ¸é µÈ´Ù.

5Àå

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 Àý·Î ÀÛ¼ºÇÑ´Ù. °­¿øµµ¸¸ Ãâ·ÂµÈ´Ù.

6Àå

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·Î °è»êÇصµ ¸¶Âù°¡ÁöÀÌ´Ù.

7Àå

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);

À̸§°ú ºÎ¼­°¡ °°¾Æµµ ¼ºº°ÀÌ ´Ù¸£¸é Áߺ¹ °¡´ÉÇÏ´Ù.

8Àå

1.°ÅÁÖÁö´Â ȸ¿ø¿¡ ´ëÇØ Á¾¼ÓÀûÀ̹ǷΠº°µµ Å×À̺í·Î ºÐ¸®ÇØ¾ß ÇÏÁö¸¸ ¹è¼ÛÁö´Â ȸ¿ø»Ó¸¸ ¾Æ´Ï¶ó ÁÖ¹®¹øÈ£¿¡µµ Á¾¼ÓÀûÀ̹ǷΠÁÖ¹® Å×ÀÌºí¿¡ ³²°Ü µÎ¾î¾ß ÇÑ´Ù. º¸¶óµ¹ÀÌ°¡ ³ëÆ®ºÏÀ» ¼­¿ï »ç´Â Ä£±¸¿¡°Ô ¼±¹°ÇÑ´Ù¸é ¹è¼ÛÁö´Â ÃáõÀÌ ¾Æ´Ñ ¼­¿ïÀÏ ¼öµµ ÀÖ´Ù.

9Àå

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 Àý¿¡ Á¶°ÇÀ» ÀÛ¼ºÇÏ´Â °ÍÀÌ ¾Æ´ÔÀ» À¯ÀÇÇÏÀÚ.

10Àå

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 Á¶°ÇÀý¿¡¼­ ½ÄÇ° À¯Çü¸¸ Ãâ·ÂÇÑ´Ù.

11Àå

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º¸´Ù À۰ųª °°À¸¸é ¹ÝÇ° °¡´ÉÇÑ ÁÖ¹®ÀÌ´Ù.

12Àå

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À» °öÇÏ¸é µÈ´Ù.

13Àå

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°ª¿¡ ´ëÇØ ÆǸŷ®ÀÇ Çհ踦 ±¸ÇÑ´Ù.

14Àå

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·Î º¯°æÇØ¾ß ÇÑ´Ù.

15Àå

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 ŸÀÔÀ̾ µÚÂÊÀÇ °ø¹éÀ» ÀÚ¸¥ ÈÄ ºñ±³ÇØ¾ß Á¤È®ÇÏ´Ù.

16Àå

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 ¹®Àº »ç¿ëÇÒ ¼ö ¾ø´Ù.

17Àå

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;

 

Á÷¿øÀÇ À̸§°ú ¿ù±Þ ¸ñ·ÏÀ» Ãâ·ÂÇÑ´Ù.


18Àå

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% ÀλóÀ¸·Î °­Á¦ º¯°æÇÑ´Ù.