관리 메뉴

nkdk의 세상

오라클 DB 설계 및 활용 6일째 1번째 내용 본문

My Programing/DataBase

오라클 DB 설계 및 활용 6일째 1번째 내용

nkdk 2008. 3. 7. 20:32
RDBMS란.. 두개 이상의 테이블을 합치거나 검색할 수 있는 DB이다.

SELECT * FROM GOGEK;

SELECT SAWON_NO, SAWON_NAME, SAWON_JIK, GOGEK_NAME, GOGEK_JUMIN FROM SAWON, GOGEK WHERE SAWON_NO=GOGEK_DAMSANO;
SELECT SAWON_NO, SAWON_NAME, SAWON_JIK, GOGEK_NAME, GOGEK_JUMIN FROM SAWON INNER JOIN GOGEK ON SAWON_NO=GOGEK_DAMSANO;

두개의 구문은 똑같은 값을 낸다.

SELECT SAWON_NO, SAWON_NAME, SAWON_JIK, GOGEK_NAME, GOGEK_JUMIN FROM SAWON, GOGEK WHERE SAWON_NO=GOGEK_DAMSANO(+);

문1) 직급이 사원인 직원이 관리하는 고객 출력

출력 ==> 사번 사원명 직급 고객명 고객전화 성별

SELECT SAWON_NO 사번,SAWON_NAME 사원명, SAWON_JIK 직급, GOGEK_NAME 고객명, GOGEK_TEL 고객전화, CASE SUBSTR(GOGEK_JUMIN, 8,1)
WHEN '1' THEN '남' WHEN '2' THEN '여' END 성별
FROM SAWON, GOGEK WHERE SAWON_JIK = '사원' AND SAWON_NO = GOGEK_DAMSANO;

문2) 직원별 고객 확보 수 - GROUP BY 사용

SELECT SAWON_NAME, COUNT(GOGEK_NAME) FROM SAWON, GOGEK WHERE SAWON_NO = GOGEK_DAMSANO GROUP BY SAWON_NAME

- 모든 직원 참여
- 고객이 없는 직원 제외

문3)
고객이 담당 직원의 자료를 보고 싶을 때 즉, 고객명을 입력하면 담당직원 자료 출력: ~ WHERE GOGEK_NAME='강나루'
출력 =-=> 직원명 직급
한국인 사원

SELECT SAWON_NAME 직원명, SAWON_JIK 직급 FROM SAWON, GOGEK WHERE GOGEK_NAME = '&NA' AND SAWON_NO = GOGEK_DAMSANO;


문4) 직원명을 입력하면 관리 고객 자료 출력
~ WHERE SAWON_NAME='한국인'
출력~
고객명 고객전화 주민번호 나이

SELECT GOGEK_NAME 고객명, GOGEK_TEL 고객전화, GOGEK_JUMIN 주민번호,(TO_CHAR(SYSDATE ,'YYYY')
- CONCAT('19',SUBSTR(GOGEK_JUMIN,1,2))) 나이 FROM GOGEK, SAWON WHERE SAWON_NAME='&NAME' AND SAWON_NO = GOGEK_DAMSANO;


정도가 답이 되겠네요? 뭐 좀 더 간단한 방법이 있겠죠? ^^ 간단한 방법이 더 있다면 올려주세요. ^^ 1부 끝

순규형이 참고 자료로 올려준 내용.. 맨 끝에 문제는 밀레니엄 버그가 생기네요 ㅎㅎ~ ^^;

SELECT GOGEK_NAME 고객명,GOGEK_TEL 고객전화,GOGEK_JUMIN 주민번호,TO_NUMBER(TO_CHAR(SYSDATE,'YYYY'))-
TO_NUMBER(DECODE((SUBSTR(GOGEK_JUMIN,8,1)),1,CONCAT('19',SUBSTR(GOGEK_JUMIN,1,2)),2,CONCAT('19',SUBSTR(GOGEK_JUMIN,1,2)),
3,CONCAT('20',SUBSTR(GOGEK_JUMIN,1,2)),4,CONCAT('20',SUBSTR(GOGEK_JUMIN,1,2))))
나이 FROM SAWON JOIN GOGEK ON SAWON_NO=GOGEK_DAMSANO WHERE SAWON_NAME='홍길동';

이와 같이 처리 하면 밀레니엄 버그는 고쳐지는데 2100년도에는 문제가 생길듯~~ ^^;