#1 표준 조인
1) 순수 관계 연산자: relation 구조와 특성을 이용하는 연산자
- SELECT : WHERE 절로 구현 (조건에 맞는 행 추출)
- JOIN : 다양한 JOIN 기능으로 구현 (두개 테이블 관계)
- DIVIDE : 현재 사용되지 않음
- PROJECT : SELECT절로 구현 (제시된 속성값만 추출해서 새로운 relation 만듦 / 이때 중복은 제거됨)
2) From 절의 JOIN 형태
- INNER JOIN : 한번에 2개가 동시에 올 수 없음
- NATURAL JOIN (자동 JOIN됨--> ALAS X)
- USING 조건절 (자동 JOIN됨--> ALAS X)
- ON 조건절
-BETWEEN 1 AND 3일 경우 1,2,3을 의미함
- CROSS JOIN (product 개념 --> 조건절이 없을 경우 = 겹치는 열이름이 없을때)
- OUTER JOIN (LEFT, RIGHT, FULL)/(+) : 겹치는거 다 살리고 LEFT이면 겹치는거 이외희 RIGHT 테이블 제거 (반대 똑같음)
- FULL OUTER : LEFT OUTER UNION RIGHT OUTER
- UNION vs. UNION ALL : UNION은 중복제거 / UNION ALL은 중복제거 X --> UNION ALL이 연산 더 빠름
* JOIN에서 ORDER BY는 SELECT 이후에 수행됨(마지막에 수행됨)
3) 집합 연산자 종류
- UNION: 중복 제거 합집합
- UNION ALL: 중복 살리고 합집합 / 열이 겹칠 경우 ALAS 는 하나로 함(먼저 나온 것으로) / UNION ALL은 데이터를 2배로 가져옴
- INTERSECT : 교집합--> 중복 제거 (INNER JOIN의 경우 중복 제거됨) / 따라서 1:1 양쪽 필수 관계에서 결과값은 같아짐
- EXCEPT(=MINUS): 차집합
#2 계층형 질의 (상위 하위 존재하는 query_열이름에 상위 하위있는지 확인하기)
1) 특징
- CTE: 메모리상에 존재하는 table 호출
- 재귀 : start 앵커 멤버 실행 (= 처음 시작을 정의)
- WHERE절은 필터 조건만 시행
- PRIOR은 SELECT, WHERE, CONNECT BY에서 쓸 수 있음
-PRIOR 자식=부모 : 순방향(부모-->자식)
2) 문제 풀때 유의하기
- level 확인 (어떤게 start인지): START WITH
- level (start 점) 기준으로 위아래 순서 확인
- JOIN 확인
- ORDER BY 확인: ORDER SIBLINGS BY(형제 노드 사이에서 정렬을 수행)
3) 기타
- SELF JOIN : 한 테이블 내에서 두 칼럼이 연관 관계가 있을 경우
- 일자별 누적 구하는 문제에서 SELECT 열은 큰값을 가지는 열이어야함!
- DISTINCT: 중복 제거
- || : 연결 연산자 (ex. A||B : A열과 B열에 있는 값을 합친다)
#3 서브 쿼리
1) 서브 쿼리의 종류
- Single Row 서브 쿼리 (단일 행 서브쿼리) : 단일행 비교 연산자 < = > => =< <> +(IN, ALL, ANY, SOME, EXISTS 가능)
- Multi Row 서브 쿼리 (다중 행 서브쿼리): IN, ALL, ANY, SOME, EXISTS
- IN vs. EXISTS
IN(=or, 여러개의 값 중 하나라도 일치하게 되면 불러와+ NULL값 존재하면 FALSE )
EXISTS(TRUE or not 존재하는지만 체크+ NULL값 존재해도 TRUE)
- Multi Column 서브 쿼리 (다중 칼럼 서브쿼리): 여러 컬럼 반환, 메인 쿼리 조건절에서 여러 칼럼을 동시에 비교 가능 but 서브 쿼리& 메인 쿼리에서 비교하고자 하는 칼럼 개수와 칼럼의 위치가 동일해야함 (SQL에서 지원 X)
- 스칼라쿼리: SELECT 절에 사용하는 서브쿼리로서 JOIN을 대체하는 목적으로 자주 쓰임
- INLINE VIEW: FROM 절에서 사용되는 서브쿼리로 하나의 테이블에 대한 view로 쓰인다 (=DYNAMIC VIEW)
* 서브쿼리는 ORDER BY 쓸 수 없음! 하지만 ORDER BY 안에서는 서브쿼리 쓰는 건 가능
2) 동작 방식에 따른 서브쿼리
- 비연관 query: 서브쿼리가 메인쿼리의 column을 가지지 않음 (주로 메인쿼리에 값을 제공하기 위한 목적으로 사용함)
- 연관 query: 서브쿼리가 메인쿼리의 column을 가짐 (조건으로 메인쿼리의 열을 사용함)
3) VIEW 사용의 장점
- 독립성
-편리성
-보안성
#4 그룹 함수
- ROLL UP : 집계함수 (group by랑 같이쓰임)
- NVL: data값이 null일때 임의 설정값으로 처리
- GROUP BY 없이 HAVING절 사용 가능함
- 코드 보는 순서: FROM>ON>GROUP BY>SELECT
1) GROUP BY CUBE: 집계 가능한 모든 결합
EX) GROUP BY CUBE (A.설비ID, B.에너지코드): 설비 ID와 에너지 코드 가능한 모든 조합을 결합하게됨
2) GROUPING SET: 계층 구조 없이 열에 대한 합계만을 각각 생성
EX) GROUPING SETS((A.설비ID),(B.에너지코드),(A.설비ID, B.에너지코드),()) : 모든 조합을 보기 위해 각각 다 불러옴
* 단 ROLLUP에 비해 시스템에 부담을 주므로 CUBE 사용에 주의해야함
#5 윈도우 함수_ GROUP BY절과 같이 들어갈때 문제 나옴..!
1) RANK: 순위
- RANK: 동일순위, 중간순위는 무시
- DENSE_RANK: 동일 순위, 중간 순위도 활용
- ROW_NUMBER: 유일 순위
2) 일반 집계(SUM, COUNT, MAX, MIN, AVG)
3) 그룹내 행 순서 (first_value, last_value, LAG, LEAD)
- LAG: 바로 앞의 값
- LEAD : 바로 뒤의 값
* 글자수가 긴게(LEAD 4글자) 뒤의 값을 의미한다고 생각하기
4) 그룹내 비율 함수
특징 (무조건 OVER 들어감)
- PARPITION과 GROUP BY 구문은 의미적으로 유사함
- PARTITON 구문이 없으면 전체 집합을 하나의 PARTITION으로 정의한다
- 윈도우 함수 적용 범위는 PARTITION을 넘을 수 없다
- 윈도우 함수는 group by절에 의한 group 함수의 값을 모두 구한 후에 윈도우 함수가 실행된다
- order by까지 모두 실행된 후 window 함수가 실행된다
#6 권한 부여 (DCL)
1) 권한 부여
GRANT privileges(=SELECT, INSERT, UPDATE) [ON OBJECT] TO USER;
* GRANT CREATE SESSION TO USER; (여기서는 ON 사용 금지!)
2) 권한 회수
REVOKE privileges(=SELECT, INSERT, UPDATE) [ON OBJECT] TO USER;
* REVOKE INSERT ON R FROM KIM CASCADE; # KIM이 다른 사람에게 부여한 INSERT 권한도 함께 회수됨
3) ROLE
관리자가 사용자별로 권한을 관리해야하는 부담과 복잡함을 줄이기 위하여 다양한 권한을 그룹으로 묶어 관리할 수 있도록 사용자와 권한 사이에서 중개 역할을 수행하도록 기능을 제공
#7 절차형 SQL(PL/SQL)
1) 특징
- BLOCK 구조_ 통신량을 줄일 수 있다. 한번에 block으로 전부를 서버로 보내기 때문
- 절차적 프로그래이 가능하도록 함(IF, LOOF)
- DBMS 정의 에러나 사용자 정의 에러를 정의하여 사용가능
- 오라클에 내장되어 있음
- 응용 프로그램의 성능을 향상
- PROCEDURE, TRIGGER, USER DEFINED FUNCTION 객체를 PS/SQL로 작성할 수 있음
- TRANSACTION 별로 PROCEDURE, USER DEFINED FUNCTION 호출 가능하다
2) ROLLBACK 불가능하게하기 : execute immediate 'TRUNCATE TABLE DEPT':
3) 저장 모듈
- SQL 문장을 데이터 베이스 서버에 저장하여 사용자와 애플리케이션 상이에서 공유할 수 있도록 만든 일종의 SQL 컴포넌트 프로그램
- 독립적으로 실행되거나 or 다른 프로그램으로부터 실행될 수 있는 완전한 실행 프로그램
- 오라클 저장 모듈에는 PROCEDURE, USER DEFINED FUNCTION, TRIGGER 존재
* PROCEDURE vs. TRIGGER?
PROCEDURE> CREATE PROCEDURE 문법사용 / EXECUTE 명령어로 실행 / COMMIT, ROLLBACK 실행 가능
TRIGGER> CREATE TRIGGER 문법 사용/ 생성 후 자동으로 실행 / COMMIT, ROLLBACK 실행 안됨
(즉, TCL(ROLLBACK, COMMIT) 사용 안됨, 트랜젝션제어X)
* 정말 긴~~ 코드문제가 나온다면!!
* 먼저 지문을 읽고 핵심 단어 체크 + 핵심단어에 해당하는 코드 체트 + 대략적으로 flow 글로 써본 후 선지로!
* 2개를 고르는 문제 꼭 표시하기
* 옳은 것 옳지 않은것!!! 확인 꼭 꼭!!
'SQL스터디 > SQL자격검정시험_정리' 카테고리의 다른 글
SQL자격검정실전문제_데이터 모델과 성능(2) (0) | 2022.09.04 |
---|---|
SQL 자격검정실전문제_데이터모델링의 이해(1) (0) | 2022.09.04 |