본문 바로가기

쿼리17

[오라클] Oracle에서 컬럼의 값 만큼 행(Row)을 늘리는 쿼리 1234567SELECT ASNDKY, WAREKY, YQTYASN_IFROM ASNDHWHERE 1=1AND DOCDAT = '20170531';cs 이 쿼리를 실행하면 결과가 이렇게 나온다. YQTYASN_I라는 컬럼의 값의 수만큼 row를 뿌려줘야 하는 경우가 생겼는데 어떻게 해야 할까?오라클에서는 CONNECT BY를 사용하면 해결할 수 있다. 12345678910SELECT H.ASNDKY, H.WAREKY, H.YQTYASN_IFROM ASNDH H, (SELECT LEVEL NUM FROM DUAL CONNECT BY LEVEL 2017. 6. 29.
[오라클] 테이블정의서 자동으로 만들어주는 Oracle 쿼리 (Primary Key 여부 포함) 123456789101112131415161718192021222324252627282930313233343536373839404142WITH LIST AS( SELECT A.TABLE_NAME, A.COLUMN_NAME, A.DATA_TYPE, A.DATA_LENGTH, A.NULLABLE, B.COMMENTS FROM dba_tab_columns A, all_col_comments B WHERE A.OWNER = B.OWNER AND A.TABLE_NAME = B.TABLE_NAME AND A.COLUMN_NAME = B.COLUMN_NAME AND A.OWNER = 'LOTOSDEV' -- DB명),PKLIST AS( SELECT C.TABLE_NAME, C.COLUMN_NAME, C.POSITIO.. 2017. 6. 26.
[오라클] Oracle에서 모든 테이블 목록 가져오는 쿼리 현재 진행하는 프로젝트는 솔루션을 가지고 작업을 하는데요.테이블이 엄청나게 많더라구요. 테이블 수를 보고 깜짝 놀랐는데...도대체 테이블 수가 몇 개나 되는지 궁금한데 어떻게 알 수 있을까요? select object_name from user_objects where object_type = 'TABLE'; -- 테이블 목록 select object_name from user_objects where object_type = ‘SEQUENCE’; -- 시퀀스 목록 이 쿼리를 사용하면 테이블 목록을 가져올 수 있답니다. 테이블 개수가 224개나 된다니... 정말 엄청나네요~ ㄷㄷㄷ 2017. 5. 22.
[오라클] PK(Primary Key)만 가져오는 Oracle 쿼리 1234567SELECT C.POSITION ,C.COLUMN_NAMEFROM USER_CONS_COLUMNS C INNER JOIN USER_CONSTRAINTS S ON C.CONSTRAINT_NAME = S.CONSTRAINT_NAME AND S.CONSTRAINT_TYPE = 'P'WHERE C.TABLE_NAME = 'SKUWC'ORDER BY 1Colored by Color Scriptercs 해당 테이블의 primary key(프라이머리 키)만 가져오는 쿼리랍니다.이 쿼리를 응용해서 DB 상의 모든 테이블의 Primary Key만 뽑을수도 있겠죠. 1234567891011121314151617181920212223242526272829303132333435363738394041WITH LIS.. 2017. 5. 12.
[오라클] 테이블정의서 자동으로 만들어주는 Oracle 쿼리 테이블정의서 자동으로 만들어주는 오라클 쿼리입니다. 12345678910111213SELECT A.TABLE_NAME AS "테이블명", A.COLUMN_NAME AS "컬럼명", A.DATA_TYPE AS "데이터타입", A.DATA_LENGTH AS "길이", A.NULLABLE AS "Null 여부", B.COMMENTS AS "Comments"FROM dba_tab_columns A, all_col_comments BWHERE A.OWNER = B.OWNERAND A.TABLE_NAME = B.TABLE_NAMEAND A.COLUMN_NAME = B.COLUMN_NAMEAND A.OWNER = 'LOTOSDEV' -- DB명ORDER BY A.TABLE_NAMEcs 이거 실행하고 엑셀로 저장하면 .. 2017. 5. 11.
[Wordpress] 워드프레스 디버깅 에러 로그 및 실행 쿼리 확인할 수 있는 방법 및 플러그인(plugin) 제 경험상 디버깅을 잘하는 분들이 코딩도 잘 합니다.자바 프로그래머인 제가 php로 만들어진 워드프레스를 하려니 사실 좀 힘든 점이 많은데요.다행히도 워드프레스는 디버깅을 도와주는 또는 에러를 확인하게 해주는 방법을 여러가지로 지원해 주고 있어서 다행입니다. /wp-includes/wp-configs.php 파일에 아래와 같이 2줄을 넣어주면 에러 발생시 debug.log 파일에 에러를 저장해 줍니다.define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); 에러 발생시 /wp-content/debug.log 파일을 확인하면 됩니다. 로컬이 아닌 원격으로 서버를 두고 있다면 debug.log를 바로바로 확인하기 힘들텐데요.이럴 땐, debug.log에 있는.. 2017. 1. 8.
[오라클] Oracle에서 key값이 없을 때 중복데이터 rowid로 제거하는 샘플 쿼리 특별히 primary key가 없거나 unique index가 없어서 중복되어서는 안되는데 같은 내용의 데이터가 중복되어서 쌓여있을 경우, 1개의 row만 남기고 나머지 데이터들은 모두 삭제하고 싶다면? 이 쿼리를 수정해서 사용하면 됩니다. ROW_NUMBER() OVER(PARTITION BY RLTM_SRNO, EQT_SRNO ORDER BY ROWID) 중복되어서는 안되는 컬럼, 즉 key가 되는 컬럼을 PARTITION BY … 부분에 넣으시면 됩니다. 데이터가 같아도 오라클 내부적으로 ROWID는 모두 다르기 때문에 ROWID를 이용하여 데이터 하나만 남기고 나머지 중복데이터는 모두 제거가 가능합니다. DECLARE CURSOR cur IS SELECT RW FROM ( SELECT RLTM_S.. 2016. 11. 2.
[쿼리문/오라클] 간단한 쿼리로 일련번호 쉽게 넣기 - ROWNUM 사용 보통 PK로 일련번호를 많이 넣는데요.PK가 없는 테이블에 ROWNUM을 사용하면 간단하게 일련번호를 넣을 수 있습니다. JOBS 라는 테이블에 PK가 없는데요.다음 쿼리로 PK로 사용할 SEQ_NO라는 컬럼을 만들어 보겠습니다.ALTER TABLE JOBS ADD SEQ_NO NUMBER(12); 다음 쿼리로 SEQ_NO 컬럼에 일련번호를 넣습니다.UPDATE JOBS SET SEQ_NO = ROWNUM; 결과를 볼까요? 일련번호 넣는데 커서 만들고 복잡하게 할 필요 없습니다^^순서가 아주 중요한 게 아니라면요. 2015. 9. 16.
[전자정부 표준프레임워크] 새로 만든 모듈의 iBatis 쿼리를 새로운 xml 파일에 만들고 싶다면 이렇게 하자. 자, 다음은 전자정부 표준프레임워크(엄밀히 말하면 Spring)에서 새로운 모듈을 만들고 쿼리를 만들어서 저장하고 싶을 때 다음과 같이 하면 됩니다. 먼저, 새로운 폴더 아래에 새로운 iBatis용 xml을 만듭니다. 저는 CodSelectHand_SQL_Oracle.xml 이라고 만들어 봤습니다. (파일명의 뒷부분(_SQL_Oracle.xml)은 규칙이므로 동일하게 하셔야 합니다.) 그리고, 파일 안에 원하는 쿼리도 넣어줍니다. 자, 여기까지만 작업하면 아래와 같은 에러가 발생합니다.There is no statement named *** in this SqlMap한마디로 해당 쿼리를 못 찾겠다는 뜻인데요. 아래와 같이 sql-map-config-oracle-cod-ems.xml 파일을 또 만들어 줍니.. 2015. 6. 12.
[토드] Toad에서 쿼리결과 또는 테이블 데이타를 엑셀로 저장하기 토드에서 데이타를 엑셀로 저장해 보겠습니다.아래 그림을 순서대로 따라해 보세요. 쿼리결과 아무데서나 마우스 오른쪽 클릭해서 [Export Dataset]을 클릭합니다. Export format을 [Excel File]로 선택해 주시구요. 엑셀파일이 저장될 위치를 선택하고 저장될 파일명을 입력해 주세요.파일 형식은 [XLS Files (*.xls)]로 선택해야겠죠? 준비 다 됬으면 [OK]를 눌러주세요. 저장된 파일을 열어보니 데이터 잘 나오네요~ 2015. 6. 5.
[오라클/쿼리문] Oracle에서 사용자가 생성한 모든 Table, View를 삭제하는 쿼리 만들기 이것저것 하다보면 가끔은 DB를 삭제하고 다시 만들고 싶은 생각이 들 때가 듭니다. 그렇지만, DB를 다시 만드는 것보다 내가 만든 테이블만 모두 삭제하면 더 편리하겠다는 생각이 들었죠.SELECT 'DROP TABLE ' || object_name || ' CASCADE CONSTRAINTS;' FROM user_objects WHERE object_type = 'TABLE'; 생성된 쿼리를 긁어다가 [F5] 버튼 꾹~ 눌러주면 테이블이 다 삭제됩니다. View도 이렇게 쿼리를 만들어 같은 방법으로 삭제하시면 됩니다.SELECT 'DROP VIEW ' || object_name ||';' FROM user_objects WHERE object_type = 'VIEW'; 2015. 6. 4.
[전자정부 표준프레임워크] eclipse 콘솔(로그)에 디버그(Debug) 모드에서 실행된 쿼리문을 보여주자. - 전자정부프레임워크 오라클 이클립스 디버그 모드에서는 실행된 쿼리문을 보는 게 좋습니다. 쿼리에서 오류가 떴을 때 쿼리를 Toad 같은 오라클 툴에서 실행해 보면서 쿼리를 수정할 수 있어서 좋구요. 물론, log4j에서 설정을 해야겠지만 JDBC가 먼저 지원을 해주어야만 합니다. 제가 지금 하고 있는 전자정부 표준프레임워크에서는 기본적으로 쿼리가 콘솔에 보이지 않도록 돼 있네요. context-datasource.xml 아래처럼 바꿔주야 합니다. Globals.DriverClassName=net.sf.log4jdbc.DriverSpy 2015. 5. 27.
[쿼리문] Merge into를 이용해서 insert나 update를 자동으로 실행하자. MERGE INTO 쿼리를 이용하면 Update나 Insert를 하기 위해 해당 데이타가 존재하는지 확인하기 위해 따로 Select를 하지 않아도 됩니다. 데이타가 존재하는지 알아서 판단해서 Update이나 Insert를 실행하기 때문이죠. 저도 그 편리함 때문에 종종 MERGE INTO를 사용합니다.MERGE INTO 테이블명 USING DUAL ON ( 조인조건 ) WHEN MATCHED THEN UPDATE 문 WHEN NOT MATCHED THEN INSERT 문 쿼리는 위와 같이 구성이 됩니다. 조인조건에 해당하는 데이타가 있는지 확인해서 Update 또는 Insert를 실행하게 됩니다. 아래 예제를 보면 어떻게 사용하는지 명확하게 알 수 있습니다. MERGE INTO TB_USER USING .. 2015. 2. 4.
[토드] Toad의 Format code 기능으로 가독성 떨어지는 쿼리를 보기좋게 정렬하기 보통 eclipse로 작업을 하면 console에 찍히는 쿼리를 Toad에서 실행해 보곤 합니다. 그런데, console에 출력되는 쿼리는 정렬이 돼 있지 않아 가독성이 떨어집니다. 이럴 때 Toad에 있는 [Fortmat code] 기능으로 쿼리를 포맷하면 보기좋게 쿼리를 정렬할 수 있습니다. Format code 실행 단축키 : Ctrl + Shift + F Format code 아이콘을 눌러주거나 단축키(Ctrl+Shift+F)를 눌러주면 보기좋게 정렬됩니다. 이렇게 보기 좋게 정렬이 되었습니다. 2015. 1. 29.
[쿼리문] 조건절에 WHERE 1=1, WHERE 1=0 사용하여 쿼리 간편하게 사용하기 프로젝트를 진행할 때 SQL 쿼리를 작성하다보면 'WHERE 1 = 1' 이라는 것을 자주 보게 됩니다. 사실, 의미없이 'WHERE 1 = 1'이라는 구문을 사용하시는 분들이 있어서 깔끔한 걸 추구하는 저로서는 가끔 1 = 1 이라는 부분을 지워버리는데요. 이것을 잘 사용하면 조건절(WHERE)을 편리하게 사용할 수 있어서 편리합니다. 사용법에 대해 간단하게 알아보겠습니다. 1. AND 구문에서는 WHERE 1 = 1 사용하자.만약에, 'WHERE 1=1'이 없다면 if 조건절 안에 WHERE를 넣어야 할지 AND를 넣어야할지 알 수 없습니다. 'WHERE 1 = 1'을 사용하게 되면 아래 조건절에 무조건 AND를 넣으면 되는 겁니다.SELECT * FROM NAME_LIST WHERE 1 = 1 #i.. 2014. 11. 1.