관리 메뉴

nkdk의 세상

오라클 DB 설계 및 활용 9일째 2번 내용 본문

My Programing/DataBase

오라클 DB 설계 및 활용 9일째 2번 내용

nkdk 2008. 3. 7. 20:38
CREATE VIEW V_GROUP AS SELECT SAWON_JIK, SUM(SAWON_PAY) AS HAP, AVG(SAWON_PAY) AS AVER FROM SAWON GROUP BY SAWON_JIK

SELECT * FROM V_GROUP;

UPDATE SAWON SET SAWON_PAY=50000 WHERE SAWON_NAME='이순신'

CREATE OR REPLACE VIEW V_JOIN AS SELECT SAWON_NO, SAWON_NAME, BUSER_NAME, SAWON_JIK FROM SAWON INNER JOIN BUSER ON BUSER_NUM=BUSER_NO WHERE SAWON.BUSER_NUM IN(10,20);

SELECT * FROM V_JOIN;

UPDATE V_JOIN SET SAWON_NAME ='강인수' WHERE SAWON_NAME='주호진'

UPDATE V_JOIN SET SAWON_NAME ='반장', BUSER_NAME='비서실' WHERE SAWON_NAME='강인수' -- 오류를 표출한다.
(이유: 조인 뷰에 의해서는 하나 이상의 기본테이블을 수정할 수 없다. 한개당 하나의 테이블만 작업해야 한다. 뷰에서는 안됨, SAWON, BUSER 테이블 동시 출현했기 때문에 오류이다.)

UPDATE V_JOIN SET SAWON_NAME ='강철', SAWON_JIK='계장' WHERE SAWON_NAME='강인수' <- 이와 같을 때에는 가능하다 한개의 테이블만 출연했기 때문이다.

INSERT INTO V_JOIN(SAWON_NO, SAWON_NAME) VALUES(25,'최중환');

DELETE FROM V_JOIN WHERE SAWON_NO=25;

문) 사번 직원명 부서 직급 구분 근무년수 고객확보
1 홍길동 전산부 대리 경력 7 O
2 한국인 총무부 사원 일반 3 X
조건: 직급이 없으면 임시직
구분란에는 5년 이상 근무자에 대해 경력, 나머지는 일반으로 표현
관리 고객이 있으면 O, 없으면 X를 고객 확보 란에 표시 총무부는 제외
위의 결과가 출력 될 수 있는 V_EXAM 작성하라

CREATE OR REPLACE VIEW V_EXAM AS SELECT DISTINCT SAWON_NO 사번, SAWON_NAME 직원명, BUSER_NAME 부서, NVL(SAWON_JIK,'임시직') 직급, CASE WHEN 2007 - TO_CHAR(SAWON_IBSAIL, 'YYYY') >= 5 THEN '경력' ELSE '일반' END AS 구분, 2007 - TO_CHAR(SAWON_IBSAIL, 'YYYY') AS 근무년수, CASE WHEN GOGEK_DAMSANO IS NULL THEN 'X' ELSE 'O' END AS 고객확보 FROM BUSER RIGHT OUTER JOIN SAWON ON BUSER_NO = BUSER_NUM LEFT OUTER JOIN GOGEK ON SAWON_NO = GEK_DAMSANO WHERE BUSER_NAME != '총무부' OR BUSER_NAME IS NULL ORDER BY SAWON_NO;

오늘은 이 정도까지네요 ^_^ 수고하셨습니다.
오츠까레 사마 데시따~