sql (17) 썸네일형 리스트형 [SQL] 계층형구조 쿼리 계층형구조 쿼리 START WITH: 시작 항목 설정 CONNECT BY PRIOR: 계층 우선 항목 (부모 = 자식) ORDER SIBLINGS BY: 계층형 순서 (사용시 prior 첫번째 인자 기준으로 정렬) 예제 SELECT * FROM MENU_INFO START WITH MENU_LEV = 0 --MENU_LEV가 0인 항목을 시작으로 CONNECT BY PRIOR MENU_ID = HRNK_MENU_ID --MENU_ID 기준으로 하위메뉴를 설정 ORDER SIBLINGS BY HRNK_MENU_ID ASC, SORT_SNO ASC --MENU_ID 기준으로 HRNK_MENU_ID, SORT_SNO 오름차순 정렬 [SQL] 속도 개선 TIP 쿼리 작성 및 DB처리 속도 개선을 위한 Tip 1. 인덱스 사용 필수 2. EXIST sub쿼리 사용시에도 인덱스 생성하여 속도개선 3. WHERE문의 정확한 설정 필요 (설정이 어려울 경우 hint사용-비권장) 4. 날짜컬럼은 vchar로 설계권장(TO_NUMBER 사용시 지연상황 발생) 5. ROWNUM, ROW_NUMBER(), ORDER BY 사용시 대량의 파일이 연산되므로 조건을 줄여 사용권장 6. LIKE문 사용시 컬럼 앞뒤로 %사용할 경우 인덱스 수행불가 ('찾는단어' || '%' 또는 '%' || '찾는단어'와 같이 하나만 사용시에는 인덱스 수행) [SQL] MERGE (Insert, update를 설정) 단일 테이블 ORACLE MERGE INTO 타겟테이블 // 결과가 완료되는 테이블 USING DUAL ON (필드1= 비교할 대상) // 조건 WHEN MATCHED THEN // 존재하면 UPDATE UPDATE SET 타겟_필드1= 'aaa' ,타겟_필드2= 'bbb' WHEN NOT MATCHED THEN // 존재하지 않으면 INSERT INSERT (타겟_필드1, 타겟_필드2, 타겟_필드3....) VALUES( 'aaa' , 'bbb' , 'ccc' ); // MERGE문에서는 ; 를 포함 MSSQL MERGE INTO 타겟테이블 // 결과가 완료되는 테이블 USING (SELECT 1 AS DUM) X // 임의로 select문을 선언해야함 ON (필드1= 비교할 대상) // 조건 WHEN.. [SQL] GROUP BY 개념적 정의 GROUP BY 출력하고자 하는 대상이 SUM, COUNT, AVG와 같이 계산되었을 때 출력되는 컬럼별로 통합하지 않고 출력시키는 기능 컬럼의 내용들을 개별적으로 확인하고자 할 경우 KEY가 되는 항목을 GROUP BY하여 사용 아래 예제는 전체 월급이 5000을 초과하는 JOB에 대해서 JOB과 월급여 합계를 조회하는 예입니다. 단 판매원(SALES)은 제외하고 월 급여 합계로 내림차순 정렬되어 있습니다. SELECT job, SUM(sal) "급여합계" FROM emp WHERE job != 'SALES' -- 판매원은 제외 GROUP BY job -- 업무별로 Group By HAVING SUM(sal) > 5000 -- 전체 월급이 5000을 초과하는 ORDER BY SUM(sal) DESC; .. [SQL] INDEX 삭제 유니크 INDEX를 삭제하기위해 두가지 쿼리문을 이용 ALTER TABLE 테이블명 DROP CONSTRAINT PK명; DROP INDEX PK명; [SQL] 특정 문자만 UPDATE Table에서 특정 문자만을 UPDATEUPDATE 테이블명SET 컬럼명 = REPLACE(컬럼명 ,'변경전 문자','변경후 문자') 예제 1MN_IDMN_NAMEINFOUSE_YNM00000이용자1관리자YM00001이용자2사용자Y AAA테이블에서 MN_ID에 M00이 포함된 내용을 찾아 M00을 M11로 UPDATE UPDATE AAASET MN_ID = REPLACE(MN_ID,'M00','M11')WHERE MN_ID LIKE '%M00%' 결과MN_IDMN_NAMEINFOUSE_YNM11000이용자1관리자YM11001이용자2사용자Y 예제2MN_IDMN_NAMEINFOUSE_YNM00000이용자1관리자YM00001이용자2사용자Y AAA테이블에서 MN_ID에 M00과 MN_NAME에 이용자라는.. [SQL] 컬럼명으로 테이블 찾기 테이블명이 정확하지 않고 컬럼명만 알고 있는 경우 컬럼명으로 통해서 테이블을 찾을 수 있습니다. SELECT TABLE_NAME, COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE COLUMN_NAME='컬럼명'; [DB] 조인(Inner Join)과 아우터조인(Outer Join)의 차이 INNER JOIN과 OUTER JOIN의 개념 조인이 되는 키값을 기준으로 Inner join 의 경우는 교집합, outer join 의 경우는 기준테이블 Key의 집합이라고 생각하면 됩니다. INNER JOIN OUTER JOIN ※ INNER JOIN은 보통 INNER을 제외하고 JOIN이라 부르기도 함 INNER JOIN 예제 검색 결과가 a와 b라는 항목이 있다고 가정했을 경우 a와 b의 겹치는(교집합 되는) 부분을 출력 select a.seqno, b.name from( select 1 seqno from dual union all select 4 seqno from dual ) a, ( select 1 seqno, 'BBB' name from dual union all select 3 seq.. 이전 1 2 3 다음