본문 바로가기

프로그래밍 언어/쿼리문 + Oracle + MySQL50

[쿼리문] 조건절에 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.
[쿼리문/오라클] Oracle에서 중복 조인을 피하기 위한 Update 방법 (MERGE 사용) 중복 조인을 피하기 위한 update 방법에 대해 알아보겠습니다. UPDATE TotalPoint T SET usePoint = (SELECT usePoint FROM UserPoint U WHERE U.userId = T.userId), totPoint = totPoint + (SELECT usePoint FROM UserPoint U WHERE U.userId = T.userId) FROM userId = 'testUser' 이런식으로 서브쿼리를 2번 같은 내용으로 사용하는 것은 비효율적이다. 만약에 더 많은 컬럼값을 Update해야 한다면 중복이 더 많아질 것이다.Merge를 사용하면 이러한 중복을 줄일 수 있다. MERGE INTO TotalPoint T USING ( SELECT userId, .. 2011. 4. 1.
단일행을 다중 row로 분리, 다중 row 결과를 단일행으로 연결하는 방법 1. 단일행을 다중 row로 분리 오라클에서 '1,2,3,4,5'라는 문자열을 레코드로 만들려면 어떻게해야 할까? '1,2,3,4,5' return =========== 1 2 3 4 5 즉, 결과가 위와같이 나오게 하려면? connect by를 사용해서 만들수가 있다.SELECT SUBSTR (str, INSTR (str, ',', 1, LEVEL) + 1, INSTR (str, ',', 1, LEVEL + 1) - INSTR (str, ',', 1, LEVEL) - 1 ) sub FROM (SELECT ',' || '1,2,3,4,5' || ',' str FROM DUAL) CONNECT BY LEVEL 2011. 3. 14.
[Oracle] 오라클에서 WITH문으로 쿼리를 임시테이블이나 View처럼 사용하자. MSSQL문의 저장프로시저를 분석해서 자바 배치를 만드는 작업을 하던 중에.. 막히는 부분이 있었다. MSSQL의 저장프로시저에는 무조건 쿼리를 만들어 임시테이블에 넣고, 그 임시테이블을 가지고 이것저것 조건을 건 다음에 다시 다른 임시테이블에 넣는 작업이 반복되고 있었다. 며칠을 고민한 끝에 오라클의 WITH문을 발견하고 '만세~!'를 불렀다. ㅋ WITH문을 사용하면 자유자재로 쿼리를 뷰처럼 재사용할 수 있었기 때문이다. WITH viewData AS ( SELECT * FROM TestTable_1 ) SELECT * FROM viewData ; 이건 WITH 문의 기본 문장이다. WITH name AS ( 쿼리 ) 그런데, WITH문에 다중 쿼리를 사용하면 그 위력이 엄청나게 된다. WITH vi.. 2011. 3. 3.
[쿼리문/오라클] Oracle 저장 프로시저 샘플 프로그래밍이란 게 뭐든 샘플만 있으면 못할 게 없죠. 저장프로시져 만들때 샘플이 없어서 네이버를 찾아헤매던 기억이 있어서 샘플을 남깁니다. CREATE OR REPLACE PROCEDURE YOUNG.DAILYSUM_DATA IS CURSOR cur IS SELECT CREATE_DATE, CUST_NO, COLLECT_AMT FROM YOUNG.T_COLLECT; CURSOR cur2 IS SELECT SUBSTR(CREATE_DATE,1,6) AS CREATE_DATE, CUST_NO, SUM(COLLECT_AMT) AS COLLECT_AMT FROM YOUNG.T_COLLECT GROUP BY SUBSTR(CREATE_DATE,1,6), CUST_NO; BEGIN DBMS_OUTPUT.ENABLE;.. 2011. 1. 25.