1. 현재접속된계정의모든테이블를보기위한 SQL문 select * from tab; 2. 테이블구조확인하기 desc tablename ------------------------! SQL PLUS 명령어! ------------------------ 3. SQL PLUS 사용환경설정명령어 SET system_variable value system_variable : SQL 명령문의실행결과를제어하기위한시스템변수 value : 시스템변수별로지정하는옵션 Explanation : SET 명령어는현재작업중인세션에대한환경을제어하기위해시스템변수를설정하기위한명령어 SYSTEM VARIAVLE (1) AUTOCOMMIT : 사용법 :SET AUTO[COMMIT] {off on imm[ediate] n} Explanation : DML 명령문의처리결과를디스크에저장하기위해서는반드시 COMMIT 명령을사용해야한다. AUTOCOMMIT 변수는트랜젝션의처리결과를제어하기위한시스템변수이다! on : DML 명령문성공적으로실행되면자동적으로 COMMIT 명령문실행 off : DML 명령문실행후사용자가직접 COMMIT 명령문실행 immediate : on명령과동일 n : DML 명령문을 n번성공적으로수행했을때자동적으로 COMMIT 명령문실행 (2) FEEDBACK : 사용법 : SET FEED[BACK] {6 n off on} default value 6 Explanation : select 명령문의실행결과를표시하기위하여출력행의수를지정하기위한시스템변수이다. (3) HEADING : 사용법 : SET HEADING {on off} Explanation : select 명령의실행결과를출력할때컬럼명의출력여부를제어하기위한시스템 변수 on : 컬럼명출력 off : 컬럼명을출력하지않음 (4) LINESIZE : 사용법 : SET LIN[ESIZE] {80 n} Explanation : SQL 명령문의출력결과에대한행의크기를설정하기위한시스템변수 Default value : 80 최대값은시스템에따라차이가남. (5) PAGESIZE : 사용법 : SET PAGES[IZE] {14 n} Explanation : SQL 명령문의실행결과에대한페이지의크기를설정하기위한시스템변수 - 1 -
Default value : 14 (6) PAUSE : 사용법 : SET PAUSE {on off} Explanation : SQL 명령문의결과를한화면에보기힘든경우에한페이지씩나누어출력하기위한시스템변수 (7) TERMOUT : 사용법 : SET TERM[OUT] {off on} Explanation : SQL 명령문실행결과를화면에출력할지여부를지정하기위한시스템변수 (8) TIME : 사용법 : SET TI[ME] {off on} Explanation : SQL 프롬프트앞에현재시간을함께표시하도록설정 (9) TIMING : 사용법 : SET TIMING {off on} Explanation : SQL 명령문을실행하는데소요된시간을출력하기위한시스템변수 (10) UNDERLINE : 사용법 : SET UND[ERLINE] {- c on off} Explanation : 컬럼제목과데이터간의구분기호를설정하기위한시스템변수 c : 모든문자 ex)*,, <, >, 등등. on : 구분기호를사용 off : 구분기ㅗ를사용하지않음 (11) SHOW : 사용법 : SHOW system_variable 혹은 SHOW ALL Explanation : 현재세션에설정된시스템변수를확인하기위한명령어 (ALL 을사용할경우모든 환경변수의값을확인할수있다. - 2 -
4. SQL PLUS 형식명령어 4.1 COLUME 명령어 - SQL명령문의실행결과로출력되는칼럼제목이나칼럼데이터에 대한출력형식을다양하게지정하기위한명령어이다. 사용법 : COLUMN {column alias} [option] [format] < 표 > COLUMN 명령어 option 종 류 의 미 CLE[AR] 칼럼형식해제 FOR[MAT] format 칼럼데이터의출력형식설정 HEA[DING] text 칼럼제목설정, text내의수직 ( ) 바는칼럼제목을여러줄로출력할경우엔터키의역할 JUS[TIFY] {align} 칼럼제목을왼쪽, 가운데또는오른쪽정렬지정 NOPRI[NT] 칼럼숨기기 PRI[NT] 칼럼출력하기 NUL[L] text NULL 값에대한출력문자지정 < 표 > 칼럼데이터에대한출력형식종류 (format) 종류 의 미 사용예 An 문자형식칼럼의출력크기를 n폭으로설정 아래사용예참고 9 단일 zero-suppression(0 억제 ) 숫자 999999 -> 1234 0 지정된길이만큼숫자앞에 0을추가 009999 -> 001234 $ 숫자앞에달러기호삽입 $9999 -> $1234 L 숫자앞에지역화폐단위삽입 L9999 -> $1234. 소수점위치지정 9999.99 ->1234.00, 1000자리마다, 구분자삽입 9,999 -> 1,234 < 표 > 칼럼에대한설정내용확인및해제하기위한옵션 종 류 의 미 COL[UMN] column 특정칼럼에대한현재설정값출력 COL[UMN] 모든칼럼에대한현재설정값출력 COL[UMN] column CLE[AR] 특정칼럼에대한현재설정값해제 COL[UMN] COL[UMN] 모든칼럼에대한현재설정값해제 - 3 -
5. SQL PLUS 편집명령어 명령문 축약어 기 능 APPEND text A text SQL 버퍼의현재라인끝에 text 추가 CHANGE/old/new C/old/new 현재라인의 old text를 new text로변경 CHANGE/text/ C/text/ 현재라인에서 text 삭제 CLEAR BUFFER CL BUFF 모든라인삭제 DEL ( 없음 ) 현재라인삭제 DEL n ( 없음 ) n번째라인의 text 삭제 DEL m n ( 없음 ) m번째라인부터 n번째라인까지의 text 삭제 INPUT I 현재라인다음에 text 추가 INPUT text I text 현재라인다음에 text 추가 LIST L 모든라인출력 LIST n L n n번째라인의 text 출력 LIST m n L m n m번째라인부터 n번째라인까지의 text 출력 n ( 없음 ) n번째라인으로이동 n text ( 없음 ) n번째라인의내용을 text로변경 0 text ( 없음 ) 1번째라인앞에 text 추가 (1) LIST : 사용법 : L[IST] [n m n] Explanation : 버퍼에저장된 SQL 명령문을출력하기위해사용하는명령어 (2) INPUT : 사용법 : I[NPUT] [text] 또는 0 text Explanation : SQL 버퍼에저장된 SQL 명령문의처음이나마지막에새로운라인을추가하는경 우에사용하는명령어 (3) DEL : 사용법 : DEL [n m n] Explanation : SQL 버퍼에저장된 SQL 명령문중에서일부내용을삭제하기위한명령어 (4) CHANGE : 사용법 : C[HANGE] /old/new Explanation : 현재활성화된라인에서특정텍스트를다른텍스트로변경하기위해사용하는명령어 old : 변경하기전텍스트 new : 변경할텍스트 - 4 -
6. SQL PLUS 파일조작명령어 명령어의미 SAV[E] filename GET filename STA[RT] filename @filename ED[IT] filename SPO[OL] [filename off OUT] 현재 SQL 버퍼의내용을파일에저장 SAVE 명령어로저장한파일을 SQL버퍼에읽어옴파일을읽고즉시실행파일을읽고즉시실행저장된파일내용을편집파일에출력결과를저장 OFF는 SPOOL 파일을닫음 OUT는 SPOOL 파일을닫고프린터로파일전송 ------------------------! SQL PLUS 명령어! ------------------------ - 5 -
------------------------! 오라클데이터타입! ------------------------ 1. 오라클에서지원하는데이터타입의종류 DATA TYPE 의미 size크기의고정길이문자데이터타입 CHAR(size) 최대크기 : 2000 byte 최소크기 : 1 byte size 크기의가변길이문자데이터타입 VARCHAR2(size) 최대크기 : 4000 byte 최소크기 : 1 byte 국가별문자집합에따른 size 크기의문자또는바이트의가변길이문자 NVARCHAR2(size) 데이터타입 최대크기 : 4000 byte 최소크기 : 1 byte 정밀도 (p) 와스케일 (s) 로표현되는숫자데이터타입 NUMBER(p,s) p : 1 ~ 38 s : -84 ~ 127 DATE ROWID BLOB CLOB BFILE TIMESTAMP(n) INTERVAL YEAR TO MONTH INTERVAL DAY TO SECOND 날짜형식을저장하기위한데이터타입테이블내행의고유주소를가지는 64진수문자타입행당 6 byte( 제한된 ROWID) 또는 10 byte( 확장된 ROWID) 대용량이바이너리데이터를저장하기위한데이터타입최대크기 : 4G 대용량의텍스트데이터를저장하기위한데이터타입최대크기 : 4G 대용량의바이너리데이터를파일형태로저장하기위한데이터타입최대크기 : 4G DATE 데이터타입의확장된형태 N은 milli second 자리수로최대 9자리까지표현년과월을이용하여기간을저장일, 시, 분, 초를이용하여기간을저장두날짜값의정확한차이를표현하는데유용 ------------------------! 오라클데이터타입! ------------------------ - 6 -
------------------------! SQL 문중 SELECT! ------------------------ 1. SQL 명령문의표준형식 SELECT [DISTINCT] {* column[alias].. } FROM table_name [WHERE condition] [GROUP BY group_by_expression] [HAVING group_condition] [ORDER BY column] (1) DISTINCT : 중복행을제거하여출력하는기능 (2) 칼럼에대한별칭부여 2가지방법 1) 칼럼이름과별명사이에공백을추가하는방법 Ex) select deptno d from student; 2) 칼럼이름과별명사이에 as 키워드를추가하는방법 Ex) select deptno as d from student; (3) 합성연산자 - 합성연산자는 는하나의칼럼과다른칼럼, 산술표현식또는상수값을연결하여하나의칼럼처럼출력할경우에사용하는연산자이다. 2. WHERE 절을이용한조건검색 1 비교연산자연산자의미 = 같다!=, <> 같지않다 > 크다 < 작다 >= 크거나같다 <= 작거나같다 2 논리연산자 연산자 AND OR NOT 의미 - 7 -
3 SQL 연산자 - SQL 언어에서만제공되는편리한기능 연산자 BETWEEN a AND b IN(a, b, c,, n) LIKE IS NULL 의미 a 와 b 사이의값, a, b도포함 a, b, c,, n 중의하나와일치하면참문자패턴과부분적으로일치 (%, _) 하면참 NULL 이면참 4 ESCAPE 옵션 LIKE 연산자에서사용하는와일드문자 (%, _) 자체를포함하는문자열을검색할때, 와일드문자를일반문자처럼취급하기위한옵션이다. 5 NULL연산자 (IS NULL, IS NOT NULL) 3. 집합연산자집합연산자의미 UNION 두집합에대해중복되는행을제외한합집합 UNION ALL 두집합에대해중복되는행을포함한합집합 MINUS 두집합간의차집합 INTERSECT 두집합간의교집합사용방법 : SELECT 명령문1 [UNION UNION ALL INTERSECT MINUS] SERECT 명령문2 4. 정렬방법 (ORDER BY절 ) 오름차순일때 (ASC) - 문자값은알파벳순으로출력되고, 한글은가나다순으로출력된다. - 숫자값은가장작은값부터출력된다. - 날짜값은과거의날짜순으로출력된다. 내림차순일때 (DESC) 오름차순반대로.. 사용법 SELECT [DISTINCT] {* column[alias]..} FROM table [WHERE condition] [ORDER BY {column, expression} [ASC DESC]] ORDER BY : 칼럼이나표현식을기준으로출력결과를정렬할때사용 ASC : 오름차순정렬시에사용 (default) DESC : 내림차순정렬시에사용, 생략불가능 ------------------------! SQL 문중 SELECT! ------------------------ - 8 -
------------------------! SQL 문함수! ------------------------ 1. SQL함수 칼럼의값이나데이터타입의변경, 숫자또는날짜데이터의출력형식변경, 하나이상의행에대한집계를할때주로사용된다. 2. 단일행함수 사용법 : function_name (column expression, [arg1, arg2,...]) function_name : 단일행함수이름 column : 칼럼이름 expression : 문자열또는표현식 arg1, arg2 : 함수의인수 ( 상수, 변수, 칼럼이름, 표현식 ) 1) 문자함수 문자데이터를입력하여문자나숫자를결과로반환하는함수 대소문자변환함수 종류 의미 사용예 INITCAP 문자열의첫번째문자만대문자로변환 INITCAP( apple ) -> Apple LOWER 문자열전체를소문자로변환 LOWER( APPLE ) -> apple UPPER 문자열전체를대문자로변환 UPPER( apple ) -> APPLE 문자열길이반환함수 종류 의미 사용예 LENGTH 문자열의길이를반환 LENGTH( 홍길동 ) -> 3 LENGTHB 문자열의바이트수를반환 LENGTHB( 홍길동 ) -> 6 문자조작함수 종류 의미 사용예 CONCAT 두문자열결합, 와동일 CONCAT( sql, plus ) -> sqlplus SUBSTR 특정문자또는문자열일부를추출 SUBSTR( SQL*Plus,5,4)->Plus INSTR 특정문자가출현하는첫번째위치를반환 INSTR( SQL*Plus, * )->4 LPAD 오른쪽정렬후왼쪽에지정문자삽입 LPAD( sql,5, * )->**sql RPAD 왼쪽정렬후오른쪽에지정문자삽입 RPAD( sql,5, * )->sql** LTRIM 왼쪽의지정문자를삭제 LTRIM( *sql, * )->sql RTRIM 오른쪽의지정문자를삭제 RTRIM( sql*, * )->sql - 9 -
2) 숫자함수 숫자데이터를처리하기위한함수 숫자함수의종류 종류 의미 사용예 ROUND 지정한자리이하에서반올림 ROUND(123.17,1)->123.2 TRUNC 지정한자리이하에서절삭 TRUNC(123.17,1)->123.1 MOD M을 n으로나눈나머지 MOD(12,10)->2 CEIL 지정한값보다큰수중에서가장작은정수 CEIL(123.17->124 FLOOR 지정한값보다작은수중에서가장큰정수 FLOOR(123.17)->123 3) 날짜함수 날짜데이터를입력하여날짜또는기간을결과값으로반환하는함수 종류 의미 결과 SYSDATE 시스템의현재날짜 날짜 MONTHS_BETWEEN 날짜와날짜사이의개월을계산 숫자 ADD_MONTHS 날짜에개월을더한날짜계산 날짜 NEXT_DAY 날짜후의첫요일의날짜를계산 날짜 LAST_DAY 월의마지막날짜를계산 날짜 ROUND 날짜를반올림 날짜 TRUNC 날짜를절삭 날짜 4) 데이터타입의변환 숫자나날짜타입을문자와함께결합하거나보고서양식에 맞추기위해주로사용한다. 묵시적인데이터타입변환 < 표 > 묵시적데이터타입변환 : WHERE A=B 일때 (A는칼럼, B는상수 ) A의데이터타입 B의데이터타입 변환결과 NUMBER VARCHAR2 또는 CHAR B가 NUMBER 타입으로변환 VARCHAR2 또는 CHAR NUMBER A가 NUMBER 타입으로변환 문자타입의숫자타입으로변환은문자열이숫자로구성된경우에만가능 명시적인데이터타입변환 < 표 > 명시적데이터타입변환함수 종류 의미 사용예 결과 TO_CHAR 숫자 / 날짜타입을문자로변환 TO_CHAR ( 05/03, YYYY-MM) 2005-03 TO_NUMBER 문자열을숫자타입으로변환 TO_NUMBER (1000, 9,999 ) 1,000 TO_DATE 문자열을날짜타입으로변환 TO_DATA ( 05/03, YYYY-MM) 2005-03 - 10 -
5) 일반함수 NULL 변환함수 : NVL NULL을 0 또는다른값으로변환하기위한함수사용법 : NVL(expression1, expression2) expression1 : NULL을포함하는칼럼또는표현식 expression2 : NULL을대체하는값주의 : expression1과 expression2는반드시동일한데이터타입이어야한다. NVL 확장함수 : NVL2, NULLIF, COALESCE 사용법 : NVL2(expression1, expression2, expression3) expression1 : NULL을포함하는칼럼또는표현식 expression2 : expression1이 NULL이아닐때반환되는식 expression3 : expression1이 NULL 일때대체되는값 사용법 : NULLIF(expression1, expression2) expression1 : expression2 와비교하는값 사용법 : COALESCE(expression-1, expression-2,..., expression-n) expression-1 : expression-1이 NULL이아니면 expression-1을반환 expression-2 : expression-1이 NULL이고 expression-2가 NULL이아니면 expression-2를반환 expression-n : expression-1부터 expression-n-1까지의값이 NULL이고 expression-n이 NULL이아니면 expression-n을반환 DECODE 함수 기존의프로그래밍언어에서 IF문이나 CASE문으로표현되는복잡한알고리즘을하나의 SQL명령문으로간단하게표현할수있는유용한기능이다. DECODE 함수에서는비교연산은 = 만가능하다. 사용법 : DECODE(expression column, SEARCH1, RESULT1 [, SEARCH2, RESULT2,..., ] [, DEFAULT] @ 표현식또는칼럼의값이 SEARCH1 값과일치하면 RESULT1 값을반환, SEARCH2 값과일치하면 RESULT2값반환 @ 일치하는값이없거나 NULL인경우에는기본값반환 @ 기본값이없는경우에는 NULL반환 - 11 -
CASE DECODE 함수의기능을확장한함수이다. 사용법 : CASE expression WHEN comparison_exp1 THEN return_exp1 [WHEN comparison_exp2 THEN return_exp2 WHEN comparison_exp3 THEN return_exp3 ELSE else_expression] END ------------------------! SQL 문함수! ------------------------ ------------------------! 그룹함수! ------------------------ 1. 그룹함수 테이블의전체행을하나이상의칼럼을기준으로칼럼값에따라그룹화하여그룹별로결과를출력하는함수이다. 사용법 : SELECT column, group_function(column) FROM table [WHERE condition] [GROUP BY group_by_expresssion] [HAVING group_condition] GROUP BY : 전체행을 group_by_expression을기준으로그룹화 HAVING : GROUP BY절에의해생성된그룹별로조건부여 2. 그룹함수의종류 < 표 > 그룹함수의종류종류의미 COUNT 행의개수출력 MAX NULL을제외한모든행에서최대값 MIN NULL을제외한모든행에서최소값 SUM NULL을제외한모든행에서합계 AVG NULL을제외한모든행에서평균값 STDDEV NULL을제외한모든행에서표준편차 VARIANCE NULL을제외한모든행에서분산값 GROUPING 해당칼럼이그룹에사용되었는지여부를 1또는 0으로반환 GROUPING SETS 한번의질의로여러개의그룹화가능 1) COUNT 함수사용법 : COUNT({* [DISTINCT ALL] expt}) * 은 NULL을포함한모든행의개수 DISTNCT는중복되는값을제외한행의개수 ALL은중복되는값을포함한행의개수, 기본값은 ALL Expr 인수에서사용가능한데이터타입은 CHAR, VARCHAR2, NUMBER, DATE타입 - 12 -
2) AVG, SUM, MIN, MAX 함수사용법 : AVG({[DISTINCT ALL]} expr) 사용법 : SUM ({[DISTINCT ALL]} expr) 사용법 : MIN ({[DISTINCT ALL]} expr) 사용법 : MAX ({[DISTINCT ALL]} expr) 3) STDDEV, VARIANCE 함수사용법 : STDDEV ({[DISTINCT ALL]} expr) 사용법 : VARIANCE ({[DISTINCT ALL]} expr) 3. 데이터그룹생성 1) GROUP BY절 특정칼럼값을기준으로테이블의전체행을그룹별로나누기위한절 GROUP BY절의규칙 그룹핑전에 WHERE 절을사용하여그룹대상집합을먼저선택할수있다. GROUP BY절에는반드시칼럼이름을포함해야하며칼럼별명은사용할수없다. 그룹별로출력순서는오름차순으로정렬된다. SELECT 절에서나열된칼럼이름이나표현식은 GROUP BY절에서반드시명시해야한다. 하지만 GROUP BY절에서명시한칼럼이름은 SELECT 절에서명시하지않아도된다. 2) 다중칼럼을이용한그룹별검색 3) ROLLUP, CUBE 연산자사용법 : SELECT column, group_function(column) FROM table [WHERE condition] [GROUP BY [ROLLUP CUBE] group_by_expressin] [HEVING group_condition] 4) GROUPING 함수 - ROLLUP이나 CUBE 연산자와함께사용하는함수이다. 사용법 : SELECT column, group_function(column), GROUPING(column) FROM table [WHERE condition] [GROUP BY [ROLLUP CUBE] group_by_expressin] [HEVING group_condition] - 13 -
5) GROUPING SETS 함수 GROUP BY 절에서그룹조건을여러개지정할수있는함수 < 표 > GROUPING SETS 절과 GROUP BY절의비교 GROUPING SETS 절 GROUP BY 절 GROUP BY GROUP BY a UNION ALL GROUPING SETS(a, b, c) GROUP BY b UNION ALL GROUP BY c GROUP BY GROUP BY a UNION ALL GROUPING SETS(a, b, (b, c)) GROUP BY b UNION ALL GROUP BY b, c GROUP BY GROUP BY a UNION ALL GROUPING SETS(a, ROLLUP(b, c)) GROUP BY ROLLUP(b, c) GROUP BY GROUP BY a UNION ALL GROUPING SETS(a, CUBE(b, c)) GROUP BY CUBE(b, c) 사용법 : SELECT column, group_function(column), GROUPING(column) FROM table [WHERE condition] [GROUP BY [ROLLUP CUBE] group_by_expressin] [GROUPING SETS(column, column ), ] [HEVING group_condition] 4. HAVING SELECT 명령문에서조건검색을위해사용되는 WHERE 절의기능과비슷, HAVAING 절은 GROUP BY절에서생성된그룹을대상으로조건을적용 HAVAING 절의실행과정 1. 테이블에서 WHERE절에의해조건을만족하는행집합을선택한다. 2. 행집합을 GROUP BY절에의해그룹핑을한다. 3. HAVING 절에의해조건을만족하는그룹을선택한다. 사용법 SELECT column, group_function(column) FROM table [WHERE condition] [GROUP BY [ROLLUP CUBE] group_by_expressin] [HEVING group_condition] [ORDER BY column] ------------------------! 그룹함수! ------------------------ - 14 -
------------------------! 조인 (JOIN)! ------------------------ 1. 조인 - 여러개의테이블을결합하여검색하는것 2. 컬럼이름의애메모호성, 테이블별명, 조인조건식 1) 칼럼이름의애매모호성해결방법조인조건절에서서로다른테이블에있는동일한칼럼이름을연결할경우, 칼럼이름이중복되어구별이어려운애매모호한경우가발생할수있다예를들어학생테이블의학과번호와부서테이블의부서번호의칼럼이름이동일할시에구별하기어렵다. 이러한경우 student.deptno와 department.deptno처럼컬럼이름앞에테이블이름을접두사로사용한다면애매모호성을해결할수있다. 2) 조인에서테이블이름의별명사용테이블이름이너무긴경우에는조인조건절을작성하기가번거럽다. 이러한경우에는테이블이름을대신하는별명을지정할수있다. 테이블의별명을지정하는방법은 FROM 절에서테이블이름다음에공백을두고별명을정의하면된다. 테이블별명작성규칙 1. 테이블별명은 30자까지가능하지만너무길지않게지정한다. 2. FROM 절에서테이블이름을명시하고공백을둔다음테이블별명을지정한다. 3. 하나의 SQL 명령문내에서테이블이름과별명을혼용할수없다. 4. 테이블의별명은해당 SQL 명령문내에서만유효하다. 3) AND 연산자를사용한검색조건추가 3. 조인의종류 1) 카티션곱 enro 이상의테이블에대해연결가능한행을모두결합하는조인방법 CROSS JOIN 사용법 SELECT table1.column, table2.column FROM [table1, table2 table1 CROSS JOIN table2] 2) EQUI JOIN SQL 명령문에서가장많이사용하는조인방법. EQUI JOIN은조인대상테이블에서공통칼럼을 = (equal) 비교를통해같은값을가지는행을연결하여결과를생성하는조인방법. EQUI JOIN에서연결고리가되는공통칼럼을조인애튜리뷰트라한다. * WHERE 절을이용한 EQUI JOIN 사용법 : SELECT table1.column, table2.column FROM table1, table2 --조인대상테이블을기술테이블, 구분 WHERE table1.column1 = table2.column2 * 자연조인을이용한 EQUI JOIN 사용법 : SELECT table1.column, table2.column FROM table1 NATURAL JOIN table2-15 -
* JOIN ~ USING 절을이용한 EQUI JOIN 사용법 : SELECT table1.column, table2.column FROM table1 JOIN table2 USING (column); 3) NON-EQUI JOIN 조인조건에서 <, BETWEEN a AND b 와같이 = 조건이아닌다른종류의연산자를사용하는조인방식 4) OUTER JOIN NULL에대해서는어떠한연산을적용하더라도연산결과가 NULL이된다. OUTER JOIN은조인조건의양측칼럼값중에서하나가 NULL인경우에도조인결과로출력할수있는조인방법이다. 데이터베이스실무에서 OUTER JOIN은 EQUI JOIN보다사용빈도는적지만, EQUI JOIN에서해결할수없는결과를출력할수있다. * (+) 기호를사용한 OUTER JOIN - (+) 기호를양쪽에사용할수없으므로주의사용법 : SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column(+) = table2.column 또는 table1. column = table2.column(+) * OUTER JOIN의제약사항 1. OUTER JOIN 연산자 (+) 는 NULL이존재하는칼럼쪾에표시된다. 2. OUTER JOIN에서는 IN 연산자를사용할수없다. 3. 다른조건과 OR연산자로결합할수없다. * OUTER JOIN ~ ON 절을사용한 OUTER JOIN 1. LEFT OUTER JOIN 왼쪽에위치한테이블이 NULL을가질경우에사용사용법 : SELECT t1.column, t2.column FROM t1 LEFT OUTER JOIN t2 ON t1.column = t2.column 2. RIGHT OUTER JOIN - 오른쪽에위치한테이블이 NULL을가질경우에사용사용법 : SELECT t1.column, t2.column FROM t1 RIGHT OUTER JOIN t2 ON t1.column = t2.column 3. FULL OUTER JOIN - LEFT OUTER JOIN, RIGHT OUTER JOIN을동시에실행한결과로출력사용법 : SELECT t1.column, t2.column FROM t1 FULL OUTER JOIN t2 ON t1.column = t2.column - 16 -
6) SELF JOIN 하나의테이블내에있는칼럼끼리연결하는조인이필요할때사용 WHERE 절을사용한 SELF JOIN 한테이블에두개의칼럼을연결하여 EQUI JOIN 하는조인방식 JOIN ~ ON절을사용한 SELF JOIN 사용법 : SELECT table1.column, table2.column FROM table1 JOIN table2 ON table1.column = table2.column - 17 -