Hueestory

sqld 2과목 [1. SQL 기본] 본문

challenge/sqld(完)

sqld 2과목 [1. SQL 기본]

히명 2024. 11. 9. 20:46

2-1. 관계형 데이터베이스 개요

 

데이터베이스 : 데이터의 집합, 꼭 형식을 갖추기 않아도 엑셀 파일을 모아 둔다면 그것 또한 데이터베이스(추상적)

DBMS : 데이터를 효과적으로 관리하기 위한 시스템 ex) ORACLE, MYSQL

SQL

- 관계형 데이터베이스에서 데이터의 조회 및 조작, DBMS 시스템 관리 기능을 명령하는 언어

- DDL, DML, DCL 등으로 구분하며 대/소문자 구분하지 않음

 

관계형 데이터베이스 구성 요소

- 계정 : 데이터의 접근 제한을 위한 여러 업무별/시스템별 계정이 존재

- 테이블 : DBMS의 DB  안에서 데이터가 저장되는 형식

- 스키마 : 테이블이 어떠한 구성으로 되어있는지, 어떠한 정보를 가지고 있는지에 대한 기본적인 구조를 정의

 

테이블

정의

- 데이터가 저장되는 단위

- 엑셀에서의 행(low)과 열(column). column은 속성이라고도 함

특징

- 하나의 테이블은 반드시 하나의 user 소유

- 1:1, 1:N, N:N의 관계가 가능

- 테이블명은 중복될 수 없지만, 소유자가 다른 경우 같은 이름으로 생성 가능

- 데이터는 행 단위로 입력/삭제되며 수정은 값의 단위로 가능

 

관계형 데이터베이스 특징

장점

- 데이터의 분류, 정렬, 탐색 속도가 빠름

- 신뢰성이 높고, 데이터의 무결성 보장

단점

- 기존의 작성된 스키마를 수정하기 어려움

- 데이터베이스의 부하를 분석하는 것이 어려움

 

데이터 무결성

- 데이터의 정확성과 일관성을 유지하고, 데이터에 결손과 부정합이 없음을 보증하는 것

- 데이터 무결성을 유지하는 것이 데이터베이스 관리시스템에 중요한 기능

 

데이터 무결성 종류

- 개체 무결성 : 기본키는 NULL 값이나 중복값을 가질 수 없음

- 참조 무결성 : 외래키 값은 NULL 이거나 참조 테이블의 기본키 값과 동일해야 함

- 도메인 무결성 : 주어진 속성 값이 정의된 도메인에 속한 값이어야 함

- NULL 무결성 : 특정 속성에 대해 NULL을 허용하지 않는 특징

- 고유 무결성 : 특정 속성에 대해, 값이 중복되지 않는 특징

- 키 무결성 : 하나의 관계에는 적어도 하나의 키가 존재해야 함

 

ERD(Entity Relationship Diagram)

- 테이블 간 서로의 상관 관계를 그림으로 표현한 것

- 현실 세계 데이터는 엔터티(Entity), 관계(Relationship), 속성(Attribute) 3가지의 구성으로 모두 표현 가능

 

2-2. SELECT 문

SQL 종류

- DDL : CREATE, ALTER, DROP, TRUNCATE / 데이터 정의, 구조 자체를 변경, ROLLBACK으로 취소 불가능

- DML : INSERT, DELETE, UPDATE, MERGE / 데이터 값 자체를 변경

- DCL : GRANT, REVOKE / 데이터를 권한으로 제어 

- TCL : COMMIT, ROLLBACK / 트랜잭션 제어

- DQL : SELECT

 

/*SELECT 문 구조*/

SELECT * | 컬럼명 | 표현식
FROM 테이블명 또는 뷰명
WHERE 조회할 데이터 조건
GROUP BY 그룹핑컬럼명
HAVING 그룹핑 대상 필터링 조건
ORDER BY 정렬컬럼명;

- 위 6개 절로 구성

- GROUP BY와 HAVING은 순서가 바뀔 수 있지만, 각 절의 순서대로 작성해야 함

- FROM>WHERE>GROUP BY>HAVING>SELECT>ORDER BY 순서대로 실행

 

SELECT 절

- SELECT 문장을 사용하여 불러올 걸럼명, 연산 결과를 작성하는 절(CULUMN에 대한 선택)

- *를 사용하여 전체 컬럼명을 불러올 수 있음

