<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Record</title>
    <link>https://ms-record.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sat, 27 Jun 2026 02:23:52 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>동띠기</managingEditor>
    <image>
      <title>Record</title>
      <url>https://tistory1.daumcdn.net/tistory/3798946/attach/a3a3505dfc9d40579ff744fef4ccd1ac</url>
      <link>https://ms-record.tistory.com</link>
    </image>
    <item>
      <title>오라클 SQL과 PL/SQL - 데이터 딕셔너리 (Data Dictionary)</title>
      <link>https://ms-record.tistory.com/124</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;데이터&amp;nbsp;딕셔너리&amp;nbsp;(Data&amp;nbsp;Dictionary) &lt;br /&gt;&lt;br /&gt;오라클은&amp;nbsp;데이터베이스를&amp;nbsp;운영하기&amp;nbsp;위한&amp;nbsp;정보들을&amp;nbsp;모두&amp;nbsp;특정한&amp;nbsp;테이블에&amp;nbsp;모아두고&amp;nbsp;관리하는데&amp;nbsp;그&amp;nbsp;테이블을&amp;nbsp;데이터&amp;nbsp;딕셔너리라고&amp;nbsp;합니다. &lt;br /&gt;이&amp;nbsp;딕셔너리에는&amp;nbsp;아래와&amp;nbsp;같은&amp;nbsp;주요&amp;nbsp;정보들이&amp;nbsp;저장됩니다.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;오라클&amp;nbsp;데이터베이스의&amp;nbsp;메모리&amp;nbsp;구조와&amp;nbsp;파일에&amp;nbsp;대한&amp;nbsp;구조&amp;nbsp;정보 &lt;br /&gt;각&amp;nbsp;오브젝트들이&amp;nbsp;사용하고&amp;nbsp;있는&amp;nbsp;공간의&amp;nbsp;정보 &lt;br /&gt;제약&amp;nbsp;조건&amp;nbsp;정보 &lt;br /&gt;사용자에&amp;nbsp;대한&amp;nbsp;정보 &lt;br /&gt;권한이나&amp;nbsp;프로파일,&amp;nbsp;롤에&amp;nbsp;대한&amp;nbsp;정보 &lt;br /&gt;감사(Audit)에&amp;nbsp;대한&amp;nbsp;정보 &lt;br /&gt;&lt;br /&gt;이&amp;nbsp;외에도&amp;nbsp;많은&amp;nbsp;정보들이&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;이&amp;nbsp;정보들은&amp;nbsp;사람으로&amp;nbsp;비유하면&amp;nbsp;두뇌에&amp;nbsp;해당되는&amp;nbsp;정보들이기&amp;nbsp;때문에&amp;nbsp;만약&amp;nbsp;장애나&amp;nbsp;잘못&amp;nbsp;관리될&amp;nbsp;경우&amp;nbsp;오라클을&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;없고&amp;nbsp;더&amp;nbsp;심한&amp;nbsp;경우&amp;nbsp;복구조차&amp;nbsp;할&amp;nbsp;수&amp;nbsp;없게&amp;nbsp;될&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;그래서&amp;nbsp;오라클은&amp;nbsp;딕셔너리를&amp;nbsp;base&amp;nbsp;table과&amp;nbsp;data&amp;nbsp;dictionary&amp;nbsp;view로&amp;nbsp;나누어&amp;nbsp;두고&amp;nbsp;data&amp;nbsp;dictionary&amp;nbsp;view를&amp;nbsp;통해서만&amp;nbsp;select할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;허용합니다. &lt;br /&gt;만약&amp;nbsp;데이터베이스에&amp;nbsp;변경사항이&amp;nbsp;생겨&amp;nbsp;딕셔너리&amp;nbsp;내용을&amp;nbsp;변경해야&amp;nbsp;할&amp;nbsp;경우&amp;nbsp;사용자가&amp;nbsp;직접&amp;nbsp;수동으로&amp;nbsp;딕셔너리를&amp;nbsp;변경하지&amp;nbsp;못하고&amp;nbsp;해당&amp;nbsp;DDL&amp;nbsp;문장을&amp;nbsp;수행하는&amp;nbsp;순간&amp;nbsp;server&amp;nbsp;process가&amp;nbsp;사용자를&amp;nbsp;대신해서&amp;nbsp;딕셔너리&amp;nbsp;내용을&amp;nbsp;변경해&amp;nbsp;줍니다. &lt;br /&gt;base table는 데이터베이스를 생성하는 시점에 자동으로 만들어 집니다. 반면 data dictionary view는 catalog.sql이란 파일이 수행되야 만들어집니다. 이 파일은 DBCA로 데이터베이스를 생성할 때는 자동으로 수행되지만 CREATE DATABASE라는 명령어로 수동으로 데이터베이스를 생성 할 때는 수행되지 않음으로 수동생성해야합니다. &lt;br /&gt;data&amp;nbsp;dictionary&amp;nbsp;view는&amp;nbsp;크게&amp;nbsp;2가지&amp;nbsp;종류가&amp;nbsp;있습니다. &lt;br /&gt;하나는&amp;nbsp;static&amp;nbsp;data&amp;nbsp;dictionary&amp;nbsp;view&amp;nbsp;다른&amp;nbsp;한가지는&amp;nbsp;dynamic&amp;nbsp;prefomance&amp;nbsp;view&amp;nbsp;입니다 &lt;br /&gt;static&amp;nbsp;data&amp;nbsp;dictionary&amp;nbsp;view는&amp;nbsp;다시&amp;nbsp;접두어가&amp;nbsp;DBA._,&amp;nbsp;ALL_,&amp;nbsp;USER_로&amp;nbsp;시작되는&amp;nbsp;3가지로&amp;nbsp;나뉘고&amp;nbsp;dynamic&amp;nbsp;prefomance&amp;nbsp;view는&amp;nbsp;접수어가&amp;nbsp;v$로&amp;nbsp;시작되는&amp;nbsp;것들이&amp;nbsp;대표적입니다. &lt;br /&gt;USER_로&amp;nbsp;시작하는&amp;nbsp;딕셔너리는&amp;nbsp;해당&amp;nbsp;사용자가&amp;nbsp;생성한&amp;nbsp;오브젝트들만&amp;nbsp;조회할&amp;nbsp;수&amp;nbsp;있다는&amp;nbsp;뜻이며&amp;nbsp;ALL_로&amp;nbsp;시작하는&amp;nbsp;딕셔너리를&amp;nbsp;해당&amp;nbsp;사용자가&amp;nbsp;생성한&amp;nbsp;오브젝트를&amp;nbsp;포함하여&amp;nbsp;해당&amp;nbsp;사용자가&amp;nbsp;접근&amp;nbsp;가능한&amp;nbsp;모든&amp;nbsp;오브젝트를&amp;nbsp;조회할&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;DBA_로&amp;nbsp;시작하는&amp;nbsp;딕셔너리는&amp;nbsp;데이터베이스&amp;nbsp;내의&amp;nbsp;거의&amp;nbsp;모든&amp;nbsp;오브젝트들을&amp;nbsp;다&amp;nbsp;볼&amp;nbsp;수&amp;nbsp;있지만&amp;nbsp;DBA권한을&amp;nbsp;가진&amp;nbsp;사람만이&amp;nbsp;이&amp;nbsp;딕셔너리를&amp;nbsp;조회할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp; &lt;br /&gt;static&amp;nbsp;data&amp;nbsp;dictionary&amp;nbsp;view는&amp;nbsp;이름의&amp;nbsp;뜻처럼&amp;nbsp;그&amp;nbsp;속에&amp;nbsp;담고&amp;nbsp;있는&amp;nbsp;내용들이&amp;nbsp;자동으로&amp;nbsp;변경되지&amp;nbsp;않고&amp;nbsp;수동으로&amp;nbsp;변경&amp;nbsp;작업을&amp;nbsp;해&amp;nbsp;주어야&amp;nbsp;한다는&amp;nbsp;뜻입니다. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1630069077486&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE st_table (no number);

BEGIN
FOR i IN 1..1000 LOOP
INSERT INTO st_table VALUES (i);
END LOOP;
COMMIT;
END;

SELECT COUNT(*) FROM st_table;

SELECT num_rows, blocks
FROM USER_TABLES
WHERE table_name='ST_TABLE';&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;148&quot; data-origin-height=&quot;56&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t2wJg/btrdrlqaPT5/8Kfnqm4ercYPsR616jmUs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t2wJg/btrdrlqaPT5/8Kfnqm4ercYPsR616jmUs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t2wJg/btrdrlqaPT5/8Kfnqm4ercYPsR616jmUs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft2wJg%2FbtrdrlqaPT5%2F8Kfnqm4ercYPsR616jmUs1%2Fimg.png&quot; data-origin-width=&quot;148&quot; data-origin-height=&quot;56&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;위&amp;nbsp;과정에서&amp;nbsp;딕셔너리인&amp;nbsp;user_tables를&amp;nbsp;조회하니&amp;nbsp;st_table에&amp;nbsp;데이터가&amp;nbsp;한&amp;nbsp;건도&amp;nbsp;없는&amp;nbsp;것으로&amp;nbsp;조회됩니다.&amp;nbsp;실제&amp;nbsp;데이터는&amp;nbsp;1000건&amp;nbsp;있지만&amp;nbsp;딕셔너리&amp;nbsp;내용이&amp;nbsp;변경이&amp;nbsp;안&amp;nbsp;되어서&amp;nbsp;딕셔너리는&amp;nbsp;이&amp;nbsp;사실을&amp;nbsp;모르고&amp;nbsp;있는&amp;nbsp;것입니다. &lt;br /&gt;&lt;br /&gt;딕셔너리를 관리자가 수동으로 업데이트한 후 다시 조회합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1630069083357&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ANALYZE TABLE st_table COMPUTE STATISTICS;

