본문 바로가기

SQLP 자격증

SQLP - 데이터베이스 아키텍처(2) @markdown # Oracle 아키텍처(2)_____## 메모리구조### 시스템 공유 메모리 여역- Oracle : System Global Area(SGA)- SQL Server : Memory Pool - 여러 프로세스가 동시에 엑세스 할 수 있는 메모리영역- 모든 DBMS는 공통적으로 사용하는 캐시 영역이 있음(DB버퍼캐시, 공유 Pool, 로그버퍼)- 그 외에 Large Pool, Java Pool 시스템 구조와 제어 구조를 캐싱하는 영역을 포함한다.- 여러 프로세스가 공유되기 때문에 내부적으로 Latch, 버퍼Lock, 라이브러리 캐시 Lock/Pin 같은 액세스 직렬화 매커니즘을 사용 ### 프로세스 전용 메모리영역- 오라클은 프로세스 기반의 아키텍처로 서버 프로세스가 자신만의 전용 메모리.. 더보기
SQLP - 데이터베이스 아키텍처(1) @markdown # Oracle 아키텍처(1) ## 아키텍처 개관____### Oracle 아키텍처![](http://wiki.gurubee.net/download/attachments/26744202/oracle.jpg)- 데이터베이스 : 물리적인 디스크에 저장된 데이터 집합(데이터 파일, 리두로그 파일, 컨트롤 파일)- 인스턴스 : 공유메모리(SGA)와 이를 액세스하는 프로세스 집합 ### SQL Server 아키텍처![](http://wiki.gurubee.net/download/attachments/26744202/sqlserver.jpg)- 하나의 인스턴스당 최고 32,767개의 데이터베이스를 정의해서 사용- 기본적으로 시스템데이터베이스가 만들어지면, 사용자데이터베이스를 추가하여 생성하는 구조.. 더보기
SQLP - 조인 수행 원리 @markdown ## NL Join____- NL 조인은 프로그래밍 이중 Loop와 유사한 방식으로 조인을 수행for 선행테이블(외부테이블)for 후행테이블(내부테이블)...- 먼저 선행 테이블의 조건을 만족하는 행을 추출하여 후행 테이블을 읽으면서 조인을 수행- 선행테이블의 조건을 만족하는 모든 행의 수만큼 반복수행- 결과 행의 수가 적은 테이블을 조인 순서상 선행 테이블로 선택하는것이 전체 일량을 줄일 수 있음- 랜덤 방식으로 데이터를 액세스하기 때문에 처리 범위가 좁은 조건이 먼저 선택되는게 유리하다.- NL Join 기법은 성공하면 바로 결과를 사용자에게 보여주므로 온라인 프로그램에 적당한 기법이다. ### NL Join 수행 방법- 1) 선행 테이블에서 주어진 조건을 만족하는 행을 찾음- 2).. 더보기
SQLP - 인덱스 기본 원리 @markdown ## 인덱스 특징과 종류____- 인덱스는 DB에서 원하는 데이터를 쉽게 찾을 수 있도록 도와준다.- 테이블을 기반으로 선택적으로 생성할 수 있는 구조- 인덱스의 목적은 검색 성능의 최적화 및 검색조건에 만족하는 데이터를 효과적으로 찾는 것 이다.- Oracle의 트리 기반 인덱스 종류 : B-트리, Bitmap, Reverse Key, Function-Based 등이 존재한다. ### 트리 기반 인덱스![](http://wiki.gurubee.net/download/attachments/26744587/SQL_244.jpg)- DBMS에서 가장 일반적인 인덱스(B-트리 인덱스)- B-트리 인덱스는 브랜치, 리프 블록 그리고 가장 상위 루트 블록으로 구성된다.- 브랜치 블록은 분기를 목.. 더보기
SQLP - 옵티마이저와 실행계획 @markdown # 옵티마이저(Optimizer)____- 옵티마이저는 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 역할을 수행- 최적의 실행 방법을 `실행계획`이라함- 다양한 실행 방법들 중에서 최적의 실행 방법을 결정하는 역할- `Rule Based` / `Cost Based` `Optimizer`가 있다.(RBO, CBO) ![출처 : 구루비넷 ](http://wiki.gurubee.net/download/attachments/26744562/SQL_239.jpg) ## 규칙기반 옵티마이저(RBO)____- 규칙(우선순위)을 가지고 실행계획을 생성- 판단기준 : 인덱스 유무, 인덱스 종류, SQL 연산자(`=`, `>> `Full Table Scan`(인덱스가 존재하면, 항상 인덱.. 더보기
SQL - 제약조건, 뷰, 인덱스, 권한 @markdown## 무결성 제약 조건의 개념과 종류____- `NOT NULL` : NULL을 허용 X.- `UNIQUE` : 중복된 값을 허용하지 않고, 항상 유일한 값을 갖도록 함.- `PRIMARY KEY` : NULL을 허용 X.- `FOREIGN KEY` : 참조되는 테이블의 칼럼의 값이 존재하면 허용함- `CHECK` : 저장 가능한 데이터 값의 범위나 조건을 지정하여 설정한 값만을 허용함 USER_CONSTRAINTS의 내용을 출력SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAMEFROM USER_CONSTRAINTS ### CHECK 조건____- 제한된 데이터만 받을 수 있도록 조건 지정컬럼이름 자료형 constraint 조건이름 check(컬럼.. 더보기
SQL - 서브쿼리 @markdown## 서브쿼리____- 하나의 `SELECT` 쿼리 안에 포함된 또 하나의 `SELECT` 쿼리- 서브 쿼리를 포함하고 있는 쿼리문을 메인 쿼리, 포함된 또 하나의 쿼리를 서브 쿼리라고 함- 반드시 괄호로 둘러쌓아야 함 ### 서브쿼리 사용이 가능 한 곳____ - SELECT (스칼라 서브쿼리) - FROM (인라인 뷰) - WHERE - HAVING - ORDER BY - INSERT VALUES - UPDATE SET ### 단일 행 서브 쿼리____- 단일 행(Single Row) 서브 쿼리는 수행 결과가 오직 하나의 행만을 반환하는 서브 쿼리- `WHERE` 절에서는 단일 행 비교 연산자인 `=`, `>`, `>=`, `ALL (서브쿼리) : 서브쿼리 결과에서 가장 큰 값보다 큰.. 더보기
SQL - Group by, Having, Join @markdown## GROUP BY 절____- 그룹함수를 쓰되 어떤 컬럼 값을 기준으로 그룹함수를 적용할 경우 GROUP BY 절 뒤에 해당 컬럼을 기술 SELECT 칼럼명, 그룹함수FROM 테이블명WHERE 조건 (연산자)GROUP BY 칼럼명; - 합계, 평균, 최대값, 최소값 등을 어떤 칼럼을 기준으로 그 칼럼의 값 별로 조회 할 때 GROUP BY 절 뒤에 해당 칼럼을 기술하면 됨. - GROUP BY 절을 사용할 때 주의할 점은 GROUP BY 절 다음에는 칼럼의 별칭을 사용할 수 없고, 반드시 칼럼명을 기술해야함 ## HAVING 절____- 그룹의 결과를 제한할 때는 HAVING 절을 사용- 부서별로 그룹지은 후(GROUP BY), 그룹 지어진 부서별 평균 급여가 2000 이상인(HAVI.. 더보기
SQL - 기초 @markdown# SQL 기초____ #### XE : eXtenstion DB 이름#### SID : 데이터베이스 인스턴스 select * from emp; - `*`를 남발하면안된다. 메모리에 로드된 데이터를 출력해주는 것이기 때문에- `99/10/05` 형식의 데이트를 `1999/10/05`로 출력하도록alter session set nls_date_format = 'YYYY/MM/DD'특정 함수 한번만 실행시키고 싶을때 쓰는 테이블select * from dual`select '직원 정보', empno as "직원 번호", ename 이름, deptno 부서번호from emp ![](https://cloud.githubusercontent.com/assets/12658717/25935253/29.. 더보기
SQL - Oracle DB 설치하기 @markdown# Oracle Database 사용하기____## 1. Oracle Database 설치 - [Oracle DB 11g Express Editioin 다운받기](http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html) (로그인 필요)- `Install` 하고, SYSTEM 계정 비밀번호 지정하고 `default` 설치하면 된다. ## 2. Oracle DB 접속____- `Run SQL Command Line` : Oracle에서 제공하는 유틸리티 프로그램- `Run SQL Command Line` 실행 후 `system` 계정 접속```> conn system.. 더보기