- 표시할 대상 컬럼에 AS를 사용해 Alias(별칭) 지정 가능, AS 생략 가능

 

특징 및 주의사항

- SELECT 문보다 늦게 수행되는 ORDER BY 절에서만 컬럼 별칭 사용 가능

- 한글 사용 가능

- 이미 존재하는 예약어는 별칭으로 사용 불가, ex) agv, count, decode, SELECT, FROM 등

- 별칭에 공백, 특수문자를 표함하는 경우('_' 제외), 별칭 그대로 전달할 경우 쌍따옴표(" ") 사용

 

FROM 절

- 데이터를 불러올 테이블명 또는 뷰명 전달

- 테이블 여러 개 전달 가능(컴마로 구분) → 조인 조건 없이 테이블명만 나열 시 카타시안 곱 발생

- 테이블 별칭 선언 가능(ORACLE은 AS 사용 불가, SQL Server는 사용/생략 가능)

- ORACLE에서는 FROM 절 생략 불가(의미상 필요 없는 경우 DUAL 더미 테이블 선언)

- SQL Server에서는 FROM 절 필요 없을 경우 생략 가능

- 테이블 별칭을 선언하면 별칭만 사용해야 함

 

2-3 함수

- input value와 output value의 관계를 정의한 객체

- 데이터의 계산을 수행하거나 개별 데이터의 항목을 수정

- 표시할 날짜 및 숫자 형식을  지정

- 열 데이터의 유형을 변환

 

함수의 종류

입력값의

- 단일행 함수 : input과 output이 1:1

- 복수행 함수 : 여러 건의 데이터를 동시에 입력 받아서 하나의 요약값을 리턴, ex) sum, min, max

 

입/출력값의 타입

1. 문자형 함수

- 문자열 결합, 추출, 삭제 등을 수행

- 단일행 함수 형태

- output은 대부분 문자값(length, instr 제외)

종류

- LOWER : 소문자로

- UPPER : 대문자로 

- SUBSTR(대상, m, n) : 문자열 m 위치에서 n개의 문자열 추출, n 생략 시 끝까지 추출, 음의 값이면 뒤에서부터

- INSTR(대상, 찾을문자열, m, n) : m위치에서 시작하여 n번째 발견된 문자열 위치를 반환, n 생략시 첫 발견 위치

- LTRIM, RTRIM(대상, 삭제문자열) : 좌/우측에서 시작하여 특정 문자열을 삭제, 대상이 아닌 문자열을 만나면 중단

- TRIM(대상) : 특정 문자열을 양쪽에서 삭제

- LPAD,RPAD(대상, n, 문자열) : 좌/우측에 문자열을 추가하여 총 n의 길이 리턴

- CONCAT(대상1, 대상2) : 문자열 결합

- LENGTH(대상) : 문자열 길이

- REPLACE(대상, 찾을문자열, 바꿀문자열) : 문자열 치환 및 삭제

- TRNSLATE(대상, 찾을문자열, 바꿀문자열) : 글자를 1:1로 치환

*SQL Server : SUBSTR → SUBSTRING, LENGTH → LEN, INSTR → CHARINDEX

 

2. 숫자형 함수

- 숫자를 입력하면 숫자 값을 반환

- 단일행 함수 형태의 숫자 함수

- ORACLE과 SQL Server 함수 거의 동일

종류

- ABS(숫자) : 절대값 반환(양수)

- ROUND(숫자, 자리수) : 소수점 특정 자리에서 반올림, 자리수 생략 시 첫째자리에서 반올림, 입력 시 n+1에서 반올림

- TRUNC(숫자, 자리수) : 소수점 특정 자리 아래 모두 버림

- SIGN(숫자) : 양수면 1, 음수면 -1, 0이면 0

- FLOOR(숫자) : 작거나 같은 최대 정수 리턴(내림)

- CEIL(숫자) : 크거나 같은 최소 정수 리턴(올림)

- MOD(숫자1, 숫자2) : 숫자1을 숫자2로 나누어 나머지 반환

- POWER(M, N) : m^n

- SQRT(숫자) : 루트값

 

3. 날짜형 함수

- 날짜 연산과 관련된 함수

- ORACLE과 SQL Server 함수 거의 다름

종류

- SYSDATE : 현재 날짜와 시간

- CURRENT_DATE : 현재 날짜

- CURRENT_TIMESTAMP : 현재 타임스탬프

