본문 바로가기

Programming/DB관련

Oracle Data Dictionary (데이터 사전) 데이터 사전(Data Dictionary)이란 ?데이터 사전(Data Dictionary)이란 대부분 읽기전용으로 제공되는 테이블 및 뷰들의 집합으로 데이터베이스 전반에 대한 정보를 제공sql.bsq에 의해 생성되는 기본 TABLE과 catalog.sql와 catproc.sql같은 스크립트를 실행하여 생성되는 data dictionary VIEW로 구성됨 특징Oracle 사용자 SYS는 데이터 사전의 모둔 기본 TABLE과 VIEW를 소유함다.오라클은 DDL 명령이 실행 될 때 마다 데이터 사전을 Access 한다.모든 Oracle 사용자는 DB 정보에 대한 읽기 전용 참조로 데이터 사전을 사용 할 수 있다.DB작업동안 Oracle은 데이터 사전을 읽어 객체의 존재여부와 사용자에게 적합한 Access 권.. 더보기
인덱스를 타지 않는 쿼리 인덱스 컬럼 절을 변형한 경우- 수식이나 함수 등으로 인덱스 컬럼 절을 변형하였을 경우- 반드시 함수나 수식을 사용해야 하는 경우에는 인덱스 컬럼 부분에 적용하지 말고, 여기에 대입되는 컬럼이나 상수부분에 적용해야 한다.SELECT column_name FROM table_name WHERE TO_CHAR(column_name, 'YYYYMMDD') = '20130909';> SELECT column_name FROM table_name WHERE column_name = TO_DATE('20130909', 'YYYYMMDD'); SELECT column_name FROM table_name WHERE column_name * 100 > 10000;> SELECT column_name FROM table.. 더보기
INDEX (인덱스) INDEX 란?검색을 빠른 속도로 하기 위해서 사용 SQL 명령문의 처리 속도를 향상시키기 위해서 컬럼에 대해서 생성하는 오라클 객체이다. index 사용해야할 경우 - 테이블에 행의 수가 많을 경우 - 조건절인 where문에 해당 컬럼이 많이 사용 될 경우 - 검색 결과가 데이터의 2% ~ 4% 정도일 경우(적은 양의 컬럼을 가져올 경우)- join에 자주 사용되는 컬럼 - NULL을 포함하는 컬럼이 많은 경우 index 사용하지 말아야 하는 경우 - 테이블에 행의 수가 적을 경우 - where 문에 해당 컬럼이 자주 사용되지 않을 경우- 검색 결과가 전체 데이터의 10% ~ 15% 이상 높을 경우(많은 양의 컬럼을 가져 올 경우) - 테이블에 DML 작업이 많은 경우(입력,수정,삭제 등이 자주 발생 .. 더보기
SQL LOADER란? SQL LOADER란? 원본 : 기존의 응용 프로그램 데이터나 다른 데이터베이스로 저장된 데이터를 오라클 데이터베이스 테이블에 넣기 위한 유틸리티로서 IBM의 DB2 load 유틸리티와 흡사하다. 오라클 데이터베이스를 설치하면 기본적으로 설치되며 간단하고 편리하게 데이터를 데이터베이스에 로드할 수 있다. SQL LOADER의 특징 - SQL Loader는 하나 이상의 입력 파일을 사용할 수 있다. - 로드 할 때 여러 개의 입력 레코드를 하나의 논리적 레코드로 결합할 수 있다. - 입력 필드는 고정 길이 또는 가변 길이가 가능하다. - 문자, 이진, 팩형 십진 형식(packed decimal format), 날짜 및 존 십진 형식(zoned decimal format)과 같은 임의의 형식이 입력 데이터가.. 더보기
오라클 백업 및 복구 (Export/Import) 1. export / import 가. 여러개의 테이블 중에서 특정 table만 백업/복구 하고자 할 때 나. 오라클의 버전, 플랫폼이 서로 다른 상황에서의 서버간 데이터 이동 시(migration) 2. export 방식 - Conventional Path export : Evaluation Buffer를 사용하는 방식, DB Buffer cache에서 필요데이터를 Evaluation Buffer로 복사 후 데이터를 가공(text -> binary)하여 디스크에 파일로 저장함. export 작업 중에 발생하는 DDL, DML 등의 명령들은 백업파일에 반영되지 않는다.(백업 파일은 Evaluation Buffer을 이용하여 작업하기 때문) - Direct Path export : DB Buffer Cac.. 더보기
DELETE, DROP, TRUNCATE의 비교 TABLE에서 행을 삭제하는 세 가지 OPTION의 비교 TABLE에서 모든 행을 삭제하는 방법에는 다음과 같은 세 가지 OPTION이 있다. 1. DELETE 명령어 사용 DELETE 명령어를 사용하여 TABLE의 행을 삭제할 수 있다. 예를 들어 EMP TABLE에서 모든 행을 삭제하는 명령문은 다음과 같다. SQL>DELETE FROM emp; ◈ DELETE 문을 사용할 때 TABLE이나 CLUSTER에 행이 많으면 행이 삭제 될 때마다 많은 SYSTEM 자원이 소모된다. 예를 들어 CPU 시간,REDO LOG 영역, TABLE이나 INDEX에 대한 ROLLBACK SEGMENT 영역 등의 자원이 필요하다. ◈ TRIGGER가 걸려있다면 각 행이 삭제될 때 실행된다. ◈ 이전에 할당되었던 영역은 .. 더보기
Character Functions (문자형 함수) 문자형 함수란? - CHAR, VARCHAR2 타입을 인수로 받아 VARCHAR2 타입의 값을 반환하는 함수 CONCAT(char1, char2)- 두 문자를 결합하는 역할( || 연산자와 같은 역할을 한다.)SELECT CONCAT('www', 'test') || 'com' name FROM DUAL; => CONCAT함수를 이용하여 앞의 두 문자를 결합하고, || 연산자를 이용하여 뒤의 문자도 결합하여 주었다. 동일한 결과를 반환한다. INITCAP(char), LOWER(char), UPPER(char)INITCAP - 주어진 문자열의 첫 번째 문자를 대문자로 변환하여 준다.LOWER - 주어진 문자열을 소문자로 변환하여 준다.UPPER - 주어진 문자열을 대문자로 변환하여 준다. SELECT IN.. 더보기
DECODE 함수 (ORACLE) DECODE 함수- 오라클에서만 지원하는 함수로서 SELECT 문장 내에서 비교 연산을 수행- 특정 컬럼의 값을 기준으로 마치 IF문을 사용하는 것과 같은 효과를 내는 함수- 구문DECODE({column | expression}, search1, result1 [,search2, result2] ... [,default]) - 예제SELECT DECODE(qnaType, '10', '타입1', '20', '타입2', '기타') as TypeFROM qnaTable => qnaTable에서 qnaType값이 10인 것은 '타입1', 20인 것은 '타입2', 나머지 값은 모두 '기타'로 출력됨을 확인 할 수 있다. SUM함수와 함께 사용- DECODE함수는 SUM함수와 함께 사용하여 합계를 출력하는데 사용.. 더보기
INNER JOIN & OUTER JOIN INNER JOIN : simple join이라고도 하며, 둘 이상의 테이블에서 join condition을 만족하는 행만 반환한다. 즉, 둘 이상의 테이블에 전부 존재하는 데이터만 조회한다는 것이다. (물론 ON조건에 만족하는 데이터) 집합으로 표현하자면 교집합이라 이해하면 된다. 간단한 예는 http://isstory83.tistory.com/entry/조인Join-쿼리 OUTER JOIN : OUTER JOIN 에는 LEFT , RIGHT, FULL OUTER JOIN 등의 세가지 형식이 있다. INNER JOIN과 는 달리 두 테이블에서 지정된 쪽의 (LEFT or RIGHT) 모든 결과를 모두 보여준 후 반대쪽에 매칭되는 값을 보여주고, 값이 없어도 NULL로 보여주는 JOIN이다. JOIN 이.. 더보기
서브쿼리 서브쿼리란? 하나의 테이블에서 검색한 결과를 다른 테이블에 전달하여 새로운 결과를 검색하는 것이다. 예를 들어 A라는 테이블에서 검색해 나온 결과만을 대상으로 다시 한 번 더 쿼리를 날리는 것. 참고로 하나 이상의 테이블을 연결하여 검색하는 기능은 조인(Join) 쿼리이다. 서브쿼리의 규칙 서브쿼리는 언제나 SELECT문 하나이다. 서브쿼리는 항상 괄호 안에 있다. 서브쿼리에는 세미콜론이 없다. 세미쿼리는 항상 전체쿼리의 마지막에만 위치한다. 서브쿼리는 SELECT절, 열리스트를 선택하는 경우에는 FROM절, HAVING절 서브쿼리는 SELECT, INSERT, UPDATE, DELETE와 함께 사용할 수 있다. 서브쿼리가 사용되는 경우 DB에 접근하는 속도를 높이기 위하여, 테이블은 다른 테이블과 관계.. 더보기