본문 바로가기

SQLD

(51)
[SQLD : Ⅴ. SQL 최적화 기본 원리] 1. 옵티마이저와 실행계획 * 옵티마이저 - 옵티마이저(Optimizer)는 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 역할을 수행 - 관계형 데이터베이스는 궁극적으로 SQL문을 통해서만 데이터를 처리할 수 있음 - 다양한 실행 방법들 중에서 최적의 실행 방법을 결정하는 것이 바로 옵티마이저의 역할 - 대부분의 관계형 데이터베이스는 비용기반 옵티마이저만을 제공 - 규칙기반 옵티마이저의 규칙은 보편 타당성에 근거한 것 - 규칙기반 옵티마이저 규칙(우선 순위)을 가지고 실행계획을 생성 이용 가능한 인덱스 유무와 (유일, 비유일, 단일, 복합 인덱스)종류, SQL문에서 사용하는 연산자(=, 조건절에서 WHERE A=10 AND B=1 형태로 검색하는 방식 규칙 9. Single column index : 단일 칼럼 인..
[SQLD : Ⅳ. SQL 활용] 8-2. 절차형 SQL * User Defined Function 생성과 활용 - SUM, SUBSTR, NVL 등의 함수는 벤더에서 미리를 만들 수도 있다 - Function이 Procedure와 다른 점은 RETURN을 사용해서 하나의 값을 반드시 되돌려 줘야 한다는 것 [예제] K-리그 8월 경기결과와 두 팀간의 점수차를 ABS 함수를 사용하여 절대값으로 출력한다. Oracle SELECT SCHE_DATE 경기일자, HOMETEAM_ID || ' - ' || AWAYTEAM_ID 팀들, HOME_SCORE || ' - ' || AWAY_SCORE SCORE, ABS(HOME_SCORE - AWAY_SCORE) 점수차 FROM SCHEDULE WHERE GUBUN = 'Y' AND SCHE_DATE BETWEEN '201..
[SQLD : Ⅳ. SQL 활용] 8-1. 절차형 SQL * 절차형 SQL 개요 - 절차 지향적인 프로그램이 가능하도록 DBMS 벤더별로 PL(Procedural Language)/SQL(Oracle), SQL/PL(DB2), T-SQL(SQL Server) 등의 절차형 SQL을 제공 - 절차형 SQL을 이용하면 SQL문의 연속적인 실행이나 조건에 따른 분기처리를 이용하여 특정 기능을 수행하는 저장 모듈을 생성 가능 * PL/SQL 개요 - PL/SQL 특징 PL/SQL은 Block 구조로 되어있어 각 기능별로 모듈화가 가능하다. 변수, 상수 등을 선언하여 SQL 문장 간 값을 교환한다. IF, LOOP 등의 절차형 언어를 사용하여 절차적인 프로그램이 가능하도록 한다. DBMS 정의 에러나 사용자 정의 에러를 정의하여 사용할 수 있다. PL/SQL은 Oracl..
[SQLD : Ⅳ. SQL 활용] 7. DCL * DCL 개요 - DML, TCL 명령어들 이외에도 유저를 생성하고 권한을 제어할 수 있는 DCL(DATA CONTROL LANGUAGE) 명령어 * 유저와 권한 - 유저 생성과 시스템 권한 부여 [예제] SCOTT 유저로 접속한 다음 PJS 유저(패스워드: KOREA7)를 생성해 본다. Oracle CONN SCOTT/TIGER 연결되었다. CREATE USER PJS IDENTIFIED BY KOREA7; CREATE USER PJS IDENTIFIED BY KOREA7; * 1행에 오류: ERROR: 권한이 불충분하다 SCOTT 유저는 유저를 생성할 권한을 부여받지 못했기 때문에 권한이 불충분하다는 오류가 발생 Oracle의 DBA 권한을 가지고 있는 SYSTEM 유저로 접속하면 유저 생성 권한을..
[SQLD : Ⅳ. SQL 활용] 6. 윈도우 함수 * WINDOW FUNCTION 개요 - 인라인 뷰를 이용해 복잡하게 작성해야 하던 것을 부분적이나마 행과 행간의 관계를 쉽게 정의하기 위해 만든 함수 - WINDOW 함수는 다른 함수와는 달리 중첩(NEST)해서 사용하지는 못하지만, 서브쿼리에서는 사용할 수 있다. * WINDOW FUNCTION 종류 - 첫 번째, 그룹 내 순위(RANK) 관련 함수는 RANK, DENSE_RANK, ROW_NUMBER 함수 - 두 번째, 그룹 내 집계(AGGREGATE) 관련 함수는 일반적으로 많이 사용하는 SUM, MAX, MIN, AVG, COUNT 함수 - 세 번째, 그룹 내 행 순서 관련 함수는 FIRST_VALUE, LAST_VALUE, LAG, LEAD 함수 - 네 번째, 그룹 내 비율 관련 함수는 CUM..
[SQLD : Ⅳ. SQL 활용] 5. 그룹 함수 * 데이터 분석 개요 - AGGREGATE FUNCTION GROUP AGGREGATE FUNCTION이라고도 부르며, GROUP FUNCTION의 한 부분으로 분류 COUNT, SUM, AVG, MAX, MIN 외 각종 집계 함수들이 포함 - GROUP FUNCTION 소계, 중계, 합계, 총 합계 등 여러 레벨의 결산 보고서를 만드는 것이 중요 업무 중의 하나 여러 단계의 SQL을 UNION, UNION ALL로 묶은 후 하나의 테이블을 여러 번 읽어 다시 재정렬하는 복잡한 단계 CASE 함수를 이용하면 쉽게 원하는 포맷의 보고서 작성도 가능 소그룹 간의 소계를 계산하는 ROLLUP 함수, GROUP BY 항목들 간 다차원적인 소계를 계산 할 수 있는 CUBE 함수, 특정 항목에 대한 소계를 계산하는..
[SQLD : Ⅳ. SQL 활용] 4. 서브쿼리 - 서브쿼리는 하나의 SQL 문 안에 포함되어 있는 또 다른 SQL문을 말함 - 알려지지 않은 기준을 이용한 검색을 위해 사용 - 조인에 참여하는 모든 테이블이 대등한 관계, 참여하는 모든 테이블의 컬럼을 어느 위치에서 자유롭게 사용 가능 - 1:1 관계의 테이블이 조인하면 레벨의 집합이 생성, 1:M 관계의 체이블을 조인하면 M 레벨의 집합 생성 M:N 관계 테이블을 조인하면 MN 레벨의 집합이 결과로 생성 ① 서브쿼리를 괄호로 감싸서 사용한다. ② 서브쿼리는 단일 행(Single Row) 또는 복수 행(Multiple Row) 비교 연산자와 함께 사용 가능하다. 단일 행 비교 연산자는 서브쿼리의 결과가 반드시 1건 이하이어야 하고 복수 행 비교 연산자는 서브쿼리의 결과 건수와 상관 없다. ③ 서브쿼리..
[SQLD : Ⅳ. SQL 활용] 3. 계층형 질의와 셀프 조인 * 계층형 질의 - 테이블에 계층형 데이터 존재 시 데이터를 조회하기 위해 계층형 질의 사용 - 계층형 데이터는 동일 테이블에 계층적으로 상위와 하위 데이터가 포함된 데이터 - 엔티티를 순환관계 데이터 모델로 설계할 경우 계층형 데이터 발생 - 순환관계 데이터 모델의 예로 조직, 사원, 메뉴가 있음 - 계층형 구조에서 A읭 하위 사원은 B,C 이고 B 하위사원은 없음 * 오라클 계층형 질의 - START WITH절 : 계층 구조 전개의 시작 위치를 지정하는 구문. 즉, 루트 데이터를 지정한다.(액세스) - CONNECT BY절 : 다음에 전개될 자식 데이터를 지정하는 구문. 자식 데이터는 CONNECT BY절에 주어진 조건을 만족해야 함.(조인) - PRIOR : CONNECT BY절에 사용되며, 현재 ..