- ADD_MONTHS(날짜, n) : 날짜에서 n개월 후

- MONTHS_BETWEEN(날짜1, 날짜2) : 날짜1과 날짜2의 개월 수

- LAST_DAY(날짜) : 주어진 월의 마지막 날짜

- NEXT_DAY(날짜, n) : 주어진 날짜 이후 지정된 요일의 첫 번째 날짜

- ROUND(날짜, 자리수) : 날짜 반올림

- TRUNC(날짜, 자리수) : 날짜 버림

*SQL Server : SYSDATE  → GETDATE, ADD_MONTHS → DATEADD, MONTHS_BETWEEN → DATEDIFF

 

4. 변환 함수

- 값의 데이터 타입을 변환

- 문자를 숫자로, 숫자를 문자로, 날짜를 문자로 변경

종류
- TO_NUMBER(문자) : 숫자 타입으로 변경

- TO_CHAR(대상, 포맷) : 날짜/숫자의 포맷 변경, 리턴은 문자타입, 숫자의 경우 5자리로 리턴(앞 자리수 0)

- TO_DATE(문자, 포맷) : 주어진 문자를 포맷 형식에 맞게 읽어 날짜로 리턴

- FORMAT(날짜, 포맷) : 날짜의 포맷 변경

- CAST(대상 AS 데이터타입) : 대상을 주어진 데이터타입으로 변환

*SQL Server : TO_NUMBER, TO_DATE, TO_CHAR → CONVERT(포맷 전달 시), 단순 변환일 경우 주로 CAST 사용

 

5. 그룹 함수

- 다중행 함수

- 여러 값이 input값으로 들어가서 하나의 요약된 값으로 리턴

- GROUP BY와 함꼐 자주 사용됨

- ORACLE과 SQL Server 거의 동일

종류(모두 NULL을 제외하고 연산

- COUNT(대상) : 행의 수, NULL만 있는 경우 0

- SUM(대상) : 총 합

- AVG(대상) : 평균

- MIN(대상) : 최솟값

- MAX(대상) : 최댓값

- VARIANCE(대상) : 분산

- STDDEV(대상) : 표준편차

 

6. 일반 함수

- 기타 함수(NULL 치환 함수 등)

종류

- DECODE(대상, 값1, 리턴1, ..., 그 외 리턴) : 대상이 값1이면 리턴1, ..., 그 외에는 그 외 리턴값 리턴, 생략시 NULL 리턴

- NVL(대상, 치환값) : 대상이 NULL이면 치환값으로 치환하여 리턴

- NVL2(대상, 치환값1, 치환값2) :  대상이 NULL이면 치환값2, NULL이 아니면 치환값1로 치환

- COALESCE(대상1, ..., 그 외 리턴) : 대상들 중 NULL이 아닌 값 출력(왼쪽부터), 모두 NULL이면 그 외 리턴값 리턴

- ISNULL(대상, 치환값) : 대상이 NULL이면 치환값이 리턴

- NULLIF(대상1, 대상2) : 두 값이 같으면 NULL, 다르면 대상1 리턴

- CASE문 : 조건별 치환 및 연산 수행

 

SELECT DEPTNO,
	CASE DEPTNO WHEN 5 THEN 'A'
   	CASE DEPTNO WHEN 10 THEN 'B'
    	CASE DEPTNO WHEN 15 THEN 'C'
    			    ELSE 'ERR'
    	END AS DNAME1
FROM EMP;
SELECT DEPTNO,
	CASE WHEN DEPTNO = 5 THEN 'A'
    	CASE WHEN DEPTNO = 10 THEN 'B'
   	CASE WHEN DEPTNO = 15 THEN 'C'
    			      ELSE 'ERR'
   	END AS DNAME1
FROM EMP;

둘 다 가능

 

2-4. WHERE 절

SELECT * | 컬럼명 | 표현식
FROM 테이블명 또는 뷰명
WHERE 조회할 데이터 조건;

 

- 테이블의 데이터 중 원하는 조건에 맞는 데이터만 조회하고 싶은 경우(에 대한 선택)

- AND, OR 사용해 여러 조건 동시 전달 가능

- NULL 조회 시 IS NULL/IS NOT NULL 연산자 사용('=' 연산자로 조회 불가)

 

특징 및 주의사항

- 문자나 날짜 상수 표현 시 반드시 홑따옴표(' ') 사용

- ORACLE은 문자 상수의 경우 대소문자를 구분

- MSSQL은 기본적으로 문자상수의 대소문자를 구분하지 않음

 

종류

- = : 같은 조건

- !=, <> : 같지 않는 조건

- > : 큰 조건

- >= : 크거나 같은 조건

- < : 작은 조건

- <= : 작거나 같은 조건

- BETWEEN A AND B : A와 B 사이에 있는 범위 값을 모두 검색(A, B 포함, 문자나 날짜도 가능)

ex) WHERE SCORE >= 50 AND SCORE <= 80 → WHERE SCORE BETWEEN 50 AND 80

