반응형

프로그래밍 PROGRAMMING/데이터베이스 DATABASE 8

[ORACLE] 데이터를 SQL로 랜덤 샘플링하기 : SAMPLE 함수

오라클에서 테이블의 데이터를 확인하기 위해서 랜덤하게 데이터를 출력하고 싶을 때가 있습니다. 그럴 때 RANDOM하게 정렬을 해서 상위 10개의 열을 출력하는 등의 방법을 이용해서 랜덤하게 데이터를 뽑아볼 수도 있지만, 간단하게 SAMPLE 함수를 사용해서 테이블의 데이터를 추출하는 방법도 있습니다. 랜덤하게 SAMPLING 하기 위해서는 WITH 구문을 이용한 가상테이블로의 조회가 아닌 실제 ROWID가 있는 테이블을 대상으로 실행해야 합니다. 또한 SAMPLE 함수는 인자값으로 지정되는 것이 테이블 전체의 데이터 중에서 몇 퍼센트를 지정하여 추출할것인지에 대한 퍼센트이기 때문에 테이블의 데이터가 지나치게 적을 경우 퍼센트를 올려주어야 합니다. 물론, 테이블의 데이터가 매우 적다면 굳이 추출을 샘플링을..

[ORACLE] 랜덤 숫자 혹은 문자열 생성하기 : DBMS_RANDOM

오라클 랜덤함수 DBMS_RANDOM 으로 랜덤한 수 혹은 문자열을 생성할 수 있습니다. DBMS_RANDOM 패키지는 몇 가지 기능을 제공합니다. 여기서는 NORMAL, RANDOM, STRING, VALUE 함수에 대해 다룹니다. NORMAL DBMS_RANDOM 패키지의 NORMAL 함수는 표준 정규분포(가우스분포)에서의 임의값을 리턴하는 함수입니다. 예를 들어 아래와 같이 일반 SQL 쿼리문에서 호출을 하면 다음과 같이 실행됩니다. SELECT DBMS_RANDOM.NORMAL AS RANDOM_NUM FROM DUAL RANDOM RANDOM 함수는 -(2의 31제곱) 보다 크거나 같고 (2의 31제곱) 보다 작은 임의의 정수를 생성하는 함수입니다. SELECT DBMS_RANDOM.RANDOM..

[ORACLE] 오라클 문자열의 날짜 형식을 확인하는 방법

오라클에서는 쿼리문에서 문자열의 날짜를 TO_DATE 구문으로 변환할때 형식이 지정된 포맷에 맞지 않으면 "ORA-01839: 지정된 월에 대한 날짜가 부적합합니다." 라는 오류가 발생하게 됩니다. 쿼리문에 지정된 날짜 포맷에 대하여 문자열이 올바르지 않은 형식으로 들어오는 경우입니다. 이럴때 인자값으로 조회된 문자열이 TO_DATE에 지정된 형식에 부합하는지를 체크하여 오류를 해결할 수 있습니다. 체크하는 방법으로는 크게 3 가지가 있습니다. 1. 사용자 정의함수를 생성하여 확인 2. REGEXP_INSTR 정규식을 확인하는 오라클 내장함수를 이용하는 방법 ( 오라클 10g 이상 ) 3. VALIDATE_CONVERSION 함수를 사용하는 방법 ( 오라클 12c R2 이상 ) 사용자 정의함수를 이용한 ..

[ORACLE] 오라클 정렬 순서를 지정하는 방법

오라클에서 정렬 순서를 지정하기 위해서는 ORDER BY 구문을 사용하면 됩니다. 기본적인 ORDER BY 사용법은 아래와 같습니다. SELECT COL1, COL2 AS COL_NAME FROM TABLE_NAME ORDER BY COL1 [ASC OR DESC], COL_NAME [ASC OR DESC] 위와 같이 SELECT 구문에 명시되어 있는 컬럼명들을 ORDER BY 구문에 나열하고 오름차순( ASC - 명시하지 않을 시에 기본 ) 혹은 내림차순 (DESC)을 입력하여 정렬 순서를 지정합니다. ORDER BY 에 나열되는 구문은 SELECT 문의 실행 결과에 보여지는 컬럼과 동일한 이름을 명시해야 합니다. 따라서 COL2의 별칭인 COL_NAME을 ORDER BY 절에 명시해야 오류가 나지 않..