SELECT num_rows, blocks
FROM USER_TABLES 
WHERE table_name='ST_TABLE';&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;255&quot; data-origin-height=&quot;59&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nByUZ/btrdqjTVWed/aSgs8Kls1mQzoV6BA51VV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nByUZ/btrdqjTVWed/aSgs8Kls1mQzoV6BA51VV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nByUZ/btrdqjTVWed/aSgs8Kls1mQzoV6BA51VV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnByUZ%2FbtrdqjTVWed%2FaSgs8Kls1mQzoV6BA51VV0%2Fimg.png&quot; data-origin-width=&quot;255&quot; data-origin-height=&quot;59&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;위&amp;nbsp;과정에서&amp;nbsp;ANALYZE&amp;nbsp;명렁어는&amp;nbsp;실제&amp;nbsp;테이블이나&amp;nbsp;인덱스,&amp;nbsp;클러스터&amp;nbsp;등을&amp;nbsp;하나씩&amp;nbsp;조사해서&amp;nbsp;그&amp;nbsp;결과를&amp;nbsp;딕셔너리에&amp;nbsp;반영시키는&amp;nbsp;명령입니다. &lt;br /&gt;ANALYZE&amp;nbsp;명령어와&amp;nbsp;더불어&amp;nbsp;8i&amp;nbsp;버전&amp;nbsp;이후부터는&amp;nbsp;DBMS_STATS라는&amp;nbsp;패키지도&amp;nbsp;많이&amp;nbsp;사용하는데&amp;nbsp;이&amp;nbsp;명령어들은&amp;nbsp;해당&amp;nbsp;오브젝트들&amp;nbsp;하나씩&amp;nbsp;다&amp;nbsp;검사를&amp;nbsp;하기&amp;nbsp;때문에&amp;nbsp;오라클에&amp;nbsp;부하를&amp;nbsp;아주&amp;nbsp;많이&amp;nbsp;주게&amp;nbsp;됩니다. &lt;br /&gt;그러므로&amp;nbsp;절대로&amp;nbsp;사용량이&amp;nbsp;많은&amp;nbsp;업무시간에는&amp;nbsp;해당&amp;nbsp;작업을&amp;nbsp;피하기를&amp;nbsp;권합니다.&amp;nbsp;정말&amp;nbsp;부득이한&amp;nbsp;경우&amp;nbsp;아니면&amp;nbsp;해당&amp;nbsp;명령어는&amp;nbsp;서버&amp;nbsp;사용량이&amp;nbsp;적은&amp;nbsp;시간대에&amp;nbsp;수행하기&amp;nbsp;바랍니다.&lt;/p&gt;</description>
      <category>데이터베이스/Oracle SQL</category>
      <category>ANALYZE</category>
      <category>base table</category>
      <category>Data Dictionary</category>
      <category>data dictionary view</category>
      <category>DBMS_STATS</category>
      <category>PL/SQL</category>
      <category>sql</category>
      <category>데이터 딕셔너리</category>
      <category>메모리 구조</category>
      <category>오라클</category>
      <author>동띠기</author>
      <guid isPermaLink="true">https://ms-record.tistory.com/124</guid>
      <comments>https://ms-record.tistory.com/124#entry124comment</comments>
      <pubDate>Fri, 27 Aug 2021 22:00:43 +0900</pubDate>
    </item>
    <item>
      <title>오라클 SQL과 PL/SQL ( DELETE, TRUNCATE, DROP 차이 / 읽기전용테이블 )</title>
      <link>https://ms-record.tistory.com/123</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;DELETE,&amp;nbsp;TRUNCATE,&amp;nbsp;DROP&amp;nbsp;명령어의&amp;nbsp;차이점 &lt;br /&gt;&lt;br /&gt;DELETE&amp;nbsp;:&amp;nbsp;데이터만&amp;nbsp;지워지고&amp;nbsp;쓰고&amp;nbsp;있던&amp;nbsp;디스크상의&amp;nbsp;공간은&amp;nbsp;그대로&amp;nbsp;가지고&amp;nbsp;있습니다.&amp;nbsp;그래서&amp;nbsp;데이터가&amp;nbsp;DELETE&amp;nbsp;되어도&amp;nbsp;테이블&amp;nbsp;용량은&amp;nbsp;줄어들지&amp;nbsp;않습니다. &lt;br /&gt;TRUNCATE&amp;nbsp;:&amp;nbsp;최초에&amp;nbsp;테이블이&amp;nbsp;만들어졌던&amp;nbsp;상태,&amp;nbsp;즉&amp;nbsp;데이터가&amp;nbsp;1건도&amp;nbsp;없는&amp;nbsp;상태로&amp;nbsp;모두&amp;nbsp;삭제하고&amp;nbsp;컬럼값만&amp;nbsp;남겨놓습니다.&amp;nbsp;용량도&amp;nbsp;줄어들고&amp;nbsp;인덱스등도&amp;nbsp;모두&amp;nbsp;삭제됩니다. &lt;br /&gt;DROP&amp;nbsp;:&amp;nbsp;데이터와&amp;nbsp;테이블&amp;nbsp;전체를&amp;nbsp;삭제합니다.&amp;nbsp;사용하고&amp;nbsp;있던&amp;nbsp;공간도&amp;nbsp;모두&amp;nbsp;반납하고&amp;nbsp;인덱스&amp;nbsp;제약조건&amp;nbsp;등&amp;nbsp;오브젝트도&amp;nbsp;삭제됩니다. &lt;br /&gt;&lt;br /&gt;11g에서&amp;nbsp;추가된&amp;nbsp;기능소개 &lt;br /&gt;&lt;br /&gt;1.&amp;nbsp;읽기&amp;nbsp;전용&amp;nbsp;테이블로&amp;nbsp;변경하기 &lt;br /&gt;&lt;br /&gt;만약&amp;nbsp;어떤&amp;nbsp;경우에&amp;nbsp;특정&amp;nbsp;테이블의&amp;nbsp;내용을&amp;nbsp;모두&amp;nbsp;변경은&amp;nbsp;할&amp;nbsp;수&amp;nbsp;없게하고&amp;nbsp;조회만&amp;nbsp;가능하도록&amp;nbsp;설정해야&amp;nbsp;한다면&amp;nbsp;트리거를&amp;nbsp;사용하거나&amp;nbsp;아니면&amp;nbsp;제약조건을&amp;nbsp;DISABLE&amp;nbsp;NOVALIDATE해서&amp;nbsp;작업해야&amp;nbsp;합니다. &lt;br /&gt;하지만&amp;nbsp;11g버전에서는&amp;nbsp;아주&amp;nbsp;간단하게&amp;nbsp;읽기전용으로&amp;nbsp;변경할&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1629985311188&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE t_readonly
( no NUMBER, name VARCHAR2(10));

INSERT INTO t_readonly VALUES (1, 'AAA');

COMMIT;

SELECT * FROM t_readonly;

ALTER TABLE t_readonly READ ONLY;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;위와같이&amp;nbsp;아주&amp;nbsp;간단하게&amp;nbsp;읽기전용&amp;nbsp;테이블로&amp;nbsp;변경됩니다. &lt;br /&gt;&lt;br /&gt;읽기전용&amp;nbsp;테이블에&amp;nbsp;테이터나&amp;nbsp;컬럼을&amp;nbsp;추가하려고&amp;nbsp;하면&amp;nbsp;어떻게&amp;nbsp;될까요&amp;nbsp;? &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1629985319037&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT INTO t_readonly VALUES (2, 'BBB');
SQL Error [12081] [99999]: ORA-12081: update operation not allowed on table &quot;SCOTT&quot;.&quot;T_READONLY&quot;