- IN(A, B, C) : A이거나 B이거나 C인 조건을 검색

- LIKE : 특정 패턴을 가지고 있는 조건, %와 _와 함께 사용, _는 한 자리를 의미

ex) ENAME LIKE 'S%' : 이름이 S로 시작

ENAME LIKE '%S%' : 이름이 S를 포함

ENAME LIKE '%S' : 이름이 S로 끝나는

ENAME LIKE '_S%' : 이름의 두 번째 글자가 S인

ENAME LIKE '__S__' : 이름의 가운데 글자가 S이며 길이가 5글자

- Is Null/ Is Not Null : NULL/NULL이 아닌 값을 검색

- A  AND B : A 조건과 B 조건을 모두 만족하는 값 검색

- A OR B : A 조건이나 B 조건 중 한가지라도 만족하는 값을 검색

*IN : WHERE ENAME = 'A' OR ENAME = 'B' → WHERE ENAME IN ('A', 'B')

- NOT A : A가 아닌 모드 조건을 검색

 

2-5 1. GROUP BY 절

SELECT * | 컬럼명 | 표현식
FROM 테이블명 또는 뷰명
WHERE 조회할 데이터 조건
GROUP BY 그룹핑컬럼명
HAVING 그룹핑 대상 필터링 조건;

- 각 행을 특정 조건에 따라 그룹으로 분리하여 계산하도록 하는 구문식

- GROUP BY 절에 그룹을 지정할 컬럼을 전달(여러 개 가능)

- 그룹 연산에서 제외할 대상이 있다면 미리 WHERE 절에서 해당 행을 제외

- 그룹에 대한 조건은 WHERE 절에서 사용할 수 없음(SUM, COUNT, MIN 등)

- GROUP BY 절을 사용하면 데이터가 요약되므로 요약되기 전 데이터와 함께 출력할 수 없음

 

2-5 2. HAVING 절

- 그룹 함수 결과를 조건으로 사용할 때 사용하는 절

- WHERE 절을 사용하여 그룹을 제한할 수 없으므로 HAVING 절에 전달

- HAVING 절이 GROUP BY 절 앞에 올 수는 있지만 뒤에 쓰는 것을 권장

- 내부적 연산 순서가 SELECT 절보다 먼저이므로 SELECT 절에서 선언된 Alias 사용 불가

 

2-6. ORDER BY 절

SELECT * | 컬럼명 | 표현식
FROM 테이블명 또는 뷰명
WHERE 조회할 데이터 조건
GROUP BY 그룹핑컬럼명
HAVING 그룹핑 대상 필터링 조건
ORDER BY 정렬컬럼명 [ASC|DESC];

- 출력하는 행의 순서를 사용자가 변경하고자 할 때 사용

- ASC, DESC(생략 시 ASC)

- 유일하게 SELECT 절에 정의한 컬럼 별칭 사용 가능

- SELECT 절에 선언된 순서대로의 숫자 전달 가능

- 숫자 1, 2, 3 등을 사용한 경우 SELECT의 컬럼 순서를 의미

 

정렬 순서(ASC)

- 한글 : 가, 나, 다, ...

- 영어 : A, B, C,...

- 숫자 : 1, 2, 3,...

- 날짜 : 과거 날짜부터 시작해서 최근 날짜로 정렬

 

NULL의 정렬

- NULL을 포함한 값의 정렬 시 ORACLE은 기본적으로 NULL을 마지막, SQL Server처음에 배치

- ORACLE은 ORDER BY 절에 NULLS LASS|NULLS FIRST를 명시하여 NULL 정렬 순서 변경 가능

 

2-7.  JOIN

- 여러 테이블의 데이터를 사용하여 동시 출력하거나 참조 할 경우 사용

- FROM 절에 조인할 테이블 나열

