본문 바로가기

04번. IT 힌트얻기/▶ DB/ SQL

트리거(TRIGGER) 이해하기 트리거 (TRIGGER) 란? 간단히 말해 INSERT,UPDATE, DELETE 문이 Table 에 대하여 수행 되어질 때 묵시적으로 수행되는 Procedure 이다. 트리거는 table 에 저장되는 것이 아니라 별도로 오라클 데이터베이스 자체에 저장 된다. 트리거는 view 에 대해서는 동작하지 않고 table 자체에 대해서만 정의 될 수 있다. 트리거란 특정 테이블의 데이터에 변경이 가해졌을때 묵시적으로 자동으로 수행되는 저장 프로시져라 할 수 있다. C++ 언어 또는 Java 의 Class 의 경우 Constructor 와 Destructor 가 있다. 이들은 Class 가 만들어 질때 자동으로 호출되거나 아니면 소멸되기 전에 자동으로 호출되는 묵시적 수행 함수이다. 바로 이와 같은 기능이 트리거.. 더보기
Oracle Function ◆ FUNCTION 생성 ◆ 실행 환경에 반드시 하나의 값을 Return 하기 위해 PL/SQL 함수를 사용한다. 함수 선언에서 Datatype이 있는 RETURN 절을 추가하고 PL/SQL 블록에 적어도 한 개 이상의 RETURN 문을 포함한다. PARAMETER에서 사용하는 IN, OUT, IN OUT는 PROCEDURE에서 사용한 것과 동일하게 사용가능하나 대부분 IN을 사용한다. 1. Syntax OR PLACE function name이 존재할 경우 FUNCTION의 내용을 지우고 다시 생성 function_name Function의 이름은 표준 Oracle 명명법에 따른 함수이름 argument 매개변수의 이름 mode 3가지가 있다 IN(입력매개변수), OUT(출력매개변수), IN OUT(입.. 더보기
ROLL UP 출처 : 오라클클럽 (http://www.oracleclub.com/lecture/1845) 간단 예제 -- 먼저 GROUP BY를 사용해서 직업별로 급여 합계를 구하는 예제이다. SQL> SELECT job, SUM(sal) FROM emp GROUP BY job; JOB SUM(SAL) ---------- ---------- ANALYST 600 CLERK 3200 MANAGER 33925 PRESIDENT 5000 SALESMAN 4000 -- ROLLUP을 사용해서 직업별로 급여 합계와 총계를 구하는 예제이다. SQL> SELECT job, SUM(sal) FROM emp GROUP BY ROLLUP(job); JOB SUM(SAL ---------- ---------- ANALYST 6000 C.. 더보기
OUTER JOIN Outer Join - Join 조건을 만족하지 않는 경우에도 다른 행들을 보기 위해 사용 - 한쪽 테이블에는 해당하는 데이터가 존재하는데 다른 쪽 테이블은 데이터가 존재하지 않을 경우 모두 데이터를 출력하게 하는 조인 - 조인시킬 값이 없는 즉 null 행으로 결합하는 (데이터가 없는 table)쪽에 (+) 연산자를 사용 - (+)를 사용하는 위치는 Join할 데이터가 부족한 쪽에 위치시킴 - Outer Join 조건이 걸려있는 테이블에는 다른 조건절이 들어와도 똑같이 Outer 조인 연산자를 (+) 해주어야함 - left out join : 왼쪽 테이블이 기준 왼쪽 테이블의 자료는 모두 출럭되고 오른쪽 테이블의 자료는 연결되는 것들만 출력 왼쪽 테이블의 컬럼명 = 오른쪽 테이블의 컬럼명(+) - ri.. 더보기
[SQL 고수되기] 열한번째 이야기 출처 : 네이버지식인 노하우 http://kin.naver.com/knowhow/detail.nhn?d1id=8&dirId=8&docId=553699&qb=U1FMIOqzoOyImOuQmOq4sCDsl7TtlZzrsojsp7gg7J207JW86riw&enc=utf8&section=kin&rank=1&search_sort=0&spq=0&pid=go1ZH35Y7vwsstEJfvZssc--411835&sid=TozeLPJwjE4AABooIow 안녕하세요. 오랜만에 이야기를 시작합니다. 오늘 할 이야기는 지난번 이야기에서 잠깐 이야기 나누웠던 통계현황 조회에 대해 구체적으로 이야기해볼까합니다. 이거 기억하시죠? ┌────┬───┬───┬───┬───┬───┬───┬───┬────┐ │ 사번 │ 일 │ 월 │ 화.. 더보기
[SQL 고수되기] 열번째 이야기 출처 : 네이버지식인 노하우 http://kin.naver.com/knowhow/detail.nhn?d1id=8&dirId=8&docId=553302&qb=U1FM6rOg7IiY65CY6riwIC0g7Je067KI7Ke4IOydtOyVvOq4sA==&enc=utf8&section=kin&rank=1&search_sort=0&spq=0 이번 이야기에선 앞으로 많이 활용되어질 아르바이트생정보에 대해 만들어볼까합니다. 종종 발생하는 Data Migration 방식을 보여드리고저 하는데 이땐 우편번호 정보가 필요합니다. 전부 다 가지고 계신게 아니기에 그냥 간단하게 주조를 고정시키고 만드는 방법과 랜덤하게 주소를 만드는 방법 두가지로 만들겠습니다. 참고로 우편정보 필요하신분들은 하단 의견란에 글남기시면 메일로 .. 더보기
[SQL 고수되기] 아홉번째 이야기 출처 : 네이버지식인 노하우 http://kin.naver.com/knowhow/detail.nhn?d1id=8&dirId=8&docId=553087&qb=U1FMIOqzoOyImOuQmOq4sCDslYTtmYnrsojsp7g=&enc=utf8&section=kin&rank=1&search_sort=0&spq=0&pid=go1vx35Y7t0ssskYj7wssc--063939&sid=TozeLPJwjE4AABooIow 지난 이야기에서 함 해보시라고 한거 해보셨지? ^^ 문제) 4월 출퇴근형황 정보를기준으로 다음처럼 요일별 근무시간합을 조회해보세요 ┌────┬───┬───┬───┬───┬───┬───┬───┐ │ 사번 │ 일 │ 월 │ 화 │ 수 │ 목 │ 금 │ 토 │ ├────┼───┼───┼───┴──.. 더보기
union vs. union all [ UNION ] UNION 구문은 첫번째 쿼리의 모든 행을 두번째 쿼리의 모든 행과 더하고, 중복된 행을 제거한 후, 결과를 리턴한다. 다음 예를 보면 첫번째 쿼리에서 EMPLOYEES_ID와 LAST_NAME에서 LAST_NAME 열이 A나 B로 시작하는 직원 레코드를 얻고, 두번째 쿼리에서는 EMPLOYEES_ID와 LAST_NAME 열에서 LAST_NAME이 B나 C로 시작하는 직원 레코드를 얻었다. 쉽게 알 수 있겠지만 B로 시작되는 LAST_NAME 열을 가지는 직원 레코드는 첫번째와 두번째 쿼리 모두에서 선택되며 , 중복되는 행들은 결과셋에서 제외된다. select employee_id, last_name from employees where last_name like 'A%' or last.. 더보기
[Function] row_number() over(partition by...order by ....) select employee_id, job_id, last_name, salary, row_number() over( PARTITION by job_id order by salary) rn, count(*) over ( partition by job_id) cnt from hr.employees 확인할 것 row_number() over (partition by job_id order by salary) 결과값 여기서는 job_id 별로 다시 row_number를 매기는 것이다. 그리고 row_number를 줄때 기준은 salary가 가장 높은 것을 1을 주는 방식으로 진행된다. 더보기
[SQL고수되기] 여덟번째 이야기 출처 : 네이버지식인 노하우 http://kin.naver.com/knowhow/detail.nhn?d1id=8&dirId=8&docId=553053&qb=U1FM6rOg7IiY65CY6riwLeyXrOuNn+uyiOynuA==&enc=utf8&section=kin&rank=1&search_sort=0&spq=0&pid=goY3Qc5Y7twssZRccelssc--088148&sid=TovECl6Ri04AAH8Hfo8 어제 머리 아프게(복잡하게) 그 어렵다는 유효데이터 가공 작업을 해보았습니다. 많이 지치죠? 머리가 터질것 같은 분들도 계시고. 저 혼자생각이였으면 좋겠음 ^^ 이제 부터는 한 요청(주제)에 대한 재정의(Defined) 방법에 대해 상황에 맞는 기법을 소개하면서 이야기 해나갈까합니다. 오늘부.. 더보기