ALTER TABLE t_readonly ADD (tel NUMBER DEFAULT 111); 
SQL Error [12081] [99999]: ORA-12081: update operation not allowed on table &quot;SCOTT&quot;.&quot;T_READONLY&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;//&amp;nbsp;읽기&amp;nbsp;전용인&amp;nbsp;테이블을&amp;nbsp;다시&amp;nbsp;읽기/쓰기모드로&amp;nbsp;변경&amp;nbsp;함 &lt;/p&gt;
&lt;pre id=&quot;code_1629985329302&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ALTER TABLE t_readonly READ WRITE;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;//&amp;nbsp;읽기&amp;nbsp;전용인&amp;nbsp;테이블은&amp;nbsp;읽기&amp;nbsp;전용상태일&amp;nbsp;때&amp;nbsp;아래의&amp;nbsp;명령으로&amp;nbsp;삭제&amp;nbsp;가능함. &lt;/p&gt;
&lt;pre id=&quot;code_1629985334112&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DROP TABLE t_readonly;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;가상컬럼&amp;nbsp;테이블사용하기. &lt;br /&gt;&lt;br /&gt;11g부터는&amp;nbsp;테이블을&amp;nbsp;생성할&amp;nbsp;때&amp;nbsp;가상&amp;nbsp;컬럼이라는&amp;nbsp;것을&amp;nbsp;설정할&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;아래의&amp;nbsp;쉬운&amp;nbsp;예로&amp;nbsp;가상&amp;nbsp;컬럼&amp;nbsp;테이블을&amp;nbsp;살펴보겠습니다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2-1&amp;nbsp;:&amp;nbsp;0000&amp;nbsp;가상컬럼을&amp;nbsp;가지는&amp;nbsp;vt1&amp;nbsp;테이블을&amp;nbsp;생성합니다. &lt;/p&gt;
&lt;pre id=&quot;code_1629985342275&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE vt1
( col1 NUMBER ,
  col2 NUMBER ,
  col3 NUMBER GENERATED ALWAYS AS (col1 + col2)
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;2-2&amp;nbsp;:&amp;nbsp;vt테이블에&amp;nbsp;데이터를&amp;nbsp;입력합니다. &lt;/p&gt;
&lt;pre id=&quot;code_1629985347455&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT INTO vt1 values(1, 2, 3);
SQL Error [54013] [99999]: ORA-54013: INSERT operation disallowed on virtual columns&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;가상컬럼에는&amp;nbsp;사용자가&amp;nbsp;데이터를&amp;nbsp;입력할&amp;nbsp;수&amp;nbsp;없습니다. &lt;br /&gt;&lt;br /&gt;2-3&amp;nbsp;:&amp;nbsp;입력된&amp;nbsp;데이터를&amp;nbsp;조회합니다. &lt;/p&gt;
&lt;pre id=&quot;code_1629985351384&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM vt1;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;2-4&amp;nbsp;:&amp;nbsp;기존&amp;nbsp;값을&amp;nbsp;변경한&amp;nbsp;후&amp;nbsp;가상&amp;nbsp;컬럼에&amp;nbsp;반영되는지&amp;nbsp;확인 &lt;/p&gt;
&lt;pre id=&quot;code_1629985357772&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;UPDATE vt1 SET col1 = 5;
SELECT * FROM vt1;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;테스트&amp;nbsp;결과&amp;nbsp;기존&amp;nbsp;컬럼의&amp;nbsp;값이&amp;nbsp;변경될&amp;nbsp;경우&amp;nbsp;즉시&amp;nbsp;가상&amp;nbsp;컬럼에도&amp;nbsp;반영된다는&amp;nbsp;것을&amp;nbsp;알&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;2-5&amp;nbsp;:&amp;nbsp;새로운&amp;nbsp;가상&amp;nbsp;컬럼을&amp;nbsp;추가 &lt;/p&gt;
&lt;pre id=&quot;code_1629985363265&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ALTER TABLE vt1 ADD (col4 GENERATED ALWAYS AS ((COL1*12)+COL2));&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;2-6&amp;nbsp;:&amp;nbsp;테이블에서&amp;nbsp;가상&amp;nbsp;컬럼&amp;nbsp;내역을&amp;nbsp;조회 &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1629985369017&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT COLUMN_NAME, DATA_TYPE, DATA_DEFAULT 
FROM USER_TAB_COLUMNS 
WHERE TABLE_NAME = 'VT1'
ORDER BY COLUMN_ID&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;2-7&amp;nbsp;:&amp;nbsp;조건절을&amp;nbsp;활용한&amp;nbsp;가상&amp;nbsp;컬럼&amp;nbsp;생성하기 &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1629985376624&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE sales10
( no NUMBER,
pcode CHAR(4),
pdate CHAR(8),
pqty NUMBER,
pbungi NUMBER(1),
GENERATED ALWAYS AS
(
CASE 
WHEN SUBSTR(PDATE, 5 ,2) IN ('01', '02', '03') THEN 1
WHEN SUBSTR(PDATE, 5 ,2) IN ('04', '05', '06') THEN 2
WHEN SUBSTR(PDATE, 5 ,2) IN ('07', '08', '09') THEN 3
ELSE 4
END ) virtual );


INSERT INTO sales10 (no, pcode, pdate, pqty) VALUES(1, '100', '20110112', 10);
INSERT INTO sales10 (no, pcode, pdate, pqty) VALUES(2, '200', '20110505', 20);
INSERT INTO sales10 (no, pcode, pdate, pqty) VALUES(3, '300', '20110812', 30);
INSERT INTO sales10 (no, pcode, pdate, pqty) VALUES(4, '400', '20111024', 40);

COMMIT;

SELECT * FROM sales10;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>데이터베이스/Oracle SQL</category>
      <category>delete</category>
      <category>delete truncate drop 차이</category>
      <category>drop</category>
      <category>oracle read only</category>
      <category>TRUNCATE</category>
      <category>가상컬럼</category>
      <category>가상컬럼테이블</category>
      <category>가상테이블</category>
      <category>오라클 11g</category>
      <category>오라클 읽기전용</category>
      <author>동띠기</author>
      <guid isPermaLink="true">https://ms-record.tistory.com/123</guid>
      <comments>https://ms-record.tistory.com/123#entry123comment</comments>
      <pubDate>Thu, 26 Aug 2021 22:44:45 +0900</pubDate>
    </item>
    <item>
      <title>오라클 SQL과 PL/SQL ( ALTER / TRUNCATE / DROP )</title>
      <link>https://ms-record.tistory.com/122</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;ALTER&amp;nbsp;명렁&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;ALTER&amp;nbsp;명령어는&amp;nbsp;만들어져&amp;nbsp;있는&amp;nbsp;오브젝트를&amp;nbsp;변경하는&amp;nbsp;명령어&amp;nbsp;입니다. &lt;br /&gt;즉&amp;nbsp;,&amp;nbsp;테이블&amp;nbsp;같은&amp;nbsp;경우에는&amp;nbsp;컬럼을&amp;nbsp;추가,삭제,&amp;nbsp;이름을&amp;nbsp;바꾸는&amp;nbsp;작업을&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있는데&amp;nbsp;이&amp;nbsp;명령어는&amp;nbsp;부하가&amp;nbsp;많이&amp;nbsp;걸리는&amp;nbsp;명령어이므로&amp;nbsp;사용량&amp;nbsp;많은&amp;nbsp;시간에&amp;nbsp;수행하는&amp;nbsp;것은&amp;nbsp;위험합니다. &lt;/p&gt;
&lt;pre id=&quot;code_1629899265529&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE DEPT6 
AS
	SELECT DCODE, DNAME
	FROM DEPT2 
	WHERE DCODE IN(1000, 1001, 1002);

SELECT * FROM dept6;

ALTER TABLE DEPT6 ADD(LOC VARCHAR(10));

SELECT * FROM DEPT6&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;295&quot; data-origin-height=&quot;421&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTCK05/btrdffcIONl/dldM1mRjNfMRbMalimeJm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTCK05/btrdffcIONl/dldM1mRjNfMRbMalimeJm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTCK05/btrdffcIONl/dldM1mRjNfMRbMalimeJm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTCK05%2FbtrdffcIONl%2FdldM1mRjNfMRbMalimeJm1%2Fimg.png&quot; data-origin-width=&quot;295&quot; data-origin-height=&quot;421&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제부터&amp;nbsp;장소명을&amp;nbsp;가지는&amp;nbsp;LOC&amp;nbsp;컬럼을&amp;nbsp;추가하겠습니다.&amp;nbsp; &lt;br /&gt;LOC컬럼을&amp;nbsp;확인해&amp;nbsp;보니&amp;nbsp;모두&amp;nbsp;기본값으로&amp;nbsp;NULL값이&amp;nbsp;입력되어&amp;nbsp;있습니다. &lt;br /&gt;새로추가&amp;nbsp;되는&amp;nbsp;컬럼에&amp;nbsp;기본값입력을&amp;nbsp;하고&amp;nbsp;싶으면&amp;nbsp;DEFAULT&amp;nbsp;값을&amp;nbsp;지정하면&amp;nbsp;됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1629899318373&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ALTER TABLE DEPT6 ADD(LOC VARCHAR(10) DEFAULT 'SEOUL');&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;495&quot; data-origin-height=&quot;94&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lZeob/btrdcO1e5aD/sU3510Dl0dewskW9pQXje0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lZeob/btrdcO1e5aD/sU3510Dl0dewskW9pQXje0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lZeob/btrdcO1e5aD/sU3510Dl0dewskW9pQXje0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlZeob%2FbtrdcO1e5aD%2FsU3510Dl0dewskW9pQXje0%2Fimg.png&quot; data-origin-width=&quot;495&quot; data-origin-height=&quot;94&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;테이블의&amp;nbsp;컬럼&amp;nbsp;이름&amp;nbsp;변경하기&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;DEPT6&amp;nbsp;테이블의&amp;nbsp;LOCATION&amp;nbsp;컬럼을&amp;nbsp;LOCA로&amp;nbsp;이름을&amp;nbsp;변경하겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1629899333247&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ALTER TABLE DEPT6 RENAME COLUMN LOCATION TO LOCA;
RENAME DEPT6 TO DEPT7;

SELECT * FROM DEPT7&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;472&quot; data-origin-height=&quot;88&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLW88R/btrdcRX5uK5/66kgPoCrJeGlAjxibKykmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLW88R/btrdcRX5uK5/66kgPoCrJeGlAjxibKykmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLW88R/btrdcRX5uK5/66kgPoCrJeGlAjxibKykmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLW88R%2FbtrdcRX5uK5%2F66kgPoCrJeGlAjxibKykmK%2Fimg.png&quot; data-origin-width=&quot;472&quot; data-origin-height=&quot;88&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;컬럼의&amp;nbsp;데이터&amp;nbsp;크기&amp;nbsp;변경하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1629899354396&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ALTER TABLE DEPT7 MODIFY(LOCA VARCHAR2(20));&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;컬럼&amp;nbsp;삭제하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1629899367195&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ALTER TABLE DEPT7 DROP COLUMN LOCA;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위&amp;nbsp;명령으로&amp;nbsp;삭제하면&amp;nbsp;됩니다.&amp;nbsp;만약&amp;nbsp;참조키로&amp;nbsp;설정되어&amp;nbsp;있는&amp;nbsp;부모&amp;nbsp;테이블의&amp;nbsp;컬럼을&amp;nbsp;삭제하려&amp;nbsp;할&amp;nbsp;경우&amp;nbsp;에러가&amp;nbsp;발생하는데&amp;nbsp;아래와&amp;nbsp;같은&amp;nbsp;방법으로&amp;nbsp;지우면&amp;nbsp;됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1629899380372&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ALTER TABLE DEPT7 DROP COLUMN LOCA CASCADE CONSTRAINTS;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;TRUNCATE&amp;nbsp;명령&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;TRUNCATE&amp;nbsp;명령은&amp;nbsp;테이블의&amp;nbsp;데이터를&amp;nbsp;전부&amp;nbsp;삭제하고&amp;nbsp;사용하고&amp;nbsp;있던&amp;nbsp;공간을&amp;nbsp;반납하는&amp;nbsp;명령어입니다.&amp;nbsp;이&amp;nbsp;명령어를&amp;nbsp;수행하면&amp;nbsp;해당&amp;nbsp;테이블의&amp;nbsp;데이터가&amp;nbsp;모두&amp;nbsp;삭제되지만&amp;nbsp;테이블&amp;nbsp;자체가&amp;nbsp;지워지는&amp;nbsp;것은&amp;nbsp;아닙니다. &lt;br /&gt;또한&amp;nbsp;해당&amp;nbsp;테이블에&amp;nbsp;생성되어&amp;nbsp;있던&amp;nbsp;인덱스의&amp;nbsp;내용도&amp;nbsp;함께&amp;nbsp;TRUNCATE&amp;nbsp;됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1629899394121&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;TRUNCATE TABLE DEPT7;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;DROP&amp;nbsp;명령&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;이&amp;nbsp;명령은&amp;nbsp;테이블&amp;nbsp;자체를&amp;nbsp;삭제하는&amp;nbsp;명령어&amp;nbsp;입니다.&amp;nbsp;이&amp;nbsp;명령어는&amp;nbsp;수행하면&amp;nbsp;테이블자체가&amp;nbsp;모두&amp;nbsp;지워지며&amp;nbsp;해당&amp;nbsp;테이블에&amp;nbsp;생성되어&amp;nbsp;있던&amp;nbsp;인덱스&amp;nbsp;또한&amp;nbsp;함께&amp;nbsp;삭제됩니다. &lt;/p&gt;
&lt;pre id=&quot;code_1629899405588&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DROP TABLE DEPT7;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;오라클&amp;nbsp;10g부터는&amp;nbsp;drop&amp;nbsp;명령어로&amp;nbsp;삭제할&amp;nbsp;경우&amp;nbsp;삭제되는&amp;nbsp;것이&amp;nbsp;아니라&amp;nbsp;휴지통으로&amp;nbsp;가는거&amp;nbsp;처럼&amp;nbsp;휴지통으로&amp;nbsp;보내지게&amp;nbsp;됩니다.&amp;nbsp;그리고&amp;nbsp;삭제된&amp;nbsp;테이블의&amp;nbsp;이름은&amp;nbsp;BIN$...로&amp;nbsp;변경됩니다. &lt;br /&gt;이&amp;nbsp;기능은&amp;nbsp;10g에서&amp;nbsp;아주&amp;nbsp;막강하게&amp;nbsp;성능을&amp;nbsp;발휘하는&amp;nbsp;FLASHBACK&amp;nbsp;TABLE이라는&amp;nbsp;기능을&amp;nbsp;구현하기&amp;nbsp;위함&amp;nbsp;입니다. &lt;/p&gt;</description>
      <category>데이터베이스/Oracle SQL</category>
      <category>ALTER</category>
      <category>DEFAULT</category>
      <category>drop</category>
      <category>FLASHBACK TABLE</category>
      <category>modify</category>
      <category>rename</category>
      <category>TRUNCATE</category>
      <category>오라클 DDL</category>
      <category>오라클 데이터크기 변경</category>
      <category>오라클 컬럼이름 변경</category>
      <author>동띠기</author>
      <guid isPermaLink="true">https://ms-record.tistory.com/122</guid>
      <comments>https://ms-record.tistory.com/122#entry122comment</comments>
      <pubDate>Wed, 25 Aug 2021 22:52:27 +0900</pubDate>
    </item>
    <item>
      <title>오라클 SQL과 PL/SQL ( DDL - CREATE )</title>
      <link>https://ms-record.tistory.com/121</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;DDL&amp;nbsp;명령과&amp;nbsp;딕셔너리&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;사람이&amp;nbsp;사용하는&amp;nbsp;다양한&amp;nbsp;말들이&amp;nbsp;여러가지&amp;nbsp;품사로&amp;nbsp;구분되는&amp;nbsp;것&amp;nbsp;처럼&amp;nbsp;오라클에서&amp;nbsp;사용하는&amp;nbsp;다양한&amp;nbsp;명령어들도&amp;nbsp;아래와&amp;nbsp;같이&amp;nbsp;구분이&amp;nbsp;됩니다. &lt;br /&gt;&lt;br /&gt;DDL&amp;nbsp;:&amp;nbsp;CREATE(생성)&amp;nbsp;,&amp;nbsp;ARTER(수정),&amp;nbsp;TRUNCATE(잘라내기),&amp;nbsp;DROP(삭제) &lt;br /&gt;DML&amp;nbsp;:&amp;nbsp;INSERT(입력),&amp;nbsp;UPDATE(변경)&amp;nbsp;,&amp;nbsp;DELETE(삭제)&amp;nbsp;,&amp;nbsp;MERGE(병합) &lt;br /&gt;DCL&amp;nbsp;:&amp;nbsp;GRANT(권한&amp;nbsp;주기)&amp;nbsp;,&amp;nbsp;REVOKE&amp;nbsp;(권한&amp;nbsp;뺏기) &lt;br /&gt;TCL&amp;nbsp;:&amp;nbsp;COMMIT(확정),&amp;nbsp;ROLLBACK(취소) &lt;br /&gt;SELECT&amp;nbsp;:&amp;nbsp;어떤&amp;nbsp;분류에서는&amp;nbsp;DQL&amp;nbsp;이라고&amp;nbsp;하기도&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;이러한&amp;nbsp;명령어들을&amp;nbsp;이용하여&amp;nbsp;데이터를&amp;nbsp;관리하는&amp;nbsp;것입니다. &lt;br /&gt;오라클&amp;nbsp;데이터베이스&amp;nbsp;내부에&amp;nbsp;데이터를&amp;nbsp;관리하기&amp;nbsp;위해&amp;nbsp;다양한&amp;nbsp;저장&amp;nbsp;객체를&amp;nbsp;생성하게&amp;nbsp;되는데&amp;nbsp;이것을&amp;nbsp;오브젝트라고&amp;nbsp;부르고&amp;nbsp;오브젝트&amp;nbsp;중에&amp;nbsp;특별한&amp;nbsp;데이터를&amp;nbsp;저장하기&amp;nbsp;위한&amp;nbsp;별도의&amp;nbsp;저장공간을&amp;nbsp;세그먼트&amp;nbsp;라고&amp;nbsp;부릅니다. &lt;br /&gt;쉽게&amp;nbsp;이야기&amp;nbsp;하면&amp;nbsp;데이터베이스라는&amp;nbsp;커다란&amp;nbsp;창고안에&amp;nbsp;오브젝트나&amp;nbsp;세그먼트라는&amp;nbsp;통에&amp;nbsp;물건을&amp;nbsp;담아두면&amp;nbsp;된다고&amp;nbsp;생각하면&amp;nbsp;됩니다. &lt;br /&gt;이런&amp;nbsp;오브젝트를&amp;nbsp;생성,&amp;nbsp;변경,&amp;nbsp;관리하는&amp;nbsp;명령어&amp;nbsp;DDL에&amp;nbsp;대해서&amp;nbsp;살펴보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CREATE - 새로 생성하라&lt;br /&gt;이&amp;nbsp;명령은&amp;nbsp;새로운&amp;nbsp;오브젝트나&amp;nbsp;스키마를&amp;nbsp;생성할&amp;nbsp;떄&amp;nbsp;사용하는&amp;nbsp;명령어&amp;nbsp;입니다. &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;일반&amp;nbsp;테이블&amp;nbsp;생성하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1629722178776&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE new_table ( no NUMBER(3), name VARCHAR2(10), birth DATE );&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1)&amp;nbsp;위&amp;nbsp;SQL은&amp;nbsp;new_table라는&amp;nbsp;이름의&amp;nbsp;테이블을&amp;nbsp;생성합니다. &lt;br /&gt;2)&amp;nbsp;no라는&amp;nbsp;컬럼은&amp;nbsp;숫자&amp;nbsp;데이터만&amp;nbsp;들어갈&amp;nbsp;수&amp;nbsp;있으며&amp;nbsp;최대&amp;nbsp;길이는&amp;nbsp;3자리&amp;nbsp;까지&amp;nbsp;입니다. &lt;br /&gt;3)&amp;nbsp;name&amp;nbsp;컬럼은&amp;nbsp;가변형&amp;nbsp;문자가&amp;nbsp;들어갈&amp;nbsp;수&amp;nbsp;있으며&amp;nbsp;최대&amp;nbsp;길이는&amp;nbsp;10바이트&amp;nbsp;까지&amp;nbsp;입니다. &lt;br /&gt;4)&amp;nbsp;birth&amp;nbsp;컬럼은&amp;nbsp;날짜&amp;nbsp;데이터만&amp;nbsp;들어갈&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금은&amp;nbsp;사용자가&amp;nbsp;값을&amp;nbsp;입력하지&amp;nbsp;않을&amp;nbsp;경우&amp;nbsp;기본적으로&amp;nbsp;NULL값이&amp;nbsp;자동으로&amp;nbsp;입력됩니다. &lt;br /&gt;하지만&amp;nbsp;NULL값은&amp;nbsp;좋지&amp;nbsp;않음으로&amp;nbsp;사용자가&amp;nbsp;값을&amp;nbsp;입력하지&amp;nbsp;않을&amp;nbsp;경우&amp;nbsp;NULL&amp;nbsp;값&amp;nbsp;외에&amp;nbsp;다른&amp;nbsp;특정한&amp;nbsp;값을&amp;nbsp;저장하면서&amp;nbsp;생성하는&amp;nbsp;방법을&amp;nbsp;알아보겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1629722194581&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE tt02 ( no NUMBER(3, 1) DEFAULT 0, name VARCHAR2(10) DEFAULT 'No Name', hiredate DATE DEFAULT SYSDATE );&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 sql을 보면 DEFAULT 라는단어를 볼 수 있는데 사용자가 값을 입력하지 않을 경우 DEFAULT 뒤에 적힌 값을 자동으로 넣으라는 의미입니다. 한번&amp;nbsp;확인해&amp;nbsp;보겟습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1629722212227&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT INTO tt02 (no) VALUES(1);
SELECT * FROM tt02;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;INSERT&amp;nbsp;명령으로&amp;nbsp;no컬럼에만&amp;nbsp;1을&amp;nbsp;입력한&amp;nbsp;후&amp;nbsp;tt02&amp;nbsp;테이블을&amp;nbsp;SELECT하니까&amp;nbsp;나머지&amp;nbsp;컬럼에도&amp;nbsp;테이블&amp;nbsp;생성&amp;nbsp;시에&amp;nbsp;DEFAULT뒤에&amp;nbsp;지정했던&amp;nbsp;값이&amp;nbsp;들어가&amp;nbsp;있는&amp;nbsp;것이&amp;nbsp;확인됩니다. &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;한글&amp;nbsp;이름으로&amp;nbsp;테이블&amp;nbsp;생성하기.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1629722225835&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE 한글테이블 ( 컬럼1 NUMBER, 컬럼2 VARCHAR2(10), 컬럼3 DATE );&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한글로도&amp;nbsp;테이블이나&amp;nbsp;컬럼이름이&amp;nbsp;한글로&amp;nbsp;가능합니다.&amp;nbsp;하지만&amp;nbsp;실제&amp;nbsp;사용할&amp;nbsp;때&amp;nbsp;테이블&amp;nbsp;이름이나&amp;nbsp;컬럼&amp;nbsp;이름이&amp;nbsp;한글일&amp;nbsp;경우&amp;nbsp;불편함이&amp;nbsp;있으니&amp;nbsp;잘&amp;nbsp;고려한&amp;nbsp;후&amp;nbsp;사용하기&amp;nbsp;바랍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;테이블&amp;nbsp;생성할때&amp;nbsp;제한사항&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;1.&amp;nbsp;테이블&amp;nbsp;이름은&amp;nbsp;반드시&amp;nbsp;문자로&amp;nbsp;시작해야&amp;nbsp;합니다.&amp;nbsp;숫자로&amp;nbsp;시작할&amp;nbsp;수&amp;nbsp;없고&amp;nbsp;숫자가&amp;nbsp;포함되는&amp;nbsp;것은&amp;nbsp;가능합니다.&amp;nbsp;특수문자도&amp;nbsp;가능하지만&amp;nbsp;테이블&amp;nbsp;생성&amp;nbsp;시&amp;nbsp;&quot;&quot;&amp;nbsp;큰따옴표로&amp;nbsp;감싸야&amp;nbsp;하며&amp;nbsp;권장하지&amp;nbsp;않습니다. &lt;br /&gt;2.&amp;nbsp;테이블이름이나&amp;nbsp;컬럼이름은&amp;nbsp;최대&amp;nbsp;30바이트&amp;nbsp;까지&amp;nbsp;가능합니다.&amp;nbsp;한글은&amp;nbsp;15글자까지&amp;nbsp;가능합니다.(1글자&amp;nbsp;2바이트) &lt;br /&gt;3.&amp;nbsp;테이블&amp;nbsp;이름은&amp;nbsp;한&amp;nbsp;명의&amp;nbsp;사용자가&amp;nbsp;다른&amp;nbsp;오브젝트의&amp;nbsp;이름과&amp;nbsp;중복으로&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;없습니다.&amp;nbsp;예를&amp;nbsp;들어&amp;nbsp;scott사용자가&amp;nbsp;테이블명을&amp;nbsp;test로&amp;nbsp;생성한&amp;nbsp;후&amp;nbsp;다른&amp;nbsp;테이블&amp;nbsp;이름을&amp;nbsp;test로&amp;nbsp;동일하게&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;없다는&amp;nbsp;것입니다. &lt;br /&gt;그러나&amp;nbsp;scott&amp;nbsp;사용자가&amp;nbsp;test테이블을&amp;nbsp;만들어도&amp;nbsp;다른&amp;nbsp;사용자인&amp;nbsp;hr사용자는&amp;nbsp;test라는&amp;nbsp;테이블&amp;nbsp;이름을&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;4.&amp;nbsp;테이블이름,&amp;nbsp;오브젝트&amp;nbsp;이름을&amp;nbsp;오라클이&amp;nbsp;사용하는&amp;nbsp;키워드를&amp;nbsp;사용하지&amp;nbsp;않기&amp;nbsp;권장합니다.&amp;nbsp;오라클에서&amp;nbsp;미리&amp;nbsp;정해진&amp;nbsp;SELECT,&amp;nbsp;FROM&amp;nbsp;등과&amp;nbsp;같은&amp;nbsp;단어를&amp;nbsp;말합니다.&amp;nbsp;생성이&amp;nbsp;안되는건&amp;nbsp;아니지만&amp;nbsp;사용&amp;nbsp;시에&amp;nbsp;아주&amp;nbsp;불편하고&amp;nbsp;위험&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;</description>
      <category>데이터베이스/Oracle SQL</category>
      <category>Create</category>
      <category>create table</category>
      <category>CREATE 한글</category>
      <category>DCL</category>
      <category>DDL</category>
      <category>DML</category>
      <category>dql</category>
      <category>ORACLE CREATE</category>
      <category>TCL</category>
      <category>한글테이블</category>
      <author>동띠기</author>
      <guid isPermaLink="true">https://ms-record.tistory.com/121</guid>
      <comments>https://ms-record.tistory.com/121#entry121comment</comments>
      <pubDate>Mon, 23 Aug 2021 21:39:14 +0900</pubDate>
    </item>
    <item>
      <title>오라클 SQL과 PL/SQL ( JOIN 연습문제 - 2 )</title>
      <link>https://ms-record.tistory.com/120</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1. customer 테이블과 gift테이블을 join하여 고객이 자기 포인트보다 낮은 포인트의 상품 중 한 가지를 선택할 수 있다고 할 때 notebook을 선택할 수 있는 고객명과 포인트, 상품명을 출력하세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;325&quot; data-origin-height=&quot;97&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7hK3p/btrcGpUKLyv/nksuKJxSSAztlk7CdjcDk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7hK3p/btrcGpUKLyv/nksuKJxSSAztlk7CdjcDk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7hK3p/btrcGpUKLyv/nksuKJxSSAztlk7CdjcDk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7hK3p%2FbtrcGpUKLyv%2FnksuKJxSSAztlk7CdjcDk0%2Fimg.png&quot; data-origin-width=&quot;325&quot; data-origin-height=&quot;97&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1629384362726&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT C.GNAME, C.POINT, G.GNAME
FROM CUSTOMER C, GIFT G
WHERE C.POINT &amp;gt;= G.G_START
AND G.GNAME = 'Notebook'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. PROFESSOR 테이블에서 교수의 번호, 교수 이름, 입사일, 자신보다 입사일 빠른 사람 인원수를 출력하세요. &lt;br /&gt;단&amp;nbsp;자신보다&amp;nbsp;입사일이&amp;nbsp;빠른&amp;nbsp;사람&amp;nbsp;수를&amp;nbsp;오름차순으로&amp;nbsp;출력하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1629384564585&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT P1.PROFNO, P1.NAME, TO_CHAR(P1.HIREDATE, 'YYYY/MM/DD') HIREDATE, COUNT(NVL2(P2.PROFNO, P1.PROFNO, NULL)) COUNT
FROM PROFESSOR P1, PROFESSOR P2
WHERE P1.HIREDATE &amp;gt; P2.HIREDATE(+)
GROUP BY P1.PROFNO, P1.NAME, P1.HIREDATE
ORDER BY COUNT ASC&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;341&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLKSLo/btrcGpmVqx4/qaSt6PjhMvdFSKTUaA1xYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLKSLo/btrcGpmVqx4/qaSt6PjhMvdFSKTUaA1xYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLKSLo/btrcGpmVqx4/qaSt6PjhMvdFSKTUaA1xYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLKSLo%2FbtrcGpmVqx4%2FqaSt6PjhMvdFSKTUaA1xYK%2Fimg.png&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;341&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. EMP&amp;nbsp;테이블에서&amp;nbsp;사원번호,&amp;nbsp;사원이름,&amp;nbsp;입사일,&amp;nbsp;자신보다&amp;nbsp;먼저&amp;nbsp;입사한&amp;nbsp;사람&amp;nbsp;인원수를&amp;nbsp;출력하세요.&lt;/p&gt;
&lt;pre id=&quot;code_1629385400679&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT E1.EMPNO, E1.ENAME, TO_CHAR(E1.HIREDATE, 'YY/MM/DD') AS HIREDATE, COUNT(NVL2(E2.EMPNO, E1.EMPNO, NULL)) COUNT
FROM EMP E1, EMP E2
WHERE E1.HIREDATE &amp;gt; E2.HIREDATE(+)
GROUP BY E1.EMPNO, E1.ENAME, E1.HIREDATE
ORDER BY COUNT ASC;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;286&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/udjaA/btrcIV6Diih/1w6jsIvbWt7bBxXbu4amh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/udjaA/btrcIV6Diih/1w6jsIvbWt7bBxXbu4amh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/udjaA/btrcIV6Diih/1w6jsIvbWt7bBxXbu4amh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FudjaA%2FbtrcIV6Diih%2F1w6jsIvbWt7bBxXbu4amh0%2Fimg.png&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;286&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>데이터베이스/Oracle SQL</category>
      <category>JOIN 연습문제</category>
      <category>Oracle</category>
      <category>oracle join</category>
      <category>오라클</category>
      <category>오라클 SQL과 PL/SQL</category>
      <category>오라클 SQL과 PL/SQL 4장</category>
      <category>오라클 SQL과 PL/SQL JOIN</category>
      <category>오라클 SQL과 PL/SQL 연습문제</category>
      <category>오라클 조인</category>
      <category>조인 연습문제</category>
      <author>동띠기</author>
      <guid isPermaLink="true">https://ms-record.tistory.com/120</guid>
      <comments>https://ms-record.tistory.com/120#entry120comment</comments>
      <pubDate>Fri, 20 Aug 2021 00:04:23 +0900</pubDate>
    </item>
    <item>
      <title>오라클 SQL과 PL/SQL ( JOIN 연습문제 - 1 )</title>
      <link>https://ms-record.tistory.com/119</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1. 학생테이블과 학과 테이블을 사용하여 학생이름, 1전공 학과 번호, 1전공 학과 이름을 출력하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단 ANSI / ORACLE 두 방법 모두 작성하세요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1629280780560&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ORACLE

SELECT S.NAME STU_NAME, S.DEPTNO1 DEPTNO1, D.DNAME DEPT_NAME
FROM STUDENT S, DEPARTMENT D
WHERE S.DEPTNO1 = D.DEPTNO

ANSI

SELECT S.NAME STU_NAME, S.DEPTNO1 DEPTNO1, D.DNAME DEPT_NAME
FROM STUDENT S LEFT OUTER JOIN DEPARTMENT D
ON S.DEPTNO1 = D.DEPTNO&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;414&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmkguh/btrczIUpbVx/8wnfQYXEMwMMReK2aPkG3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmkguh/btrczIUpbVx/8wnfQYXEMwMMReK2aPkG3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmkguh/btrczIUpbVx/8wnfQYXEMwMMReK2aPkG3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbmkguh%2FbtrczIUpbVx%2F8wnfQYXEMwMMReK2aPkG3k%2Fimg.png&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;414&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. EMP2 테이블과 P_GRADE 테이블을 조회하여 현재 직급이 있는 사원의 이름과 직급, 현재 연봉, 해당 직급의 연봉의 하한 금액과 상한 금액을 출력하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1629281240424&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ORACLE

SELECT E.NAME, E.POSITION, E.PAY, PG.S_PAY, PG.E_PAY
FROM EMP2 E, P_GRADE PG
WHERE E.POSITION = PG.POSITION

ANSI

SELECT E.NAME, E.POSITION, E.PAY, PG.S_PAY, PG.E_PAY
FROM EMP2 E JOIN P_GRADE PG
ON E.POSITION = PG.POSITION&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;205&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bB431B/btrcxIUWypV/JGCdKrKMtnFAg59WBm9lP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bB431B/btrcxIUWypV/JGCdKrKMtnFAg59WBm9lP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bB431B/btrcxIUWypV/JGCdKrKMtnFAg59WBm9lP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbB431B%2FbtrcxIUWypV%2FJGCdKrKMtnFAg59WBm9lP1%2Fimg.png&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;205&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. EMP2 테이블과 P_GRADE 테이블을 조회하여 사원들의 이름과 나이, 현재직급, 예상 직급을 출력하세요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예상 직급은 나이로 계산하며 해당 나이가 받아야 하는 직급을 의미합니다. 나이는 오늘을 기준으로 하되 소수점 이하는 절삭해서 계산하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1629286980081&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT 
		E.NAME NAME
	, 	TRUNC((SYSDATE - E.BIRTHDAY)/365) + 1  AGE
	, 	E.POSITION CURR_POSITION
	, 	PG.POSITION
FROM EMP2 E, P_GRADE PG
WHERE TRUNC((SYSDATE - E.BIRTHDAY)/365, 0) BETWEEN PG.S_AGE(+) AND PG.E_AGE(+)
ORDER BY AGE&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;421&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dW6aKM/btrcvyd3KJS/BZiCMexHR0Cbn4peiMpKCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dW6aKM/btrcvyd3KJS/BZiCMexHR0Cbn4peiMpKCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dW6aKM/btrcvyd3KJS/BZiCMexHR0Cbn4peiMpKCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdW6aKM%2Fbtrcvyd3KJS%2FBZiCMexHR0Cbn4peiMpKCk%2Fimg.png&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;421&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>데이터베이스/Oracle SQL</category>
      <category>JOIN 연습문제</category>
      <category>Oracle</category>
      <category>oracle join</category>
      <category>오라클</category>
      <category>오라클 SQL과 PL/SQL</category>
      <category>오라클 SQL과 PL/SQL 4장</category>
      <category>오라클 SQL과 PL/SQL JOIN</category>
      <category>오라클 SQL과 PL/SQL 연습문제</category>
      <category>오라클 조인</category>
      <category>조인 연습문제</category>
      <author>동띠기</author>
      <guid isPermaLink="true">https://ms-record.tistory.com/119</guid>
      <comments>https://ms-record.tistory.com/119#entry119comment</comments>
      <pubDate>Wed, 18 Aug 2021 20:46:54 +0900</pubDate>
    </item>
    <item>
      <title>오라클 SQL과 PL/SQL ( OUTER JOIN 주의사항 / SELF JOIN )</title>
      <link>https://ms-record.tistory.com/118</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;ORACLE&amp;nbsp;OUTER&amp;nbsp;JOIN&amp;nbsp;주의사항&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;오라클&amp;nbsp;아우터&amp;nbsp;조인은&amp;nbsp;WHERE절의&amp;nbsp;아우터&amp;nbsp;조인이&amp;nbsp;되는&amp;nbsp;컬럼들에&amp;nbsp;대해서는&amp;nbsp;전부&amp;nbsp;아우터&amp;nbsp;조인&amp;nbsp;연산자(+)를&amp;nbsp;붙여야&amp;nbsp;합니다. &lt;br /&gt;만약&amp;nbsp;하나라도&amp;nbsp;빠진다면&amp;nbsp;결과는&amp;nbsp;일반&amp;nbsp;조인과&amp;nbsp;동일하게&amp;nbsp;되어&amp;nbsp;원하지&amp;nbsp;않는&amp;nbsp;데이터를&amp;nbsp;추출하게&amp;nbsp;됩니다. &lt;br /&gt;&lt;br /&gt;만약 부서에 대한 정보를 모두 보여주고 부서 번호가 20인 사원의 사원번호 이름 급여를 보여주는 예제를 본다면&lt;br /&gt;사원&amp;nbsp;테이블의&amp;nbsp;조인&amp;nbsp;유무와&amp;nbsp;상관없이&amp;nbsp;부서정보를&amp;nbsp;보여주기&amp;nbsp;위해서는&amp;nbsp;아우터&amp;nbsp;조인을&amp;nbsp;사용해야&amp;nbsp;합니다. &lt;br /&gt;기준이&amp;nbsp;되는&amp;nbsp;테이블이&amp;nbsp;부서&amp;nbsp;테이블이므로&amp;nbsp;WHERE절에&amp;nbsp;사원테이블의&amp;nbsp;모든&amp;nbsp;컬럼에&amp;nbsp;아우터&amp;nbsp;조인&amp;nbsp;연산자를&amp;nbsp;붙입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1629213498070&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT D.DEPTNO, D.DNAME, D.LOC, E.EMPNO, E.ENAME, E.SAL
FROM DEPT D, EMP E
WHERE D.DEPTNO = E.DEPTNO (+)
AND E.DEPTNO = 20;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;584&quot; data-origin-height=&quot;111&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDa6MD/btrctvt4Juj/6INB5EeJ2rjviRVBymkkf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDa6MD/btrctvt4Juj/6INB5EeJ2rjviRVBymkkf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDa6MD/btrctvt4Juj/6INB5EeJ2rjviRVBymkkf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDa6MD%2Fbtrctvt4Juj%2F6INB5EeJ2rjviRVBymkkf1%2Fimg.png&quot; data-origin-width=&quot;584&quot; data-origin-height=&quot;111&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분명&amp;nbsp;부서&amp;nbsp;정보는&amp;nbsp;다&amp;nbsp;추출하려고&amp;nbsp;했는데&amp;nbsp;부서번호가&amp;nbsp;20인&amp;nbsp;사원&amp;nbsp;테이블과&amp;nbsp;조인이되는&amp;nbsp;정보만&amp;nbsp;추출하였습니다. &lt;br /&gt;위&amp;nbsp;SQL의&amp;nbsp;문제는&amp;nbsp;WHERE조건절에서&amp;nbsp;아우터&amp;nbsp;조인이&amp;nbsp;되는&amp;nbsp;컬럼&amp;nbsp;E.DEPTNO에&amp;nbsp;(+)연산자가&amp;nbsp;빠졋다는&amp;nbsp;것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1629213517321&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT D.DEPTNO, D.DNAME, D.LOC, E.EMPNO, E.ENAME, E.SAL
FROM DEPT D, EMP E
WHERE D.DEPTNO = E.DEPTNO (+)
AND E.DEPTNO(+) = 20;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;169&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bImPxu/btrcgPucHly/4LeaortUQePcHUA2j4ztnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bImPxu/btrcgPucHly/4LeaortUQePcHUA2j4ztnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bImPxu/btrcgPucHly/4LeaortUQePcHUA2j4ztnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbImPxu%2FbtrcgPucHly%2F4LeaortUQePcHUA2j4ztnk%2Fimg.png&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;169&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시한번&amp;nbsp;정리하면&amp;nbsp;WHERE절에&amp;nbsp;아우터&amp;nbsp;조인이&amp;nbsp;되는&amp;nbsp;컬럼들에&amp;nbsp;대해&amp;nbsp;모두&amp;nbsp;아우터&amp;nbsp;연산자&amp;nbsp;(+)를&amp;nbsp;붙여야&amp;nbsp;정확한&amp;nbsp;데이터를&amp;nbsp;추출할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;ANSI&amp;nbsp;OUTER&amp;nbsp;JOIN의&amp;nbsp;주의사항&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;직업이&amp;nbsp;CLERK인&amp;nbsp;사원의&amp;nbsp;정보(사원번호,&amp;nbsp;이름,&amp;nbsp;직업)을&amp;nbsp;출력하고&amp;nbsp;그중에&amp;nbsp;'CHICAGO'에&amp;nbsp;위치한&amp;nbsp;부서에&amp;nbsp;소속된&amp;nbsp;사원의&amp;nbsp;부서&amp;nbsp;정보(부서번호,&amp;nbsp;부서명,&amp;nbsp;위치)를&amp;nbsp;출력하세요 &lt;br /&gt;&lt;br /&gt;ANSI&amp;nbsp;아우터&amp;nbsp;조인의&amp;nbsp;LEFT&amp;nbsp;OUTER&amp;nbsp;JOIN을&amp;nbsp;사용한다면&amp;nbsp;EMP&amp;nbsp;테이블이&amp;nbsp;기준&amp;nbsp;테이블이&amp;nbsp;됨으로&amp;nbsp;FROM&amp;nbsp;EMP&amp;nbsp;E&amp;nbsp;LEFT&amp;nbsp;OUTER&amp;nbsp;JOIN&amp;nbsp;DEPT&amp;nbsp;D와&amp;nbsp;같이&amp;nbsp;사용할&amp;nbsp;것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1629213556498&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT E.EMPNO , E.ENAME , E.JOB, D.DEPTNO, D.DNAME, D.LOC
FROM EMP E LEFT OUTER JOIN DEPT D
ON E.DEPTNO = D.DEPTNO 
AND D.LOC = 'CHICAGO'
WHERE E.JOB = 'CLERK';&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;593&quot; data-origin-height=&quot;97&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O3B85/btrctuopB5y/psQhNKDouYL0aeZfeknMQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O3B85/btrctuopB5y/psQhNKDouYL0aeZfeknMQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O3B85/btrctuopB5y/psQhNKDouYL0aeZfeknMQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO3B85%2FbtrctuopB5y%2FpsQhNKDouYL0aeZfeknMQ1%2Fimg.png&quot; data-origin-width=&quot;593&quot; data-origin-height=&quot;97&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약에&amp;nbsp;WHERE절에&amp;nbsp;있는&amp;nbsp;조건을&amp;nbsp;AND로&amp;nbsp;바꿔서&amp;nbsp;ON절에&amp;nbsp;위치시킨다면&amp;nbsp;결과는&amp;nbsp;어떻게&amp;nbsp;될까요&amp;nbsp;?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1629213573514&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT E.EMPNO , E.ENAME , E.JOB, D.DEPTNO, D.DNAME, D.LOC
FROM EMP E LEFT OUTER JOIN DEPT D
ON E.DEPTNO = D.DEPTNO 
AND D.LOC = 'CHICAGO'
AND E.JOB = 'CLERK';&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;289&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FYlxk/btrcs8so0CO/vdqGCMdluwEAi0sGtLwCD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FYlxk/btrcs8so0CO/vdqGCMdluwEAi0sGtLwCD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FYlxk/btrcs8so0CO/vdqGCMdluwEAi0sGtLwCD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFYlxk%2Fbtrcs8so0CO%2FvdqGCMdluwEAi0sGtLwCD1%2Fimg.png&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;289&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ON절에&amp;nbsp;아우터&amp;nbsp;조인이&amp;nbsp;되는&amp;nbsp;조건절을&amp;nbsp;기술한다고&amp;nbsp;하였는데&amp;nbsp;기준이&amp;nbsp;되는&amp;nbsp;EMP테이블에서&amp;nbsp;조건에&amp;nbsp;맞는&amp;nbsp;집합을&amp;nbsp;추출한&amp;nbsp;후&amp;nbsp;그&amp;nbsp;중에서&amp;nbsp;OUTER조인&amp;nbsp;조건을&amp;nbsp;만족하는&amp;nbsp;집합만&amp;nbsp;아우터&amp;nbsp;조인을&amp;nbsp;하는&amp;nbsp;것입니다. &lt;br /&gt;WHERE&amp;nbsp;절에는&amp;nbsp;아무&amp;nbsp;조건이&amp;nbsp;없음으로&amp;nbsp;EMP&amp;nbsp;전체&amp;nbsp;데이터가&amp;nbsp;출력되고&amp;nbsp;그&amp;nbsp;중에서&amp;nbsp;아우터&amp;nbsp;조인&amp;nbsp;대상&amp;nbsp;집합은&amp;nbsp;E.JOB&amp;nbsp;=&amp;nbsp;'CLERK'를&amp;nbsp;만족하는&amp;nbsp;집합입니다. &lt;br /&gt;JOB이&amp;nbsp;CLERK인&amp;nbsp;사원이&amp;nbsp;소속된&amp;nbsp;부서가&amp;nbsp;CHICAGO에&amp;nbsp;위치한&amp;nbsp;사원들만&amp;nbsp;부서&amp;nbsp;정보를&amp;nbsp;보여줍니다. &lt;br /&gt;&lt;br /&gt;정리하면&amp;nbsp;ANSI&amp;nbsp;아우터&amp;nbsp;조인에서&amp;nbsp;WHERE절에&amp;nbsp;기술한&amp;nbsp;조건은&amp;nbsp;기준&amp;nbsp;테이블의&amp;nbsp;집합의&amp;nbsp;수를&amp;nbsp;결정하고&amp;nbsp;ON절에&amp;nbsp;기술한&amp;nbsp;조건은&amp;nbsp;기준&amp;nbsp;집합중에&amp;nbsp;아우터&amp;nbsp;조인&amp;nbsp;대상이&amp;nbsp;되는&amp;nbsp;집합을&amp;nbsp;말하는&amp;nbsp;것으로&amp;nbsp;전체&amp;nbsp;결과&amp;nbsp;집합에는&amp;nbsp;아무런&amp;nbsp;영향을&amp;nbsp;주지&amp;nbsp;않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;SELF&amp;nbsp;조인&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;만약&amp;nbsp;JOIN을&amp;nbsp;해야&amp;nbsp;했는데&amp;nbsp;원하는&amp;nbsp;데이터가&amp;nbsp;하나의&amp;nbsp;테이블에&amp;nbsp;다&amp;nbsp;들어&amp;nbsp;있는&amp;nbsp;경우는&amp;nbsp;어떻게&amp;nbsp;할까요&amp;nbsp;? &lt;br /&gt;&lt;br /&gt;EMP테이블의 예를 들어보겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1629213615219&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT EMPNO, ENAME, MGR FROM EMP;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;312&quot; data-origin-height=&quot;286&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnWc22/btrcoleZh2F/FYdNu3itatT8V7x5YG7kQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnWc22/btrcoleZh2F/FYdNu3itatT8V7x5YG7kQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnWc22/btrcoleZh2F/FYdNu3itatT8V7x5YG7kQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnWc22%2FbtrcoleZh2F%2FFYdNu3itatT8V7x5YG7kQK%2Fimg.png&quot; data-origin-width=&quot;312&quot; data-origin-height=&quot;286&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EMPNO는&amp;nbsp;사원번호&amp;nbsp;MGR은&amp;nbsp;상사의&amp;nbsp;사원번호&amp;nbsp;입니다. &lt;br /&gt;출력하고&amp;nbsp;싶은&amp;nbsp;형태가&amp;nbsp;SMITH의&amp;nbsp;상사는&amp;nbsp;FORD이다&amp;nbsp;일&amp;nbsp;경우&amp;nbsp;출력에&amp;nbsp;필요한&amp;nbsp;데이터는&amp;nbsp;EMP테이블에&amp;nbsp;다&amp;nbsp;있습니다. &lt;br /&gt;이럴&amp;nbsp;경우&amp;nbsp;아주&amp;nbsp;요긴하게&amp;nbsp;사용하는&amp;nbsp;것이&amp;nbsp;SELF&amp;nbsp;조인입니다. &lt;br /&gt;&lt;br /&gt;SLEF조인의&amp;nbsp;원리는&amp;nbsp;우선&amp;nbsp;데이터를&amp;nbsp;가지고&amp;nbsp;있는&amp;nbsp;하나의&amp;nbsp;테이블을&amp;nbsp;메모리에서&amp;nbsp;별명으로&amp;nbsp;두개로&amp;nbsp;사용해서&amp;nbsp;호출하는&amp;nbsp;방법으로&amp;nbsp;2개의&amp;nbsp;테이블을&amp;nbsp;만든&amp;nbsp;후&amp;nbsp;일반적인&amp;nbsp;JOIN을&amp;nbsp;작업합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1629213637704&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ORACLE

SELECT E1.ENAME ENAME, E2.ENAME MGR_ENAME
FROM EMP E1, EMP E2
WHERE E1.MGR = E2.EMPNO;

ANSI

SELECT E1.ENAME &quot;ENAME&quot;, E2.ENAME &quot;MGR_ENAME&quot;
FROM EMP E1 JOIN EMP E2
ON E1.MGR = E2.EMPNO;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;259&quot; data-origin-height=&quot;265&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bC7Cjs/btrcrOubxF0/PdJ7S7B6FuksY1exzoj91k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bC7Cjs/btrcrOubxF0/PdJ7S7B6FuksY1exzoj91k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bC7Cjs/btrcrOubxF0/PdJ7S7B6FuksY1exzoj91k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbC7Cjs%2FbtrcrOubxF0%2FPdJ7S7B6FuksY1exzoj91k%2Fimg.png&quot; data-origin-width=&quot;259&quot; data-origin-height=&quot;265&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;위&amp;nbsp;쿼리에서&amp;nbsp;처럼&amp;nbsp;2EMP&amp;nbsp;테이블의&amp;nbsp;별명을&amp;nbsp;E1,&amp;nbsp;E2&amp;nbsp;로&amp;nbsp;두번사용하게&amp;nbsp;되면&amp;nbsp;메모리에서&amp;nbsp;오라클이&amp;nbsp;이&amp;nbsp;테이블을&amp;nbsp;별명을&amp;nbsp;다르게&amp;nbsp;해서&amp;nbsp;복사를&amp;nbsp;하게&amp;nbsp;됩니다.&lt;/p&gt;</description>
      <category>데이터베이스/Oracle SQL</category>
      <category>join 주의사항</category>
      <category>oracle outer join</category>
      <category>oracle self join</category>
      <category>OUTER JOIN</category>
      <category>self join</category>
      <category>self조인</category>
      <category>아우터조인</category>
      <category>오라클 셀프 조인</category>
      <category>오라클 아우터조인</category>
      <category>오라클 조인</category>
      <author>동띠기</author>
      <guid isPermaLink="true">https://ms-record.tistory.com/118</guid>
      <comments>https://ms-record.tistory.com/118#entry118comment</comments>
      <pubDate>Wed, 18 Aug 2021 00:22:00 +0900</pubDate>
    </item>
    <item>
      <title>오라클 SQL과 PL/SQL ( OUTER JOIN )</title>
      <link>https://ms-record.tistory.com/117</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;OUTER&amp;nbsp;JOIN&amp;nbsp;(&amp;nbsp;아우터&amp;nbsp;조인) &lt;br /&gt;&lt;br /&gt;INNER&amp;nbsp;JOIN은&amp;nbsp;모든&amp;nbsp;테이블에&amp;nbsp;데이터가&amp;nbsp;존재하는&amp;nbsp;경우에만&amp;nbsp;결과값을&amp;nbsp;출력했습니다. &lt;br /&gt;OUTER&amp;nbsp;JOIN은&amp;nbsp;INNER&amp;nbsp;JOIN과&amp;nbsp;반대로&amp;nbsp;한쪽&amp;nbsp;테이블에는&amp;nbsp;데이터가&amp;nbsp;있고&amp;nbsp;한쪽&amp;nbsp;테이블에&amp;nbsp;없는&amp;nbsp;경우에&amp;nbsp;데이터가&amp;nbsp;있는&amp;nbsp;쪽&amp;nbsp;테이블의&amp;nbsp;내용을&amp;nbsp;전부&amp;nbsp;출력하는&amp;nbsp;방법입니다. &lt;br /&gt;앞에서&amp;nbsp;살펴본&amp;nbsp;학생&amp;nbsp;테이블과&amp;nbsp;교수테이블의&amp;nbsp;예에서&amp;nbsp;학생은&amp;nbsp;있는데&amp;nbsp;지도규사가&amp;nbsp;결정이&amp;nbsp;안되었을&amp;nbsp;경우&amp;nbsp;이너조인으로는&amp;nbsp;학생이름이나&amp;nbsp;교수이름이&amp;nbsp;조회가&amp;nbsp;안되었습니다. &lt;br /&gt;반드시&amp;nbsp;지도교수가&amp;nbsp;결정되지&amp;nbsp;않은&amp;nbsp;학생의&amp;nbsp;이름이나&amp;nbsp;교수의&amp;nbsp;이름까지&amp;nbsp;다&amp;nbsp;나와야&amp;nbsp;하는&amp;nbsp;경우라면&amp;nbsp;아우터&amp;nbsp;조인을&amp;nbsp;사용하면&amp;nbsp;됩니다. &lt;br /&gt;모든&amp;nbsp;데이터를&amp;nbsp;다&amp;nbsp;출력할&amp;nbsp;수&amp;nbsp;있기&amp;nbsp;때문에&amp;nbsp;좋을&amp;nbsp;것&amp;nbsp;같지만&amp;nbsp;이&amp;nbsp;조인방식은&amp;nbsp;DB성능에&amp;nbsp;아주&amp;nbsp;나쁜&amp;nbsp;영향을&amp;nbsp;줄&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;만약&amp;nbsp;A&amp;nbsp;,&amp;nbsp;B&amp;nbsp;테이블을&amp;nbsp;조회한다고&amp;nbsp;하고&amp;nbsp;A테이블에&amp;nbsp;데이터를&amp;nbsp;다&amp;nbsp;검색하는&amp;nbsp;경우&amp;nbsp;A테이블에&amp;nbsp;인덱스가&amp;nbsp;있어도&amp;nbsp;인덱스를&amp;nbsp;쓰지&amp;nbsp;않고&amp;nbsp;FULL&amp;nbsp;SACN하기&amp;nbsp;떄문입니다. &lt;br /&gt;그리고&amp;nbsp;아우터&amp;nbsp;조인이&amp;nbsp;발생할&amp;nbsp;경우&amp;nbsp;튜닝에서&amp;nbsp;아주&amp;nbsp;중요하게&amp;nbsp;생각하는&amp;nbsp;조인&amp;nbsp;순서가&amp;nbsp;고정되어&amp;nbsp;사용자의&amp;nbsp;뜻대로&amp;nbsp;변경할&amp;nbsp;수&amp;nbsp;없기&amp;nbsp;떄문에&amp;nbsp;아주&amp;nbsp;심각한&amp;nbsp;문제를&amp;nbsp;유발할&amp;nbsp;수도&amp;nbsp;있습니다. &lt;br /&gt;그리고&amp;nbsp;아우터&amp;nbsp;조인은&amp;nbsp;오라클과&amp;nbsp;다른&amp;nbsp;구문의&amp;nbsp;차이가&amp;nbsp;있으니&amp;nbsp;주의하세요&amp;nbsp;! &lt;br /&gt;&lt;br /&gt;사용&amp;nbsp;예1.&amp;nbsp;학생&amp;nbsp;테이블과&amp;nbsp;교수&amp;nbsp;테이블을&amp;nbsp;조인하여&amp;nbsp;학생이름과&amp;nbsp;지도교수&amp;nbsp;이름을&amp;nbsp;출력하세요,&amp;nbsp;단&amp;nbsp;지도교수가&amp;nbsp;결정되지&amp;nbsp;않은&amp;nbsp;학생의&amp;nbsp;명단도&amp;nbsp;함께&amp;nbsp;출력하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1628781053359&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM STUDENT;
SELECT * FROM PROFESSOR;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1249&quot; data-origin-height=&quot;412&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yoIhj/btrbVssciHd/QKDWDAHtPedx3vJsckOFkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yoIhj/btrbVssciHd/QKDWDAHtPedx3vJsckOFkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yoIhj/btrbVssciHd/QKDWDAHtPedx3vJsckOFkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyoIhj%2FbtrbVssciHd%2FQKDWDAHtPedx3vJsckOFkK%2Fimg.png&quot; data-origin-width=&quot;1249&quot; data-origin-height=&quot;412&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;342&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/evCIAw/btrb1xMFcF2/nWkIkijxV1xQR8Ny4DiJKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/evCIAw/btrb1xMFcF2/nWkIkijxV1xQR8Ny4DiJKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/evCIAw/btrb1xMFcF2/nWkIkijxV1xQR8Ny4DiJKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FevCIAw%2Fbtrb1xMFcF2%2FnWkIkijxV1xQR8Ny4DiJKK%2Fimg.png&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;342&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1628781082106&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ORACLE

SELECT S.NAME, P.NAME
FROM STUDENT S, PROFESSOR P
WHERE S.PROFNO = P.PROFNO(+);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;241&quot; data-origin-height=&quot;412&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/epq7lb/btrbXhRjh6Z/UKjLGAl7mB2ykaEwblyKoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/epq7lb/btrbXhRjh6Z/UKjLGAl7mB2ykaEwblyKoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/epq7lb/btrbXhRjh6Z/UKjLGAl7mB2ykaEwblyKoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fepq7lb%2FbtrbXhRjh6Z%2FUKjLGAl7mB2ykaEwblyKoK%2Fimg.png&quot; data-origin-width=&quot;241&quot; data-origin-height=&quot;412&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;+기호가&amp;nbsp;보이실&amp;nbsp;겁니다.&amp;nbsp;교수번호&amp;nbsp;쪽에&amp;nbsp;+기호가있는데&amp;nbsp;학생은&amp;nbsp;존재하지만&amp;nbsp;교수가&amp;nbsp;없는&amp;nbsp;내용을&amp;nbsp;출력해야&amp;nbsp;하기에&amp;nbsp;교수&amp;nbsp;조건&amp;nbsp;쪽에&amp;nbsp;+&amp;nbsp;기호를&amp;nbsp;붙인&amp;nbsp;겁니다.&lt;/p&gt;
&lt;pre id=&quot;code_1628781100294&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ANSI

SELECT S.NAME, P.NAME
FROM STUDENT S LEFT OUTER JOIN PROFESSOR P
ON S.PROFNO = P.PROFNO;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ORACLE에서는&amp;nbsp;데이터가&amp;nbsp;없는&amp;nbsp;쪽에&amp;nbsp;+를&amp;nbsp;표시하지만&amp;nbsp;ANSI는&amp;nbsp;데이터가&amp;nbsp;존재하는&amp;nbsp;쪽에&amp;nbsp;표시를&amp;nbsp;해줍니다. &lt;br /&gt;LEFT&amp;nbsp;OUTER&amp;nbsp;JOIN이라는&amp;nbsp;구문은&amp;nbsp;데이터가&amp;nbsp;존재하는&amp;nbsp;쪽에&amp;nbsp;표시를&amp;nbsp;하기&amp;nbsp;때문에&amp;nbsp;이런&amp;nbsp;구문을&amp;nbsp;사용한&amp;nbsp;것이고&amp;nbsp;ON&amp;nbsp;조건절중에&amp;nbsp;=&amp;nbsp;기호를&amp;nbsp;기준으로&amp;nbsp;왼쪽인&amp;nbsp;학생데이터는&amp;nbsp;존재하고&amp;nbsp;교수가&amp;nbsp;없으니&amp;nbsp;왼쪽&amp;nbsp;조건에는&amp;nbsp;데이터가&amp;nbsp;있는&amp;nbsp;행을&amp;nbsp;출력하기&amp;nbsp;위해&amp;nbsp;LEFT구문을&amp;nbsp;사용한것&amp;nbsp;입니다. &lt;br /&gt;&lt;br /&gt;사용&amp;nbsp;예2.&amp;nbsp;학생테이블과&amp;nbsp;교수테이블을&amp;nbsp;조인하여&amp;nbsp;학생&amp;nbsp;이름과&amp;nbsp;지도교수&amp;nbsp;이름을&amp;nbsp;출력하세요.&amp;nbsp;단&amp;nbsp;지도학생이&amp;nbsp;결정되지&amp;nbsp;않은&amp;nbsp;교수의&amp;nbsp;명단도&amp;nbsp;함께&amp;nbsp;출력하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1628781118029&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ORACLE 

SELECT S.NAME STU , P.NAME PRO
FROM STUDENT S, PROFESSOR P
WHERE S.PROFNO(+) = P.PROFNO
ORDER BY S.NAME;

ANSI

SELECT S.NAME, P.NAME
FROM STUDENT S RIGHT OUTER JOIN PROFESSOR P
ON S.PROFNO = P.PROFNO
ORDER BY S.NAME;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;243&quot; data-origin-height=&quot;454&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGul3D/btrbZMwJoJc/JZ1w2KB3olbhyQOHzEboik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGul3D/btrbZMwJoJc/JZ1w2KB3olbhyQOHzEboik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGul3D/btrbZMwJoJc/JZ1w2KB3olbhyQOHzEboik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGul3D%2FbtrbZMwJoJc%2FJZ1w2KB3olbhyQOHzEboik%2Fimg.png&quot; data-origin-width=&quot;243&quot; data-origin-height=&quot;454&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용&amp;nbsp;예1번과&amp;nbsp;반대되는&amp;nbsp;상황입니다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;사용&amp;nbsp;예3.&amp;nbsp;학생테이블과&amp;nbsp;교수테이블을&amp;nbsp;조인하여&amp;nbsp;지도학생이&amp;nbsp;결정&amp;nbsp;안된&amp;nbsp;교수,&amp;nbsp;지도교수가&amp;nbsp;결정안된&amp;nbsp;학생명단을&amp;nbsp;한꺼번에&amp;nbsp;출력하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1628781148334&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ORACLE 

SELECT S.NAME STU , P.NAME PRO
FROM STUDENT S, PROFESSOR P
WHERE S.PROFNO(+) = P.PROFNO
UNION 
SELECT S.NAME STU , P.NAME PRO
FROM STUDENT S, PROFESSOR P
WHERE S.PROFNO = P.PROFNO(+);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;250&quot; data-origin-height=&quot;547&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LYFMh/btrbVnEIppX/623gM9VkZ8Wi5PDW4xXDn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LYFMh/btrbVnEIppX/623gM9VkZ8Wi5PDW4xXDn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LYFMh/btrbVnEIppX/623gM9VkZ8Wi5PDW4xXDn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLYFMh%2FbtrbVnEIppX%2F623gM9VkZ8Wi5PDW4xXDn1%2Fimg.png&quot; data-origin-width=&quot;250&quot; data-origin-height=&quot;547&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용&amp;nbsp;예3은&amp;nbsp;살펴본&amp;nbsp;두가지&amp;nbsp;아우터조인결과를&amp;nbsp;합쳐서&amp;nbsp;만들어야&amp;nbsp;합니다.&amp;nbsp; &lt;br /&gt;이&amp;nbsp;경우&amp;nbsp;오라클은&amp;nbsp;FULL&amp;nbsp;OUTER&amp;nbsp;JOIN을&amp;nbsp;지원하지&amp;nbsp;않습니다.&amp;nbsp;그래서&amp;nbsp;UNION을&amp;nbsp;사용하여&amp;nbsp;결과를&amp;nbsp;합쳐서&amp;nbsp;출력시키는&amp;nbsp;방법을&amp;nbsp;많이&amp;nbsp;사용합니다. &lt;br /&gt;&lt;br /&gt;ANSI는&amp;nbsp;훨씬&amp;nbsp;간단한&amp;nbsp;방법을&amp;nbsp;제공합니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1628781167514&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ANSI

SELECT S.NAME STU , P.NAME PRO
FROM STUDENT S FULL OUTER JOIN PROFESSOR P
ON S.PROFNO = P.PROFNO&lt;/code&gt;&lt;/pre&gt;</description>
      <category>데이터베이스/Oracle SQL</category>
      <category>Full Outer Join</category>
      <category>Left Outer Join</category>
      <category>Oracle</category>
      <category>oracle outer join</category>
      <category>OUTER JOIN</category>
      <category>Right Outer Join</category>
      <category>라이트 아우터 조인</category>
      <category>레프트 아우터 조인</category>
      <category>아우터조인</category>
      <category>풀 아우터 조인</category>
      <author>동띠기</author>
      <guid isPermaLink="true">https://ms-record.tistory.com/117</guid>
      <comments>https://ms-record.tistory.com/117#entry117comment</comments>
      <pubDate>Fri, 13 Aug 2021 00:13:52 +0900</pubDate>
    </item>
    <item>
      <title>오라클 SQL과 PL/SQL ( INNER JOIN - 비등가 조인 )</title>
      <link>https://ms-record.tistory.com/116</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Non-Equi&amp;nbsp;JOIN(비등가&amp;nbsp;조인) &lt;br /&gt;&lt;br /&gt;앞에서&amp;nbsp;EQUI&amp;nbsp;조인은&amp;nbsp;조인&amp;nbsp;조건절에&amp;nbsp;조건을&amp;nbsp;지정할&amp;nbsp;때&amp;nbsp;조인&amp;nbsp;대상&amp;nbsp;테이블들에서&amp;nbsp;서로&amp;nbsp;같은&amp;nbsp;조건을&amp;nbsp;가진&amp;nbsp;데이터를&amp;nbsp;가져왔습니다. &lt;br /&gt;그러나&amp;nbsp;실제&amp;nbsp;상황에서는&amp;nbsp;같은&amp;nbsp;조건이&amp;nbsp;아닌&amp;nbsp;크거나&amp;nbsp;작거나&amp;nbsp;하는&amp;nbsp;경우의&amp;nbsp;조건으로&amp;nbsp;조회를&amp;nbsp;해야할&amp;nbsp;경우도&amp;nbsp;얼마든지&amp;nbsp;있을&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;그럴&amp;nbsp;때&amp;nbsp;사용하는&amp;nbsp;조인&amp;nbsp;방법이&amp;nbsp;비등가&amp;nbsp;조인입니다.&amp;nbsp;자세한&amp;nbsp;예로&amp;nbsp;알아보겠습니다. &lt;br /&gt;&lt;br /&gt;사용&amp;nbsp;예1.&amp;nbsp;CUSTOMER테이블과&amp;nbsp;GIFT테이블을&amp;nbsp;조인하여&amp;nbsp;고객별로&amp;nbsp;마일리지&amp;nbsp;포인트를&amp;nbsp;조회한&amp;nbsp;후&amp;nbsp;해당&amp;nbsp;마일리지&amp;nbsp;점수로&amp;nbsp;받을&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;상품을&amp;nbsp;조회하여&amp;nbsp;고객의&amp;nbsp;이름과&amp;nbsp;받을&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;상품&amp;nbsp;명을&amp;nbsp;아래와&amp;nbsp;같이&amp;nbsp;출력하세요. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1628686485900&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ORACLE
SELECT C.GNAME CUST_NAME, TO_CHAR(C.POINT, '999,999') POINT, G.GNAME GIFT_NAME
FROM CUSTOMER C, GIFT G
WHERE C.POINT BETWEEN G.G_START AND G.G_END;

OR

SELECT C.GNAME CUST_NAME, TO_CHAR(C.POINT, '999,999') POINT, G.GNAME GIFT_NAME
FROM CUSTOMER C, GIFT G
WHERE C.POINT &amp;gt;= G.G_START 
AND C.POINT &amp;lt;= G.G_END;

ANSI
SELECT C.GNAME &quot;CUST_NAME&quot;, TO_CHAR(C.POINT, '999,999') &quot;POINT&quot;, G.GNAME &quot;GIFT_NAME&quot;
FROM CUSTOMER C JOIN GIFT G
ON C.POINT BETWEEN G.G_START AND G.G_END;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;460&quot; data-origin-height=&quot;227&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Y5Kvx/btrbPbKNMP3/uSxKsqciSu7uf7BJ2WkIr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Y5Kvx/btrbPbKNMP3/uSxKsqciSu7uf7BJ2WkIr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Y5Kvx/btrbPbKNMP3/uSxKsqciSu7uf7BJ2WkIr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FY5Kvx%2FbtrbPbKNMP3%2FuSxKsqciSu7uf7BJ2WkIr0%2Fimg.png&quot; data-origin-width=&quot;460&quot; data-origin-height=&quot;227&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;*&amp;nbsp;BETWEEN&amp;nbsp;보다&amp;nbsp;비교연산자가&amp;nbsp;성능에는&amp;nbsp;더&amp;nbsp;좋습니다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;사용&amp;nbsp;예2.&amp;nbsp;학생테이블과&amp;nbsp;점수테이블,&amp;nbsp;학점테이블을&amp;nbsp;조회하여&amp;nbsp;학생들의&amp;nbsp;이름과&amp;nbsp;점수와&amp;nbsp;학점을&amp;nbsp;출력하세요. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1628686510701&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ORACLE

SELECT ST.NAME, SC.TOTAL, H.GRADE 
FROM STUDENT ST, SCORE SC, HAKJUM H
WHERE ST.STUDNO = SC.STUDNO 
AND SC.TOTAL &amp;gt;= H.MIN_POINT 
AND SC.TOTAL &amp;lt;= H.MAX_POINT;

ANSI

SELECT ST.NAME, SC.TOTAL, H.GRADE 
FROM STUDENT ST JOIN SCORE SC
ON ST.STUDNO = SC.STUDNO
JOIN HAKJUM H
ON SC.TOTAL &amp;gt;= H.MIN_POINT 
AND SC.TOTAL &amp;lt;= H.MAX_POINT;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;327&quot; data-origin-height=&quot;418&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pX7Ee/btrbPciAv1V/0vyPL0jcs9JJDnAiwo46MK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pX7Ee/btrbPciAv1V/0vyPL0jcs9JJDnAiwo46MK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pX7Ee/btrbPciAv1V/0vyPL0jcs9JJDnAiwo46MK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpX7Ee%2FbtrbPciAv1V%2F0vyPL0jcs9JJDnAiwo46MK%2Fimg.png&quot; data-origin-width=&quot;327&quot; data-origin-height=&quot;418&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>데이터베이스/Oracle SQL</category>
      <category>inner join</category>
      <category>oracle inner join</category>
      <category>oracle join</category>
      <category>SQL JOIN</category>
      <category>비등가 조인</category>
      <category>오라클 Inner Join</category>
      <category>오라클 join</category>
      <category>오라클 이너조인</category>
      <category>오라클 조인</category>
      <category>이너조인</category>
      <author>동띠기</author>
      <guid isPermaLink="true">https://ms-record.tistory.com/116</guid>
      <comments>https://ms-record.tistory.com/116#entry116comment</comments>
      <pubDate>Wed, 11 Aug 2021 21:56:43 +0900</pubDate>
    </item>
    <item>
      <title>오라클 SQL과 PL/SQL ( INNER JOIN - 등가 조인 )</title>
      <link>https://ms-record.tistory.com/115</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;EQUI&amp;nbsp;JOIN(등가&amp;nbsp;조인) &lt;br /&gt;&lt;br /&gt;가장&amp;nbsp;많이&amp;nbsp;사용되는&amp;nbsp;조인으로&amp;nbsp;선행&amp;nbsp;테이블에서&amp;nbsp;데이터를&amp;nbsp;가져온&amp;nbsp;후&amp;nbsp;조인&amp;nbsp;조건절을&amp;nbsp;검사해서&amp;nbsp;동일한&amp;nbsp;조건을&amp;nbsp;가진&amp;nbsp;데이터를&amp;nbsp;후행&amp;nbsp;테이블에서&amp;nbsp;꺼내오는&amp;nbsp;방법입니다. &lt;br /&gt;조건절에서&amp;nbsp;=(EQUAL)을&amp;nbsp;사용해서&amp;nbsp;EQUI&amp;nbsp;JOIN이라고&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;예를&amp;nbsp;통해&amp;nbsp;알아보겠습니다. &lt;br /&gt;EMP 테이블과 DEPT 테이블을 조인해서 조회하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1628598891210&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ORACLE 

SELECT EMPNO, ENAME, DNAME 
FROM EMP E , DEPT D 
WHERE E.DEPTNO = D.DEPTNO;

ANSI JOIN

SELECT E.EMPNO, E.ENAME, D.DNAME
FROM EMP E JOIN DEPT D
ON E.DEPTNO = D.DEPTNO;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;329&quot; data-origin-height=&quot;280&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o2Xup/btrbEgltOVA/SlMHpi3CDgHv45XUU3UvJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o2Xup/btrbEgltOVA/SlMHpi3CDgHv45XUU3UvJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o2Xup/btrbEgltOVA/SlMHpi3CDgHv45XUU3UvJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo2Xup%2FbtrbEgltOVA%2FSlMHpi3CDgHv45XUU3UvJ1%2Fimg.png&quot; data-origin-width=&quot;329&quot; data-origin-height=&quot;280&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서&amp;nbsp;살펴본&amp;nbsp;바와&amp;nbsp;같이&amp;nbsp;SELECT&amp;nbsp;절에&amp;nbsp;테이블이름.컬럼이름&amp;nbsp;같은&amp;nbsp;형태로&amp;nbsp;적어주면&amp;nbsp;되는데&amp;nbsp;만약&amp;nbsp;컬럼&amp;nbsp;이림이&amp;nbsp;하나의&amp;nbsp;테이블에만&amp;nbsp;있을&amp;nbsp;경우에는&amp;nbsp;테이블&amp;nbsp;이름을&amp;nbsp;생략해도&amp;nbsp;자동으로&amp;nbsp;이름을&amp;nbsp;찾아서&amp;nbsp;실행합니다. &lt;br /&gt;하지만&amp;nbsp;양쪽&amp;nbsp;테이블에&amp;nbsp;모두&amp;nbsp;있는&amp;nbsp;컬럼일&amp;nbsp;경우는&amp;nbsp;반드시&amp;nbsp;테이블이름을&amp;nbsp;적어야&amp;nbsp;하며&amp;nbsp;안적어줄&amp;nbsp;경우&amp;nbsp;에러가&amp;nbsp;발생합니다. &lt;br /&gt;그래서&amp;nbsp;JOIN을&amp;nbsp;사용할&amp;nbsp;경우&amp;nbsp;반드시&amp;nbsp;테이블이름.컬럼이름으로&amp;nbsp;사용하는&amp;nbsp;습관을&amp;nbsp;들여야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예&amp;nbsp;1.&amp;nbsp;학생테이블과&amp;nbsp;교수테이블을&amp;nbsp;JOIN하여&amp;nbsp;학생의&amp;nbsp;이름과&amp;nbsp;지도교수&amp;nbsp;이름을&amp;nbsp;출력하세요.&lt;/p&gt;
&lt;pre id=&quot;code_1628598921458&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ORACLE 

SELECT S.NAME STU_NAME, P.NAME PROF_NAME
FROM STUDENT S, PROFESSOR P
WHERE S.PROFNO = P.PROFNO;


ANSI

SELECT S.NAME &quot;STU_NAME&quot;, P.NAME &quot;PROF_NAME&quot;
FROM STUDENT S JOIN PROFESSOR P 
ON S.PROFNO = P.PROFNO;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;271&quot; data-origin-height=&quot;317&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cA8f1C/btrbIndigkS/Vu01vOKCrpVdZ0nK5xzKoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cA8f1C/btrbIndigkS/Vu01vOKCrpVdZ0nK5xzKoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cA8f1C/btrbIndigkS/Vu01vOKCrpVdZ0nK5xzKoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcA8f1C%2FbtrbIndigkS%2FVu01vOKCrpVdZ0nK5xzKoK%2Fimg.png&quot; data-origin-width=&quot;271&quot; data-origin-height=&quot;317&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞의&amp;nbsp;결과를&amp;nbsp;보면&amp;nbsp;총&amp;nbsp;15건의&amp;nbsp;데이터가&amp;nbsp;출력된&amp;nbsp;것을&amp;nbsp;알수&amp;nbsp;있습니다. &lt;br /&gt;그러나&amp;nbsp;학생&amp;nbsp;테이블의&amp;nbsp;데이터는&amp;nbsp;총&amp;nbsp;20건입니다.&amp;nbsp;즉&amp;nbsp;5명의&amp;nbsp;학생이&amp;nbsp;안나왔다는&amp;nbsp;것입니다. &lt;br /&gt;이것은&amp;nbsp;EQUI&amp;nbsp;JOIN의&amp;nbsp;특성으로&amp;nbsp;양쪽&amp;nbsp;테이블에&amp;nbsp;모두&amp;nbsp;데이터가&amp;nbsp;존재해야&amp;nbsp;결과가&amp;nbsp;나오는데&amp;nbsp;5명의&amp;nbsp;학생은&amp;nbsp;지도&amp;nbsp;교수가&amp;nbsp;결정이&amp;nbsp;안된&amp;nbsp;상태라서&amp;nbsp;결과에서&amp;nbsp;빠지게&amp;nbsp;된것입니다. &lt;br /&gt;만약&amp;nbsp;이렇게&amp;nbsp;한쪽에&amp;nbsp;없는&amp;nbsp;데이터를&amp;nbsp;가진&amp;nbsp;값까지&amp;nbsp;다&amp;nbsp;보고&amp;nbsp;싶다면&amp;nbsp;차후&amp;nbsp;기술할&amp;nbsp;OUTER&amp;nbsp;JOIN을&amp;nbsp;활용하면&amp;nbsp;됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예&amp;nbsp;2.&amp;nbsp;학생테이블과&amp;nbsp;학과테이블,&amp;nbsp;교수테이블을&amp;nbsp;조인하여&amp;nbsp;학생의&amp;nbsp;이름과&amp;nbsp;학생의&amp;nbsp;학과이름,&amp;nbsp;학생의&amp;nbsp;지도교수&amp;nbsp;이름을&amp;nbsp;출력하세요.&lt;/p&gt;
&lt;pre id=&quot;code_1628598949337&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ORACLE 

SELECT S.NAME STU_NAME, P.NAME PROF_NAME, D.DNAME DEPT_NAME
FROM STUDENT S, PROFESSOR P, DEPARTMENT D
WHERE S.DEPTNO1 = D.DEPTNO 
AND S.PROFNO = P.PROFNO;


ANSI

SELECT S.NAME &quot;STU_NAME&quot;, P.NAME &quot;PROF_NAME&quot;, D.DNAME &quot;DEPT_NAME&quot;
FROM STUDENT S JOIN DEPARTMENT D
ON S.DEPTNO1 = D.DEPTNO
JOIN PROFESSOR P
ON S.PROFNO = P.PROFNO;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;321&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWx6PE/btrbJbp94qy/rxqyss6cvEceNYJLHlQ9bK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWx6PE/btrbJbp94qy/rxqyss6cvEceNYJLHlQ9bK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWx6PE/btrbJbp94qy/rxqyss6cvEceNYJLHlQ9bK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWx6PE%2FbtrbJbp94qy%2Frxqyss6cvEceNYJLHlQ9bK%2Fimg.png&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;321&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위&amp;nbsp;예제는&amp;nbsp;3개의&amp;nbsp;테이블을&amp;nbsp;JOIN&amp;nbsp;하여&amp;nbsp;결과를&amp;nbsp;나타냅니다.&amp;nbsp;이&amp;nbsp;경우는&amp;nbsp;ORACLE&amp;nbsp;JOIN&amp;nbsp;과&amp;nbsp;ANSI의&amp;nbsp;JOIN&amp;nbsp;문법이&amp;nbsp;많이&amp;nbsp;차이가&amp;nbsp;나는데&amp;nbsp;ANSI의&amp;nbsp;경우&amp;nbsp;쿼리의&amp;nbsp;2번과&amp;nbsp;3번&amp;nbsp;행의&amp;nbsp;조건으로&amp;nbsp;먼저&amp;nbsp;조인을&amp;nbsp;수행한&amp;nbsp;후&amp;nbsp;나온&amp;nbsp;결과값을&amp;nbsp;가지고&amp;nbsp;4번과&amp;nbsp;5번행의&amp;nbsp;조건으로&amp;nbsp;조인을&amp;nbsp;수행합니다. &lt;br /&gt;조인&amp;nbsp;테이블이&amp;nbsp;더&amp;nbsp;늘어날&amp;nbsp;경우&amp;nbsp;계속&amp;nbsp;JOIN&amp;nbsp;~&amp;nbsp;ON&amp;nbsp;조건을&amp;nbsp;추가하면&amp;nbsp;됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예&amp;nbsp;3.&amp;nbsp;학생&amp;nbsp;테이블을&amp;nbsp;조회하여&amp;nbsp;1전공(DEPTNO1)&amp;nbsp;이&amp;nbsp;101번인&amp;nbsp;학생들의&amp;nbsp;이름과&amp;nbsp;각&amp;nbsp;학생들의&amp;nbsp;지도교수&amp;nbsp;이름을&amp;nbsp;출력하세요&lt;/p&gt;
&lt;pre id=&quot;code_1628598971713&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ORACLE 

SELECT S.NAME STU_NAME, P.NAME PROF_NAME
FROM STUDENT S, PROFESSOR P
WHERE S.PROFNO = P.PROFNO 
AND S.DEPTNO1 = 101;

ANSI

SELECT S.NAME &quot;STU_NAME&quot;, P.NAME &quot;PROF_NAME&quot;
FROM STUDENT S JOIN PROFESSOR P
ON S.PROFNO = P.PROFNO 
AND S.DEPTNO1 = 101;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;275&quot; data-origin-height=&quot;97&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qUUS7/btrbHbEcO9n/uvW60tArkoKe2UaIGT7z0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qUUS7/btrbHbEcO9n/uvW60tArkoKe2UaIGT7z0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qUUS7/btrbHbEcO9n/uvW60tArkoKe2UaIGT7z0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqUUS7%2FbtrbHbEcO9n%2FuvW60tArkoKe2UaIGT7z0k%2Fimg.png&quot; data-origin-width=&quot;275&quot; data-origin-height=&quot;97&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의&amp;nbsp;예제의&amp;nbsp;경우&amp;nbsp;3번&amp;nbsp;줄은&amp;nbsp;JOIN을&amp;nbsp;수행하기&amp;nbsp;위한&amp;nbsp;조건이라&amp;nbsp;조인조건이라&amp;nbsp;부르고&amp;nbsp;4번&amp;nbsp;줄은&amp;nbsp;검색을&amp;nbsp;하는&amp;nbsp;용도로&amp;nbsp;사용되기&amp;nbsp;때문에&amp;nbsp;검색&amp;nbsp;조건이라&amp;nbsp;부릅니다. &lt;br /&gt;위와&amp;nbsp;같이&amp;nbsp;조인&amp;nbsp;조건과&amp;nbsp;검색&amp;nbsp;조건이&amp;nbsp;동시에&amp;nbsp;있을&amp;nbsp;경우&amp;nbsp;검색&amp;nbsp;조건을&amp;nbsp;먼저&amp;nbsp;검색해서&amp;nbsp;데이터의&amp;nbsp;검색범위를&amp;nbsp;줄여놓고&amp;nbsp;조인을&amp;nbsp;수행합니다.&amp;nbsp;그렇기&amp;nbsp;조인의&amp;nbsp;속도가&amp;nbsp;빨라집니다.&lt;/p&gt;</description>
      <category>데이터베이스/Oracle SQL</category>
      <category>equi join</category>
      <category>inner join</category>
      <category>Join</category>
      <category>mysql join</category>
      <category>Oracle</category>
      <category>oracle join</category>
      <category>SQL JOIN</category>
      <category>오라클 join</category>
      <category>오라클 조인</category>
      <category>이너조인</category>
      <author>동띠기</author>
      <guid isPermaLink="true">https://ms-record.tistory.com/115</guid>
      <comments>https://ms-record.tistory.com/115#entry115comment</comments>
      <pubDate>Tue, 10 Aug 2021 21:37:39 +0900</pubDate>
    </item>
  </channel>
</rss>