일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- fdisk
- SQL
- grid
- MySQL
- oracle
- prompt
- mariaDB
- 오라클
- memory
- patch
- dba
- Linux
- Network
- oracle install
- Unix
- sqlplus
- perl + 정규표현식
- solaris network
- rac
- Oracle RAC
- perl string
- perl one-liner
- cygwin
- bash
- command & perl
- RHEL4
- PERL
- php5
- 연산자
- solaris
- Today
- Total
목록Data Architecture/SQL Query (21)
DATA 전문가로 가는 길
두 테이블에 대한 컬럼 속성 정보를 비교하는 쿼리를 작성합니다. 아래는 우선 두 테이블의 데이터를 비교해서 같지 않은 항목을 추출한 후에 row 형태로 변경 합니다. 1. 테이블 생성 /* 현재 사용자 정보 */ CREATE TABLE EST_CURR_USER (USER_NO INT NOT NULL PRIMARY KEY, "USER_NM" varchar(100) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, "USER_GRP_NM" varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL , "USER_DESC" varchar(200) CHARACTER SET utf8 COLLATE utf8_bin ) ENG..
테이블에 존재하는 순서 번호 값 중에서 빈 값을 찾는 쿼리를 작성하겠습니다. 순차적으로 번호가 1번부터 20번까지 존재한다고 했을 때 5번, 11번 ~ 14번, 17번 ~ 18번 이렇게 빈 값이 존재할 경우 찾아내는 방법과 빈 값에 대한 범위를 찾는 방법 그리고 마지막으로 어느 정도 비어있는지 확인 가능합니다. 1. 샘플 데이터 - 샘플 데이터를 생성하고, 임시 데이터를 삽입합니다. DROP TABLE EST_SEQUENCE; CREATE TABLE EST_SEQUENCE (ID INT NOT NULL PRIMARY KEY) ENGINE=INNODB; INSERT INTO EST_SEQUENCE(ID) SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL ..
오라클 Marge문을 자동으로 생성 하는 방법에 대해서 작성하고자 합니다. 업무를 진행할 때 Insert와 Update를 동시에 하고자 한다면 Merge문을 최대한 활용하게 됩니다. 한번 작성하면 다시 변경할 일을 없기는 하지만, 여러개의 원장 데이터를 서비스 테이블로 옮기는 작업을 매번 진행할 때 유용하게 사용 가능 합니다. 따라서 아래 내용은 단일 테이블을 기준으로 작성했으나, 필요에 따라 프로시저를 반복 호출해서 사용해도 됩니다. 1. Oracle Merge문 자동 생성 PL/SQLDECLARE V_OWNER VARCHAR2(30); V_PE_TABLE_NM VARCHAR2(40); V_PT_TABLE_NM VARCHAR2(40); BEGIN V_OWNER := 'HR'; /* 스키마명 */ V_P..
GROUP BY에서 MAX/MIN 함수를 응용한 세부 속성 데이터를 가져갈 수 있도록 하는 방안이며, 만약 최고값의 날짜를 구하려면 정렬된 순서에 의한 데이터를 하나씩 증가해서 큰 값을 올리는 사용자 변수를 응용할 수밖에 없습니다. 그러나 제일 큰 문제는 전체 집합을 구할 때 대용량 데이터라면 속도 문제를 발생 시킬 수 있습니다. 집계 데이터를 뽑을 때 한 번에 작업 후 문자열을 잘라서 사용할 수 있다고 하면, 성능적인 이슈를 해결할 수 있습니다. 1. 샘플 데이터 (시스템 서버의 디스크 사용 이력) - SYS_SVR_NO : SERVER 번호 - DIR_NM : 시스템 디렉토리(파티션 별) 명 - GART_DT : 수집일자 - FILE_SYS_NM : 시스템 파티션 명 - ALL_CAP : 전체 용량 ..
오라클 데이터베이스를 운영 & 관리 하면서 모아온 스크립트이며, 실제로 웹 사이트에 돌아다니는 스크립트와 크게 다르지 않을 수 있습니다. 오라클 성능 튜닝을 진행 하기 전에 전 처리 작업을 하거나, 용량을 확인 하거나, 오라클 데이터베이스에서 사용하는 유저, 테이블, 인덱스 등등 오브젝트 정보를 확인 할 때도 유용합니다. 지속적으로 수정해 나갈 예정이며, 내용 중에서 문제가 되는 쿼리가 있으면 댓글 남겨주시기 바랍니다. 1. 오라클 필수 스크립트 모음(아래 더보기 클릭) --====================================================================================== --#. 01 테이블스페이스별 파일 목록을 보기 --==============..
MaraiDB 또는 Mysql에서 구분자로 넘어온 값을 다시 열로 변환(테이블)하는 방법을 해보려고 합니다. 쿼리를 작성할 때 100개 미만의 데이터 셋은 where절에 IN(..)절을 이용해서 전달하면 되지만, 1,000개, 10,000개 많은 양의 데이터를 조작하고자 할 때는 불편하게 됩니다. 또는 XML, CSV 파일의 행을 열로 바꾸고 행의 데이터를 열로 보고자 할 때 유용합니다. 1. 구분자 자르기를 이용해서 열로 변경하는 쿼리 /* 1. 사용자 변수 */ SET @IN_DELIMITER = '|'; SET @IN_DATA = '10|20|30||40|50||70|80|||90'; /* 구분자를 기준으로 로우(ROW) 데이터 생성 쿼리*/ SELECT TRIM(SUBSTRING_INDEX(SUB..
오라클에서 Merge 문법을 이용해서 입력, 수정, 삭제를 한 번에 해보려고 합니다. 오라클 공식 문서를 보면 merge_update_clause UPDATE에 매칭되는 데이터는 삭제할 수 있다고 나와 있습니다. 풀어서 말씀드리면, WHEN MATCHED THEN에서 UPDATE 진행 후 DELETE를 할 수 있다는 말입니다. 보통은 DELETE 문법을 이용해서 삭제 후 INSERT 문법을 활용하는데 이렇게 하면 인덱스가 점점 안 좋아 질 수 있고, 서비스 테이블에서 조회하려는 시점에 아무 정보도 못 얻어서 비지니스 적인 오류가 발생합니다. 이러한 부분을 해결하기 위해서는 한 번에 DML할 수 있다면 여러가지 장점을 가질 수 있습니다. HR 서버에서 회원 정보를 일자별로 반영해야 되는 업무를 토대로 진행..
데이터베이스를 운영하는 회사는 보통 데이터 모델링 툴을 이용해서 논리 모델링, 물리 모델링을 작업해서 상호 관리할 수 있도록 합니다. 그렇게 하면 자동으로 테이블 정의서(테이블 레이아웃)와 같은 형태의 산출물을 쉽게 뽑을 수 있는데요. 오늘은 그러한 툴을 이용하지 않고, 데이터베이스 서버에서 직접 산출물을 만드는 방법을 해보려고 합니다. SI 프로젝트를 오래 하시는 분들은 리버스 엔지니어링으로 테이블을 업로딩 하지만, 메타 시스템이 없으면, 큰 도움을 주지 못할 때가 많습니다. 그래서 아래와 같은 방법은 테이블과 컬럼 코멘트만 변경하고도 테이블 정의서(테이블 레이아웃)를 만들 수 있습니다. 아무래도 사람이 직접 검증하는 게 더 정확하다고 생각 합니다. 아래 테이블 레이아웃 PL/SQL과 HTML 작업은 ..