본문 바로가기

SQL14

트리거 생성(IF문 활용해서 Not Null인 컬럼만 트리거 작동) 트리거를 만들 상황이 생겼습니다. 간단한 트리거이긴 하지만, 특정 테이블 컬럼에 INSERT나 UPDATE 발생 시 다른 테이블에 로깅을 위해 해당값을 삽입하는 트리거입니다. 단, NULL 값은 필요없으므로 삽입할 필요가 없는 상황입니다. 테스트 환경에서 대략 생성하여 테스트 수행시 NULL값은 제외하고 잘 작동되는것을 확인하였습니다. 1.테이블 생성 --데이터를 삽입할 테이블 CREATE TABLE TESTLINK (a VARCHAR2(10); --데이터 삽입시 트리거가 insert 할 테이블 CREATE TABLE TESTLINK2 (a VARCHAR2(10)); 2.트리거 생성 TESTLINK의 A 컬럼에 INSERT나 UPDATE 발생시 작동 CREATE OR REPLACE TRIGGER TEST.. 2020. 12. 7.
SCOTT스키마예제를 통해 계층구조 쿼리 정리 오라클 데이터베이스에는 계층구조를 파악하게 해주기 위해 connect by 절을 지원합니다. Oracle의 SAMPLE 스키마인 SCOTT의 EMP테이블을 통해 계층구조 쿼리에 대해서 알아보고 정리하겠습니다. 구문정리 WHERE : 데이터를 가져온 뒤 마지막으로 조건절에 맞게 정리 START WITH : 계층질의의 루트로 사용될 행을 지정,서브쿼리를 사용할 수 있음 CONNECT BY : 각 행들의 연결관계를 설정,서브쿼리를 사용할 수 없음 - CONNECT BY PRIOR 자식컬럼=부모컬럼 : 부모에서 자식으로 트리구성 - CONNECT BY PRIOR 부모컬럼=자식컬럼 : 자식에서 부모로 트리구성 LEVEL : 계층구조 쿼리에서 수행결과의 깊이를 의미 ORDER SIBLINGS BY : 계층구조 쿼리.. 2020. 11. 25.
ROLLUP ROLLUP? 소계(중간합계)와 전체합계를 구하는 방법 중 SQL만 사용해서 구할 수 있는 기능이 ROLLUP입니다. ROLLUP은 GROUP BY 뒤에 ROLLUP이라고 적어서 사용합니다. 예를들어 GROUP BY ROLLUP(A,B,C,D)라고 사용하면 다음과 같은 데이터들이 조회됩니다. - GROUP BY 된 A+B+C+D별 데이터 - A+B+C 별 소계 데이터 - A+B 별 소계 데이터 - A별 소계 데이터 - 전체 합계 SQL> select to_char(t1.ord_dt,'YYYYMM') 주문년월 ,t1.cus_id 고객ID ,sum(t1.ord_amt) 주문금액 from t_ord t1 where t1.cus_id in ('CUS_0001','CUS_0002') and t1.ord_dt >=.. 2020. 11. 20.
COUNT 집계함수 count는 해당 컬럼의 갯수를 구하는 집계함수입니다. COUNT함수가 NULL 값을 어떻게 카운트하는지 보겠습니다. count함수는 NULL을 0으로 카운트합니다. col2와 col3를 보면 NULL값이 2개,1개 들어있으므로 count결과값이 null값을 제외하고 나온것을 확인할 수 있습니다. --NULL에 대한 COUNT select count(col1) cnt_col1 , count(col2) cnt_col2 , count(col3) cnt_col3 from ( select 'A' col1, null col2, 'C' col3 from dual union all select 'B' col1, null col2, null col3 from dual ); CNT_COL1 CNT_COL2 CNT_COL.. 2020. 11. 11.