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 대절님

댓글을 달아 주세요



티스토리 툴바