Oracle 3강

programing/Oracle 2009.04.13 21:31


OBJECT
.table
.view
.index
.sequence
.synonym

생성은 create로 방법같음.
*VIEW 생성
>CREATE view empvw30
>AS
>SELECT first_name, last_name, salary, commission_pct
>FROM employees
>WHERE department_id = 50;

>desc empvw30
>select *
>from empvw30;


*UNINSTALL
DBCA


*리눅스 설치시 주의사항
HCL 확인 - 하드웨어 호환성 검사
1. USER명 - 한글, 공백(X)
2. HOST명 - 한글, 공백(X)    (cmd 창 c:\>hostname)
3. file경로 - 한글, 공백(X)

*oracle 설치시 주의사항
네트워크, 업무특성, 백업주기등등 미리 구성


c:\>sqlplus SCOTT/tiger

>conn system/oracle   --system 계정으로 변경

>show user    -- USER는 'system'

>alter user hr                  -- hr사용자의
>identified by tiger  -- passwd를 tiger로 변경하고
>account unlock;  -- 계정을 풀어준다.

>conn hr/tiger   -- hr계정으로 로그인

>conn scott/tiger  -- scott 계정으로 로그인
>desc user_tables  -- 테이블 정보보기

>select table_name  -- table이름 보기
>from user_tables;

>desc emp   -- emp테이블의 컬럼정보

>select *   -- emp 테이블 data보기
>from emp;

>select *   -- 부서테이블 data보기
>from dept;

* 사원명, 부서명 출력하고싶을때(join이용)
>select ename, dname  
>from emp, dept;  

>select ename, dname
>from emp, dept
>where emp.deptno=dept.deptno;

>select ename, dname, deptno      -- ERROR 발생 deptno 가 emp, dept 테이블에 둘다 있기 때문에 해당 테이블을 정해줘야됨.
>from emp, dept
>where emp.deptno=dept.deptno;

>select emp.ename, dept.dname, emp.deptno   -- emp.deptno <-로변경 출력할 테이블을 구체적으로 적어주는 것이 좋음.
>from emp, dept
>where emp.deptno=dept.deptno;

>select e.ename, d.dname, e.deptno -- 별칭을 정해서 사용하기 편리하게함.
>from emp e, dept d
>where e.deptno=d.deptno

* cross join
1. >select e.ename, d.dname  -- 두가지가 같은 결과 , 사용하는 문법만 다름.
>from emp e cross join dept d;  -- 99년에 추가된것
2. >select e.ename, d.dname
>from emp e,dept d;

* natural join
1. >select e.ename, d.dname  -- 같은결과, natural join 에는 where절이 없음.
>from emp e natural join dept d; -- 같은 컬럼명이 있을때는 사용 X
2. >select e.ename, d.dname 
>from emp e, dept d
>where e.deptno = d.deptno;

* 2개의 테이블에 컬럼명이 동일한것이 2개 이상일경우 (JOIN USING)
>select e.ename, d.dname
>from emp e join dept d
>using(deptno);

* 테이블은 다르지만 안의 data 가 같을때 (JOIN ON)
>select e.ename, d.dname
>from emp e join dept d
>on(e.deptno = d.deptno);

* SELF JOIN
>select e.ename, c.ename  -- 사원과 그의 상사 출력, CEO의 상사는 NULL 표시 X
>from emp e, emp c
>where e.mgr=c.empno;

* OUTER JOIN         -- 한쪽조건에 NULL 값이 있을경우 사용
>select e.ename, c.ename  
>from emp e, emp c
>where e.mgr=c.empno(+);  -- (+)안쓸경우 ceo가 출력이 안되던것이 출력됨.

*LEFT OUTER JOIN 99'   -- outer join 의 자리를 정해줄수 있음(left, right, full)
>select e.ename, c.ename  
>from emp e left outer join emp c
>on(e.mgr=c.empno);

*EMP_his 테이블 생성    -- EMP_his 를 퇴사한 사람들이라고 가정
>create table EMP_his   -- emp 는 전현직 사원
>AS
>SELECT empno, ename, sal
>from emp
>where deptno=30;

*SET OPERATOR!!!

-퇴사한 사원들을 빼고 현직사원만 출력
1.NOT IN 이용
>select empno, ename, sal
>from emp
>where empno not in(select empno from emp_his);    <- 퇴사한사원들의 사번과 다른사람을 출력(!=는 복수일경우 사용 X)

*교집합 = intersect, 합집합 = union, 차집합 = minus     <--- 자동으로 정렬해서 나옴

2.MINUS 이용
>select empno, ename, sal from emp
>minus          <- 전체사원 - 퇴사한 사원 = 현직사원
>select empno, ename, sal from emp_his;     -- SORT되어 empno에 따라 자동정렬 되어 나옴

*union_all
>select empno, ename, sal from emp     -- union all 은 sort X (A+B 출력할때 교집합이 없을경우 SORT안하기
>union all           때문에 속도가 union 보다 속도가 더빠름)
>select empno, ename, sal from emp_his;

--비교할 테이블 사이에 data구조(숫자, 문자, 숫자), 형식이 같아야 비교가능--
>select empno, ename, sal, job from emp
>union
>select empno, enamme, sal, '백수' from emp_his;    <-- job이 문자 이기때문에 문자열 '백수'를 써서 비교 형식을 같게해줌. sort X

'programing > Oracle' 카테고리의 다른 글

Oracle 6강  (0) 2009.04.13
Oracle 5강  (0) 2009.04.13
Oracle 4강  (0) 2009.04.13
Oracle 3강  (0) 2009.04.13
Oracle 2강  (0) 2009.04.13
Oracle 1강  (0) 2009.04.13
Posted by 대절님

댓글을 달아 주세요