[SQL] 데이터베이스 아키텍처
* 해당 포스팅은 오라클 DB 관련 정보만 다룬다. DB 구조 DBMS마다 DB에 대한 정의가 조금씩 다르다. 오라클에서는 디스크에 저장된 데이터 집합(Datafile, Redo Log File, Control File 등)을 DB라고 부른다. 그리고 SGA 공유 메모리 영역과 이를 엑세스하는 프로세스 집합을 합쳐서 인스턴스라고 부른다. Or...
* 해당 포스팅은 오라클 DB 관련 정보만 다룬다. DB 구조 DBMS마다 DB에 대한 정의가 조금씩 다르다. 오라클에서는 디스크에 저장된 데이터 집합(Datafile, Redo Log File, Control File 등)을 DB라고 부른다. 그리고 SGA 공유 메모리 영역과 이를 엑세스하는 프로세스 집합을 합쳐서 인스턴스라고 부른다. Or...
개요 트랜잭션은 DB의 논리적 연산단위다. 트랜잭션이란 밀접히 관련돼 분리될 수 없는 한 개 이상의 DB조작을 가리킨다. 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함된다. 트랜잭션은 분할할 수 없는 최소의 단위다. 그러므로 전부 적용하거나 전부 취소한다. 즉, TRANSACTION은 ALL OR NOTHING의 개념이다. 특성 ...
개요 DCL(Data Control Language)는 유저를 생성하고 권한을 제어할 수 있는 언어이다. DCL에는 어떤 것들이 있고 어떻게 활용하는지 살펴보자. 유저와 권한 다른 부서 간에 또는 다른 회사 간에 데이터를 공유하기 위해 DB를 공개해야 하는 경우가 가끔 발생한다. 물론 DB를 공개하는 것 자체가 문제가 될 수 있다. 즉, 운영...
MERGE MERGE 문을 사용하면 새로운 행을 입력하거나, 기존 행을 수정하는 작업을 한번에 할 수 있다. 사용법 MERGE INTO 타겟 테이블명 USING 소스 테이블명 ON (조인 조건식) WHEN MATCHED THEN UPDATE SET 수정할 컬럼명1 = 수정될 새로운 값1 [ , 수정할 컬럼명2 = 수...
개요 DML은 DB에서 가장 중요한 요소 중 하나로, 관리할 자료들을 테이블에서 조회(SELECT), 입력(INSERT), 수정(UPDATE), 삭제(DELETE)할 때 사용된다. DML은 어떻게 사용하는지 예제와 함께 살펴보자. SELECT SELECT는 데이블에 저장된 데이터를 조회할 경우 사용하며, 해당 내용은 아래 링크에 따로 정리...
개요 정규 표현식은 문자열의 규칙을 표현하는 검색 패턴으로 주로 문자열 검색과 치환에 사용된다. POSIX 연산자 정규 표현식의 POSIX 연산자(POSIX operator)를 살펴보자. . (dot) .은 모든 문자와 일치(newline 제외)한 것을 찾을 때 사용한다. 예제 쿼리 SELECT REGEXP_SUBSTR('aa...
개요 PIVOT은 회전시킨다는 의미를 갖고 있다. PIVOT 절은 행을 열로 회전시키고, UNPIVOT 절은 열을 행으로 회전시킨다. PIVOT 절 PIVOT 절은 행을 열로 전환한다. PIVOT 절의 구문은 아래와 같다. 사용법 -- 중간에 { 는 중괄호 오류때문에 문자로 대체해서 넣었다. PIVOT [XML] ...
개요 테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해서 계층형 질의를 사용한다. 계층형 데이터란 동일 테이블에 계층적으로 상위와 하위 데이터가 포함된 데이터를 말한다. 예를 들어 사원 테이블에서는 사원들 사이에 상위 사원(관리자)과 하위 사원 관계가 존재하고, 조직 테이블에서는 조직들 사이에 상위 조직과 하위 조직 관계가 있다. 엔터...
ROWNUM 슈도 컬럼 오라클의 ROWNUM은 컬럼과 비슷한 성격의 Pseudo Column으로서 SQL 처리 결과 집합의 각 행에 대해 임시로 부여되는 일련번호다. 테이블이나 집합에서 원하는 만큼의 행만 가져오고 싶을 때 WHERE 절에서 행의 개수를 제한하는 목적으로 사용한다. 예제 예제에 사용되는 릴레이션은 아래와 같다. EMP 릴레이션...
개요 기존 관계형 DB는 컬럼과 컬럼 간의 연산·비교·연결이나 집합에 대한 집계는 쉬운 반면, 행과 행간의 관계를 정의하거나 행과 행간을 비교·연산하는 것을 하나의 SQL문으로 처리하는 것은 매우 어려운 문제였다. PL/SQL, SQL/PL, T-SQL, PRO*C 같은 절차형 프로그램을 작성하거나, INLINE VIEW를 이용해 복잡한 SQL문을...