1. 테이블과 스키마 관계

- 스키마: 테이블 등의 저장소 객체를 저장하는 곳
- 각 계정마다 존재하며 이름이 계정명과 동일함

- 쿼리 작성 시 스키마, 테이블, 컬럼 모두 작성해야함
BUT 접속한 계정기준으로 스키마 생략,
테이블 한개만 있다면 테이블도 생략
2. 여러 테이블 한번에 사용하기
- FROM 뒤에 테이블을 두 개 이상 입력
- 예시
SELECT *
FROM TB_CUST
, TB_CUST BADGE .
3. 테이블 명칭
- FROM 뒤에 테이블이 두 개 이상이라면 테이블을 명시해서 컬럼을 입력
- FROM 뒤 테이블에 별칭을 주면 작성이 더 쉬워짐
(FROM 별칭은 실제 현업에서 많이 사용하며 , 이때는 SELECT 처럼 AS 를 따로 입력하지 않습니다. )
- 주의! FROM 뒤 테이블에 별칭을 주면 이후에는 별칭만 사용해야 합니다.
- 예시 )
SELECT A. CUST_ID
, A. CUST_NAME
, B. CUST_ID
, B. BADGE_ID
FROM TB_CUST A --별칭
, TB_CUST_BADGE B --별칭
WHERE A. CUST_ID = B.CUST_ID ;
4. JOIN 의미, 원리
- 여러 테이블에서 필요한 데이터를 한번에 가져오는 기술
- 여러 테이블에서 필요한 컬럼들을 한번에 검색 할 수 있어 성능 증가
- 실제 실무에서는 3개 이상의 테이블을 조인하는 경우 多
- 카티션 조인 : 각각의 테이블에 대해 모든 경우의 수를 합쳐놓은 상태
예시) TB_CUST (튜플 7개) * TB_PRD (튜플 13개) = 출력된 튜플 개수 (91개)

- 조인 조건: 테이블 간에 특정 컬럼으로 연결
예시 1) 회원 테이블의 회원ID와 회원연락처 테이블의 회원ID가 똑같은 대상만 남겨놓는 조건
SELECT *
FROM 회원 A, 회원연락처 B
WHERE A. 회원ID = B.회원ID ;

예시 2)
SELECT *
FROM 회원 A , 회원연락처 B
WHERE A.회원ID = B.회원ID
AND A.회원ID = 'A0001'
AND B.구분코드 = '휴대폰' ;

- 일반 조건: 조인 조건이 아닌 경우
5. INNER JOIN, OUTER JOIN
1) INNER JOIN : 두 테이블 간에 조건에 일치하는 대상만 출력
- 예시)
SELECT A.회원ID
, A.이름
, B.연락처
FROM 회원 A
, 회원연락처 B
WHERE A.회원ID = B.회원ID ;

2) OUTER JOIN : 두 테이블 간에 특정 테이블을 기준으로 조건에 일치한지 않는 대상도 출력
- 예시
SELECT *
FROM 회원 A
, 회원연락처 B
WHERE A.회원ID = B.회원ID (+) ; -- (+) 기호는 OUTER JOIN을 의미, 없으면 INNER JOIN
-- (+) 기호가 붙어있는 쪽의 반대 테이블을 기준으로 함
-- (+) 기호는 오라클 데이터베이스에서만 사용하는 방식

6. ANSI
- (+) 기호는 오라클 데이터베이스에서만 사용하는 방식, ANSI(미국국립표준협회) 조인은 모든 DBMS 에서 사용가능

1) 오라클 조인과 ANSI의 차이점


- (+) 조건이 없다면 INNER JOIN 으로 연결하고 ON 추가에 조인조건을 입력 WHERE 에 일반조건을 입력합니다
- (+) 이 붙은 반대쪽 테이블의 방향으로 LEFT 혹은 RIGHT 를 결정하고 OUTER JOIN 으로 작성을 합니다. ON 에 조인조건 , WHERE 에 일반조건을 입력합니다
'DATA 분석 교육 과정 (2024.02~08) > SQL' 카테고리의 다른 글
SQL_DML(INSERT, UPDATE, DELETE), DDL(CREATE, ALTER, DROP, RENAME, TRUNCATE), 시퀀스, 뷰 (0) | 2024.02.28 |
---|---|
SQL_GROUP BY, HAVING, ORDER BY (0) | 2024.02.26 |
SQL_WHERE (비교조건, 논리조건, 부정연산, NULL, IN, BETWEEN, LIKE) (0) | 2024.02.24 |
SQL _ SELECT(사칙연산, 연결연산, 내장형함수, 형변환함수, NULL함수) (0) | 2024.02.24 |
SQL_데이터 모델링, SELECT(의미, 실행순서, *, DISTINCT, AS, NULL, 자료형, 리터럴) (0) | 2024.02.22 |