본문 바로가기
반응형

전체 글135

옵티마이저 옵티마이저 - db내부 핵심 엔진 옵티마이저와 실행계획 1. Parser 1) 문법적, 의미적 오류 확인 2) SQL과 실행계획이 라이브러리 캐시에 존재하는 확인 (1) 존재하면 (soft parsing) => sql과 실행계획을 라이브러리 캐시에서 찾아 바로 실행 (2) 존재하지 않으면 (hard parsing) => 옵티마이저를 거쳐서 쿼리비용 계산 후 실행계획 생성 2. Optimizer 1) Query Transformer : 최적화하기 쉽게 형태 변환 시도, 논리적으로 변환 전후 동일해야 함. 2) Estimator : 실행계획에 대한 전체 비용계산 (I/O, cpu, 메모리, 테이블 및 인덱스 통계정보 확인) 3) Plan Generator : 후보군이 할만한 실행계획 생성 3. Row-Sou.. 2023. 6. 9.
PL/SQL 1. PL/SQL (Procedural Language Extenstion to SQL) SQL을 확장한 절차적 언어(Procedural Language) 관계형 데이터베이스에서 사용되는 Oracle의 표준 데이터 엑세스 언어로, 프로시저 생성자를 SQL과 완벽하게 통합한다. 유저 프로세스가 PL/SQL 블록을 보내면, 서버 프로세서는 PL/SQL Engine에서 해당 블록을 받고 SQL과 Procedural을 나눠서 SQL은 SQL Statement Executer로 보낸다. PL/SQL 프로그램의 종류는 크게 Procedure, Function, Trigger로 나뉘어진다. 2. PL/SQL의 특징 블록 단위의 실행을 제공한다. 이를 위해 BEGIN 과 END를 사용한다. 마지막 라인에 /를 입력하면.. 2023. 6. 5.
윈도우 함수와 문제풀이3 - 권한 GRANT 유저에게 개체에 대한 권한을 허용 WITH GRANT OPTION : 권한을 부여받은 유저가 동일권한을 줄 수 있는 옵션 GRANT select ON schema::a_user TO 유저명; DENY 유저에게 개체에 대한 권한을 차단 DENY select ON schema::a_user TO 유저명; DENY select ON a_user.table1 TO 유저명; REVOKE 유저에게 부여된 권한을 회수 CASCADE : WITH GRANT OPTION 으로 부여된 권한까지 모두 회수 REVOKE select ON schema::a_user FROM 유저명; 1. 아래 설명 중 ㄱ,ㄴ에 해당하는 내용을 작성하시오 DBMS에 생성된 USER와 다양한 권한들 사이에서 중개 역할을 할 수 있도록 .. 2023. 6. 5.
윈도우 함수와 문제풀이 2 윈도우 함수() OVER (PARTITION BY 컬럼 ORDER BY 컬럼 ASC/DESC RANGE BETWEEN A AND B OR ROWS BETWEEN A AND B) DEFAULT 세팅 : RANGE BETWEEN UNBOUNDED PERCEDING AND CURRENT ROW RANGE BETWEEN A AND B : 현재 컬럼의 값 기준, 연산에 참여할 행 선택 UNBOUNDED PERCEDING : 최종 출력될 값의 맨 처음 ROW의 값 CURRENT ROW : 현재 ROW의 값 UNBOUNDED FOLLOWING : 최종 출력될 값의 맨 마지막 ROW의 값 (AND뒤) 1. 다음 중 아래의 SQL에 대한 설명으로 가장 적절한 것은? SELECT 상품유형코드 , AVG(상품가격) AS 상.. 2023. 6. 5.
윈도우함수와 문제풀이 윈도우 함수 select 결과에 대하여, 행과 행 간의 관계를 파악 select 결과에 윈도우 함수를 써도 행 수는 그대로 윈도우함수 () over (partition by 컬럼 order by 컬럼 asc / desc) 윈도우함수() 순위함수, 집계함수, 행순서함수, 비율함수 over over은 윈도의 함수에서 꼭 들어가야 하며 over 내부에 partition by 결과 order by 가 온다. partition by 전체 집합을 어떤 기준(컬럼)에 따라 나눌지를 결정 order by 어떤 항목(컬럼)을 기준으로 순위를 정할 지 결정하는 부분 순위함수 ROW_NUMBER (동점자처리 x) 1,2,3,4 RANK(동점자 처리 후 동점자 수만큼 건너뜀) 1,2,2,4,5 DENSE_RANK (동점자 처.. 2023. 6. 5.
SQLD 문제풀이 14 - 집계함수 ROLLUP GROUP BY ROLLUP(COL1, COL2, COL3) GROUP BY 결과 1 : COL1, COL2, COL3 GROUP BY 결과 2 : COL1, COL2 GROUP BY 결과 3 : COL1 GROUP BY 결과 4: 전체합계 GROUP BY ROLLUP(COL1, (COL2, COL3)) GROUP BY 결과 1 : COL1, (COL2, COL3) GROUP BY 결과 2 : COL1 GROUP BY 결과 3: 전체합계 GROUP BY COL1, ROLLUP((COL2, COL3)) GROUP BY 결과 1 : COL1, (COL2, COL3) GROUP BY 결과 2 : COL1 오른쪽부터 없어짐 컬럼의 순서가 수행 결과에 영향을 미침 GROUPING ROLLUP, CUB.. 2023. 6. 4.
SQLD 문제 풀이 13 1. 아래와 같은 데이터 모델에 대한 설명으로 가장 적절한 것은? (단, 시스템적으로 회원기본정보와 회원상세정보는 1:1, 양쪽 필수 관계임을 보장한다.) 1) 회원ID 컬럼을 대상으로 (회원기본정보 EXCEPT 회원상세정보) 연산을 수행하면 회원상세정보가 등록되지 않은 회원ID가 추출된다. → 회원 상세정보에서 회원 ID가 참조값으로 들어가므로 무조건 있어야 한다. 2) 회원ID 컬럼을 대상으로 (회원기본정보 UNION ALL 회원상세정보) 연산을 수행한 결과의 건수는 회원기본정보의 전체건수와 동일하다. 2배가 됨 3) 회원ID 컬럼을 대상으로 (회원기본정보 INTERSECT 회원상세정보) 연산을 수행한 결과 건수와 두 테이블을 회원ID로 JOIN연산을 수행한 결과의 건수는 동일하다. 4) 회원ID 컬.. 2023. 6. 3.
계층형 쿼리 계층형 구조 = 상하 수직관계의 트리형태의 구조 계층형 쿼리 = 계층 구조가 적용된 데이터를 반환하는 질의어 * Oracle만 계층형 쿼리를 지원한다 명칭 설명 LEVEL 각 계층 NODE 각 데이터 ROOT 가장 첫번째 노드 Parent Node 노드의 상위 노드 Child Node 노드의 자식 노드 Leaf 가장 아래 노드 1. START WITH 구문 계층의 루트로 사용될 행을 지정한다. 어떤 행을 최상위로 할 지 결정한다. 서브 쿼리 가능 2. CONNECT BY 연결고리를 만든다. PRIOR 연산자로 계층구조를 표현할 수 있다. PRIOR 자식 = 부모 (순방향) 이전 LEVEL의 자식컬럼값이, 현재 행의 부모컬럼과 동일한 값이면 현재행에서 이전 LEVEL의 +1 을 세팅 PRIOR 부모 = 자.. 2023. 6. 1.
SQLD 문제 풀이 12 1. 아래와 같은 데이터 모델에서 oracle 기준으로 sql을 작성하였다. 그러나 sql server에서도 동일한 결과를 보장할 수 있도록 ansi 구문으로 sql을 변경하려고 한다. 다음 중 아래의 sql을 ANSI표준 구문으로 변경한 것으로 가장 적절한 것은? [SQL] SELECT A.게시판ID, A.게시판명, COUNT(B.게시글ID) AS CNT FROM 게시판 A, 게시판 B WHERE A.게시판ID = B.게시판ID(+) AND B.삭제여부(+) = 'N' AND A.사용여부 = 'Y' GROUP BY A.게시판ID , A.게시판명 ORDER BY A.게시판ID ANSI SQL (American National Standards Institute) DBMS들에서 각기 다른 SQL을 사용하므.. 2023. 6. 1.
SQLD 문제 풀이 11 1. 다음 중 아래 테이블들을 대상으로 sql 문장을 수행한 결과로 가장 적절한 것은? os osid(pk) os명 100 android 200 ios 300 bada 단말기 단말기id(pk) 단말기명 osid(fk) 1000 a1000 100 2000 b2000 100 3000 c3000 200 4000 d3000 300 고객 고객번호(pk) 고객명 단말기id(fk) 11000 홍길동 1000 12000 강감찬 null 13000 이순신 null 14000 안중근 3000 15000 고길동 4000 16000 이대로 4000 select a.고객번호, a.고객명, b.단말기id, b.단말기명, c.osid, c.os명 from 고객 a left outer join 단말기 b on (a.고객번호 in(1.. 2023. 5. 30.
반응형