- ORACLE 표준은 테이블 나열 순서 상관 없지만 ANSI 표준은 OUTER JOIN 시 순서 중요

- WHERE 절에서 조인 조건을 작성(ORACLE 표준)

- 동일한 열 이름이 여러 테이블에 존재할 경우 열 이름 앞에 테이블 이름이나 테이블 Alias 붙임

- N개의 테이블을 조인하려면 최소 N-1개의 조인 조건이 필요

- ORACLE 표준과 ANSI 표준이 서로 다름

 

조인 종류

- 조건의 형태에 따라

   - EQUI JOIN(등가) : JOIN 조건이 동등 조건인 경우

   - NON-EQUI JOIN : JOIN 조건이 동등 조건이 아닌 경우

 

조건 결과에 따라

   - INNER JOIN : JOIN 조건에 성립하는 데이터만 출력하는 경우

   - OUTER JOIN : JOIN 조건이 성립하지 않는 데이터도 출력하는 경우(LEFT/RIGHT/FULL OUTER JOIN)

   - NATURAL JOIN : 조인 조건 생략 시 두 테이블에 같은 이름으로 자연 연결되는 조인

   - CROSS JOIN : 조인 조건 생략 시 두 테이블의 발생 가능한 모든 행을 출력하는 조인

   - SELF JOIN : 하나의 테이블을 두 번 이상 참조하여 연결하는 조인

 

1. EQUI JOIN

SELECT * | 테이블명1.컬럼명, 테이블명2.컬럼명
FROM 테이블명1, 테이블명2
WHERE 테이블명1.컬럼명 = 테이블명2.컬럼명;

- 조인 조이 '=' 비교를 통해 같은 값을 가지는 행을 연결하여 결과를 얻는 조인 방법(NULL은 제외)

- SQL 명령문에서 가장 많이 사용하는 조인 방법

- FROM 절에 조인하고자 하는 테이블을 모두 명시

- FROM 절에 명시하는 테이블은 테이블 별칭(Alias) 사용 가능

 

2. NON-EQUI JOIN

SELECT * | 테이블명1.컬럼명, 테이블명2.컬럼명
FROM 테이블명1, 테이블명2
WHERE 테이블명1.컬럼명 비교조건 테이블명2.컬럼명;

- 테이블을 연결짓는 조인 컬럼에 대한 비교조건이 '<', BETWEEN A  AND B 와 같이 '=' 조건이 아닌 연산자를 사용

 

세 테이블 이상의 JOIN

- 관계를 잘 파악하여 모든 테이블이 연결되도록 조인 조건 명시

- N개의 테이블의 경우 최소 N-1개의 조인 조건 필요

 

3. SELF JOIN

- 한 테이블 내 각 행끼리 관계를 갖는 경우

- 한 테이블을 참조할 때마다 명시해야 함

- 테이블명이 중복되므로 반드시 테이블 별칭 사용

 

2-8 표준 JOIN

 

표준 JOIN

- ANSI 표준으로 작성되는 INNER JOIN, CROSS JOIN, NATURAL JOIN, OUTER JOIN

 

1. INNER JOIN

- 내부 조인이라고 하며 조인 조건이 일치하는 행만 추출

- ANSI 표준의 경우 FROM 절에 INNER JOIN 혹은 줄여서 JOIN을 명시

- ANSI 표준의 경우 USING 이나 ON 조건절을 필수적으로 사용

 

ON 절

SELECT 테이블1.컬럼명, 테이블2.컬럼명
FROM 테이블1 INNER JOIN 테이블2
ON 테이블1.조인컬럼 = 테이블2.조인컬럼;
SELECT 테이블1.컬럼명, 테이블2.컬럼명
FROM 테이블1 JOIN 테이블2
ON 테이블1.조인컬럼 = 테이블2.조인컬럼;

둘 다 가능

- 조인할 양 컬럼의 컬럼명이 서로 다르더라도 사용 가능

- ON 조건의 괄호는 생략 가능

- 컬럼명이 같을 경우 테이블 이름이나 별칭을 사용하여 명확하게 지정(테이블 출처)

- ON 조건절에서 조인조건 명시, WHERE 절에서는 일반조건 명시

 

USING 절

SELECT 테이블1.컬럼명, 테이블2.컬럼명
FROM 테이블1 INNER JOIN 테이블2
USING (동일컬럼명);
SELECT 테이블1.컬럼명, 테이블2.컬럼명
FROM 테이블1 JOIN 테이블2
USING (동일컬럼명);