[ORACLE] 오라클 WITH 구문을 사용해 가상테이블 만드는 방법

오라클 쿼리를 작성하다 보면 쿼리문 내에서 동일한 구문의 쿼리문이 반복해서 동일한 테이블에 엑세스하는 경우가 있습니다. WITH 구문은 그런 동일한 결과를 내는 반복 쿼리문을 줄여서 테이블 엑세스를 줄이고 쿼리문을 단순화하는데 유용합니다. WITH 구문을 이용하면 오라클 내에서 가상 테이블이 생성되어 메모리에 할당됩니다. 오라클에서 WITH 구문을 사용하는 방법 WITH ..가상테이블명.. AS 구문을 사용하여 가상테이블을 구성할 데이터를 조회하는 쿼리를 만듦니다. 이 가상 테이블은 실제 테이블처럼 FROM 구문을 이용하여 외부 쿼리문 내에서 호출하여 사용할 수 있습니다. WITH TEMP_TABLE AS ( ... QUERIES... ) SELECT COLUMNS FROM TEMP_TABLE 예제 WI..

[ORACLE] 오라클 INTERVAL 내장함수 사용하는 방법

오라클에서 날짜 년도를 더하고 빼는 방법 오라클의 날짜 DATE 컬럼에서 년도를 더하고 뺄때 ADD_MONTHS() 내장 함수를 사용하기도 한다. 하지만 INTERVAL 을 이용하는게 보다 직관적이고 쉽게 컨트롤 할 수 있다는 점에서 유용하다. -- 년도를 빼기 SELECT SYSDATE - (INTERVAL '1' YEAR ) FROM DUAL -- 년도를 더하기 SELECT SYSDATE + (INTERVAL '1' YEAR ) FROM DUAL 오라클에서 INTERVAL 활용하기 년도 이외에도 오라클에서 DATE 형을 컨트롤할 때 INTERVAL을 사용하면 편리하게 할 수 있다. --1년 더하기 SELECT SYSDATE + (INTERVAL '1' YEAR) FROM DUAL --1개월 더하기 S..

[ORACLE] 오라클 컬럼 코멘트 추가/확인/삭제 방법

테이블내의 컬럼을 생성하게 되면 컬럼에 대한 설명을 코멘트로 넣을 수 있습니다. 필수는 아니지만 관리측면에서 추가해 놓는 것이 나중에 스키마를 이해하는데 도움이 되니 되도록 작성하는 것이 좋습니다. 컬럼 코멘트를 추가하는 방법 -- 문법 COMMENT ON COLUMN 테이블명.컬럼명 IS '원하는 코멘트'; -- 예시 COMMENT ON COLUMN DEPARTMENT.DEPT IS '부서'; COMMENT ON COLUMN DEPARTMENT.TYPE IS '유형'; 컬럼 코멘트를 확인하는 방법 --코멘트가 있는 전체 컬럼을 조회 SELECT TABLE_NAME, COLUMN_NAME, COMMENTS FROM USER_COL_COMMENTS WHERE COMMENTS IS NOT NULL; 컬럼의 ..

[ORACLE] 오라클 테이블 컬럼 추가/수정/삭제/이름변경 하는 방법

테이블 컬럼 추가하는 방법 문법 ALTER TABLE 테이블명 ADD(컬럼명 데이터 타입(사이즈)) ALTER TABLE MANAGER_TBL ADD (MN_NAME VARCHAR2(100)); 신규로 생성되는 테이블 컬럼은 테이블 태의 컬럼 순서 중에서 제일 마지막으로 생성됩니다. 테이블 컬럼 수정하는 방법 문법 ALTER TABLE 테이블명 MODIFY(컬럼명 데이터 타입(사이즈)) ALTER TABLE MANAGER_TBL MODIFY (MN_NAME VARCHAR2(200)); 컬럼을 수정하려고 할 때, 해당 컬럼내 데이터가 변경후 데이터 타입과 다를 경우에는 변경이 되지 않습니다. 예를 들어 VARCHAR 등의 문자형 컬럼에서 NUMBER 형으로 변경을 한다거나 , NUMBER(100) 에서 N..

반응형