둘 다 가능

- 조인할 컬럼명이 같을 경우 사용

- Alias나 테이블 이름 같은 접두사 붙이기 불가

- 괄호 필수

 

2. NATURAL JOIN

SELECT 테이블1.컬럼명, 테이블2.컬럼명
FROM 테이블1 NATURAL JOIN 테이블2;

- 두 테이블 간의 동일한 이름을 가지는 모든 컬럼들에 대해 EQUI JOIN을 수행(NULL 불가)

- USING, ON, WHERE 절에서 조건 정의 불가

- JOIN에 사용된 컬럼들은 데이터 유형이 동일해야 하며 접두사 사용 불가

 

3. CROSS JOIN

SELECT 테이블1.컬럼명, 테이블2.컬럼명
FROM 테이블1 CROSS JOIN 테이블2;

- 테이블 간 JOIN 조건이 없는 경우 생성 가능한 모든 데이터들의 조합(카타시안 곱, NULL 포함)

- 양쪽 테이블 행의 수 끼리 곱한 수 만큼 데이터 조합 발생(m*n)

 

4. OUTER JOIN

- INNER JOIN과 대비되는 조인 방식

- JOIN 조건에서 동일한 값이 없는 행도 반환할 때 사용

- 두 테이블 중 한쪽에 NULL을 가지면 EQUI JOIN이 작동하지 않음 → 이를 출력 시 OUTER JOIN 사용

- 테이블 기준 방향에 따라 LEFT, RIGTH, FULL로 구분

- OUTER 생략 가능, ex) LEFT OUTER JOIN → LEFT JOIN

 

종류

LEFT OUTER JOIN

/* ORACLE 표준 */

SELECT *
FROM STUDENT S, PROFESSOR P
WHERE S.PROFNO = P.PROFNO(+)
AND S GRADE IN (1, 4);
/* ANSI 표준 */

SELECT S.STUDNO, S.NAME AS 학생명, S.GRADDE, S.PROFNO,
       P.PROFNO, P.NAME AS 교수명
FROM STUDENT S LEFT OUTER JOIN PROFESSOR P
ON S.PROFNO = P.PROFNO
WHERE S.GRADE IN (1, 4);

- FROM 절에 나열된 왼쪽 테이블에 해당하는 데이터를 읽은 후, 우측 테이블에서 JOIN 대상을 읽어옴

- 즉, 왼쪽 테이블이 기준이 되어 오른쪽 테이블 데이터를 채우는 방식

- 우측 값에서 같은 값이 없는 경우 NULL 값으로 출력

 

RIGHT OUTER JOIN

- LEFT OUTER JOIN의 반대

- 즉, 오른쪽 테이블이 기준이 되어 오른쪽 테이블 데이터를 채우는 방식

- FROM 절에 테이블 순서를 변경하면 LEFT OUTER JOIN으로 수행 가능

 

FULL OUTER JOIN

/* ANSI 표준 */

SELECT S.STUDNO, S.NAME AS 학생명, S.GRADDE, S.PROFNO,
       P.PROFNO, P.NAME AS 교수명
FROM STUDENT S FULL OUTER JOIN PROFESSOR P
ON S.PROFNO = P.PROFNO;
/* ORACLE 표준, LEFT OUTER JOIN UNION(+) RIGHT OUTER JOIN */

SELECT S.STUDNO, S.NAME AS 학생명, S.GRADDE, S.PROFNO,
       P.PROFNO, P.NAME AS 교수명
FROM STUDENT S PROFESSOR P
WHERE S.PROFNO = P.PROFNO(+)
UNION
SELECT S.STUDNO, S.NAME AS 학생명, S.GRADDE, S.PROFNO,
       P.PROFNO, P.NAME AS 교수명
FROM STUDENT S PROFESSOR P
WHERE S.PROFNO(+) = P.PROFNO;

- 두 테이블 전체 기준으로 결과를 생성하여 중복 데이터는 삭제 후 리턴

- ORACLE 표준에는 없음,  LEFT의 결과와 RIGHT의 결과의 UNION 연산 리턴과 동일

'challenge > sqld(完)' 카테고리의 다른 글

sqld 합격  (1) 2024.12.06
sqld 1과목  (0) 2024.11.09
Comments