EX) MERGE INTO EMP01 USING EMP02 

ON(EMP01.EMPNO = EMP02.EMPNO)

WHEN MATCHED THEN 

UPDATE SET

EMP01.ENAME = EMP02.ENAME ,

EMP01.JOB = EMP02.JOB,

EMP01.SAL = EMP02.SAL 

....

WHEN NOT MATCHED THEN

INSERT VALUES(EMP02.EMPNO . EMP02.ENAME,EMP02.JOB,EMP02.SAL.....);


'Oracle' 카테고리의 다른 글

오라클 데이터 읽기의 일관성과 락.  (0) 2014.11.12
오라클 트랜잭션 관리 ㅋ.ㅋ  (0) 2014.11.12
오라클 DELETE문  (2) 2014.11.12
오라클 UPDATE 문  (0) 2014.11.12
오라클 테이블의 명령어 INSERT UPDATE DELETE MERGE  (0) 2014.11.12
블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

오라클 DELETE문

Oracle 2014. 11. 12. 17:08

DELETE - 데이터 삭제를 위해 

EX) DELETE FROM DEPT01; //모든데이터 삭제

EX) DELETE FROM DEPT01 WHERE DETPNO =30; //30번 부서사람들 삭제 


서브쿼리를 이용한 데이터 삭제

EX) DELETE FROM EMP01 WHERE DEPTNO = (SELECT DEPTNO FROM DEPT WHERE DNAME = 'SALES');


블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

오라클 UPDATE 문

Oracle 2014. 11. 12. 17:05

모둔 사원의 번호 30번으로 수정

EX) UPDATA EMP01 SET DEPTNO =30; 

모둔 사원의 급여 10프로 상승 

EX) UPDATE EMP01 SET SAL = SAL * 1.1;

모든 사원의 입사 일자. 

EX) UPDATE EMP01 SET HIREDATE = SYSDATE;

특정 데이터 행만 값을 변경

EX) UPDATE EMP01 SET DEPTNO = 30 WHERE DPTNO =10;

급여가 3000원 이상인 사원만 급여를 10퍼센트 이상

EX) UPDATE EMP01 SET SAL = SAL * 1.1 WHERE SAL >= 3000;


테이블에서 2개이상 값 변경

EX) UPDATE EMP01 SET DEPTNO=20,JOB='MANAGER' WHERE ENAME 'SCOTT';


서브쿼리를 이용한 데이터 수정

EX) UPDATE DEPT01 SET(DNAME,LOC) = (SELECT DNAME , LOC, FROM DEPT WHERE DEPTNO=20;


블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

INSERT - 테이블에 새로운 행을 추가하는 INSERT 문

EX) INSERT INTO DEPT01(DEPTNO, DNAME, LOC) VALUES(10, 'ACCOUNTING', 'NEW YORK');

EX) INSERT INTO DEPT01 VALUES(10, 'ACCOUNTING', 'NEW YORK');

EX) INSERT INTO DEPT01 (DEPTNO,DNAME) VALUES(30,'SALES');

 서브 쿼리로 데이터 삽입하기

EX) INSERT INTO DEPT02 SELECT * FROM DEPT; (동일한 구조일떄)

 다중테이블 다중행 입력하기.

EX) INSERT ALL

 INTO EMP_HIR VALUES(EMPNO,ENAME, HIREDATE)

INTO EMP_MGR VALUES(EMPNO,ENAME,MGR)

SELECT EMPNO, ENAME, HIREDATE, MGR FROM EMP WHERE DEPTNO = 20;

== INSERT ALL 에 WHEN 문을 추가해보자. 

EX) INSERT ALL

WHEN HIREDATE > '1982/01/01' THEN

INTO EMP_HIR02 VALUES(EMPNO, ENAME, HIREDATE)

WHEN SAL > 2000 THEN 

INTO EMP_SAL  VALUES(EMPNO, ENAME, SAL)


'Oracle' 카테고리의 다른 글

오라클 DELETE문  (2) 2014.11.12
오라클 UPDATE 문  (0) 2014.11.12
오라클 테이블 구조 생성, 변경 및 삭제하는 DDL  (0) 2014.11.12
오라클 서브쿼리  (0) 2014.11.12
오라클 조인 JOIN 뭘까용?  (0) 2014.11.12
블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,
CREATE TABLE -새로운 테이블을 생성 
CREATE TABLE SAM03(DAY01 INTERVAL DAY(3) TO SECOND);

식별자 명명규칙 - 테이블 명과 컬럼 명이 같이 사용자가 이름을 부여하는 것을 식별자라고 하는데 규칙을 준수하여야함
1. 반드시 소문자로 시작할것이며
2. 1-30자까지 가능하고
3. A-Z대소문자와 0-9까지의 숫자 특수기호는 (_,$,#)만 포함가능
4. 오라클에서 사용되는 예약어나 다른 객체명과 중복 불가
5. 공백 허용 안함.

EX) CREATE TABLE EMP01(
     EMPNO NUMBER(4),
     ENAME VARCHAR2(20),
     SAL NUMBER(7,2));

구조는 DESC EMP01로 볼수 있음.. 
== 서브쿼리로 테이블 생성하기 ==
EX) CREATE TABLE EMP02 AS SELECT * FROM EMP;
EMP와 똑같은 구조와 내용를 가진EMP02 테이블이 만들어짐 
==서브쿼리로 원하는 컬럼만 가지고 생성하기 ==
EX) CREATE TABLE EMP02 AS SELECT  EMPNO, ENAME FROM EMP;
EMP에서 일부의 구조와 내용을 가진 EMP02테이블 생성
==서브쿼리로 원하는 데이터만 가지고 생성하기 ==
EX) CREATE TABLE EMP02 AS SELECT * FROM EMP WHERE DEPTNO =10;
EMP에서 DEPTNO 10을 충족하는 내용들로 테이블을 생성.. 
== 테이블 구조만 복사하기. ===
EX) CREATE TABLE EMP06 AS SELECT * FROM EMP WHERE 1=0;


ALTER TABLE 테이블 구조를 변경
ALTER TABLE ADD - 기존 테이블에 새로운 컬럼 추가.. 
EX) ALTER TABLE EMP01 ADD(JOB VARCHAR2(9));
ALTER TABLE MODIFY - 기존 컬럼의 형식을 변형 
EX) ALTER TABLE EMP01 MODIFY(JOB VARCHAR 99) ;
ALTER TABLE 테이블명 DROP COLUMN - 테이블에 컬럼 삭제
EX) ALTER TABLE EMP01 DROP COLUMN JOB;

SET UNUSED 삭제하지는 않지만 논리적으로 제한할수 있음
EX) ALTER TABLE EMP01 SET UNUSED(JOB);

DROP TABLE - 테이블 구조를 삭제
EX) DROP TABLE EMP01 ;

TRUNCATE - 테이블의 모든 로우를 제거
EX) TRUNCATE TABLE EMP02;
 
RENAME - 테이블 명을 변경
EX) RENAME EMP02 TO TEST ;

데이터 딕셔너리와 데이터 딕셔너리 뷰.
시스템 테이블=데이터 딕셔너리 
접두어 DBA_XXXX 데이터베이스 관리자만 접근이 가능한 객체 등의정보 조회 DBA는 모든 접근이 가능하므로 결국 디비에 있는 모든 객체에 관한조회
접두어 ALL_XXXX 자신의 계정이 소유하거나 권한을 부여받은 객체 등의  관한 정보 조회
접두어 USER_XXXX 자신의 계정이 소유한 객체 등에 관한 정보 조회

USER_TABLES구조 조회
EX) DESC USER_TABLES;
행제 사용자
EX) SHOW USER;

사용자가 사용할수 잇는 테이블 네임 조회
EX) SELECT TABLE_NAME FROM USER_TABLES ORDER BY TABLE_NAME DESC;

- USER_SEQUENCES : 계정이 소유한 시퀸스의 정보를 조회할 수 있는 데이터 딕셔너리 뷰
- USER_INDEXES : 계정이 소유한 인덱스 정보를 조회할 수 있는 데이터 딕셔너리 뷰
- USER_VIEWS : 계정이 소유한 뷰 정보를 조회할 수 있는 데이터 딕셔너리 뷰

ALL_데이터 딕셔너리- 현재 접근할 수 있는 객체, 즉 자신 계정의 소유이거나 접근 권한을 부여받은 타 계정의 객체 등을 조회
EX) DESC ALL_TABLES;
특정 테이블 컬럼값 보기
EX) SELECT OWNER, TABLE_NAME FROM ALL_TABLES;

-ALL_SEQUENCES : 현재 계정에서 접근 가능한 시퀸스 정보 조회
-ALL_INDEXES : 현재 계정에서 접근 가능한 인덱스 정보 조회
-ALL_VIEWS : 현재 계정에서 접근 가능한 뷰 정보 조회

DBA_데이터 딕셔너리 - DBA에서 접근할수 있는 객체 등을 조회 하는 뷰
EX) SELECT TABLE_NAME, OWNER FROM DBA_TABLES;

DBA는 시스템 권한으로 접속하여 작업할것..

DBA_SEQUENCES : 데이터베이스에 있는 모든 시퀸스 정보 조회
DBA_INDEXES : 데이터베이스에 있는 모든 인덱스 정보 조회
DBA_VIEWS : 데이터 베이스에 있는 모든 뷰 정보 조회




'Oracle' 카테고리의 다른 글

오라클 UPDATE 문  (0) 2014.11.12
오라클 테이블의 명령어 INSERT UPDATE DELETE MERGE  (0) 2014.11.12
오라클 서브쿼리  (0) 2014.11.12
오라클 조인 JOIN 뭘까용?  (0) 2014.11.12
오라클 그룹으로 묶을때 조건문. HAVING  (0) 2014.11.12
블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

오라클 서브쿼리

Oracle 2014. 11. 12. 14:39

단일행 서브쿼리 

EX) SELECT DNAME FROM DEPT WHERE DEPTNO = ( SELECT DEPTNO FROM EMP WHERE ENAME='SCOTT');

EX) SELECT ENAME, SAL FROM EMP WHERE SAL > ( SELECT AVG(SAL) FROM EMP);

다중행 서브쿼리

IN - IN 연산자는 메인 쿼리의 비교 조건에서 서브 쿼리의 출력결과와 하나라도 일치하면 메인 쿼리의 WHERE절이 참이 되는 연산자.

EX) SELECT ENAME, SAL, DEPTNO FROM EMP WHERE DEPTNO IN (SELECT DISTINCT DEPTNO FROM EMP WHERE SAL >= 3000); 

ALL - ALL연산자는 메인쿼리의 비교조건이 서브 쿼리의 검색결과와 모든값이 일치해야 참... 검색한 값에 AND연산을 해서 모두 참이면 참이  ALL 은 모든 비교값 보다 큰지를 묻는 것이므로 최대값보다 더 크면 참이 됩니다. 

EX) SELECT ENAME, SAL FROM EMP WHERE SAL > ALL(SELECT SAL FROM EMP WHERE DEPTNO = 30 );

ANY - ANY연산자의 조건은 메인 쿼리의 비교 조건이 서버쿼리의 검색결과와 하나 이상만 일치하면 참입니다. ANY는 찾아진 값에 대해서 하나라도 크면 참이 되는 셈이 됩니다 그러므로 검색한 값 중 에서 가장 작은 갑 ㅅ즉 최소값보다 크면 참이 됩니다. 

EX) SELECT ENAME, SAL FROM EMP WHERE SAL > ANY ( SELECT SAL FROM EMP WHERE DEPTNO = 30);


블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

CROSS JOIN - 2개 이상의 테이블이 조인이 될때 WHERE 절에 의해 공통으로 결합이 발생하지 않는 경우

EX) SELECT * FROM EMP,DEPT;

EQUI JOIN - 조인대상이 되는 두테이블에서 공통적으로 존재하는 컬럼의 값이 일치되는행을 연결하여 결과 생성

EX) SELECT * FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;

EX) SELECT E.ENAME, D.DNAME, E.DEPTNO, D.DEPTNO FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO AND E.ENAME='SCOTT';

NON-EQUI JOIN - 조인조건의 특정 범위 내에 있는지 조사하기위해 

EX) SELECT E.ENAME, D.DNAME, S.GRADE FROM EMP E,DEPT D, SALGRADE S

WHERE E.DEPTNO = D.DEPTNO AND E.SAL BETWEEN S.LOSAL AND S.HISAL;

SELF JOIN - 하나의 테이블 내에서 조인을 해야만 결과를 얻을수 있을때. 

EX) SELECT EMPLOYEE.ENAME || '의 매니저는' || MANAGER.ENAME || '입니다' FROM EMP EMPLOYEE, EMP MANAGER WHERE EMPLOYEE.MGR = MANAGER.EMPNO;

OUTER JOIN - 2개이상의 테이블이 조인딜때 한쪽테이블엔 데이터가 존재하는데 다른한쪽 테이블은 데이터가 존재하지 않을때

EX) SELECT EMPLOYEE.ENAME || '의 매니저는' || MANAGER.ENAME || '입니다' FROM EMP EMPLOYEE, EMP MANAGER WHERE EMPLOYEE.MGR = MANAGER.EMPNO(+);

EX) SELECT E.ENAME, D.DEPTNO, D.DNAME FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO ORDER BY D.DEPTNO;

ANSI JOIN - ANSI 표준 SQL  조인구문은 몇 가지 새로운 키워드와 절을 제공하여 SELECT 문의 FROM 절에서 조인을 완벽하게 지정

ANSI CROSS JOIN - ANSI구문을 사용하면 다음에 , 없이 원하는 조인타입을 명확하게 지정

SELECT * FROM EMP CROSS JOIN DEPT;

ANSI INNER JOIN - 동일컬럼을 기준으로 조인하기 위한 EQUI JOIN을 ANSI조인에서는 ANSI조인에서는 FROM 다음에 INNER JOIN 이란 단어를 사요ㅣ

EX) X = SELECT ENAME, DNAME FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;

EX) SELECT ENAME,DNAME FROM EMP  INNER JOIN  DEPT ON EMP.DEPTNO -DEPT.DEPTNO;

EX) X = SELECT ENAME, DNAME FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND ENAME='SCOTT';

EX) SELECT ENAME, DNAME FROM EMP INNER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO WHERE ENAME = 'SCOTT';

USING - 이용한 조인 조건 지정하기

EX) SELECT EMP.ENAME, DEPT.DNAME FROM EMP INNER JOIN DEPT USING (DEPTNO);

NATURAL JOIN - JOIN문의 종결자.. 내부적으로 알아서 공통적인걸 찾아서 조인시켜줌..

SELECT ENAME, DNAME FROM EMP NATURAL JOIN DEPT;

ANSI OUTER JOIN - 기존 조인에서 레코드가 반드시 출력되어야 할때는 (+)를 표시해 주었다.. 하지만 ,ANSI 조인에서는 LEFT ,RIGHT ,FULL3가지를 지원한다. 

EX) SELECT * FROM DEPT01 LEFT OUTER JOIN DEPT2 ON DEPT01.DEPTNO = DEPT02.DEPTNO;

EX) SELECT * FROM DEPT01 RIGHT OUTER JOIN DEPT2 

ES) SELECT * FROM OUTER JOIN DEPT02 USING(DEPTNO);

'Oracle' 카테고리의 다른 글

오라클 테이블 구조 생성, 변경 및 삭제하는 DDL  (0) 2014.11.12
오라클 서브쿼리  (0) 2014.11.12
오라클 그룹으로 묶을때 조건문. HAVING  (0) 2014.11.12
오라클 GROUP BY  (0) 2014.11.12
오라클 그룹함수  (0) 2014.11.12
블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

그룹일때 WHERE대신 HAVING를 사용

EX) SELECT DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO HAVING AVG(SAL) >= 2000;//평균급여가 2000이상인 부서만 출력


'Oracle' 카테고리의 다른 글

오라클 서브쿼리  (0) 2014.11.12
오라클 조인 JOIN 뭘까용?  (0) 2014.11.12
오라클 GROUP BY  (0) 2014.11.12
오라클 그룹함수  (0) 2014.11.12
오라클 선택문 DECODE 함수 조건에 따라 다른처리가 가능한 CASE문  (0) 2014.11.12
블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

오라클 GROUP BY

Oracle 2014. 11. 12. 11:16

[형식]

SELECT 컬럼명, 그룹함수

FROM 테이블명

WHERE 조건(연산자)

GROUP BY 컬럼명;


EX) SELECT DEPTNO FROM EMPGROUP BY DEPTNO; //부서별 번호가 나옴.. 

EX)SELECT AVG(SAL) FROM EMP GROUP BY DEPTNO;//부서별 월급 평균

EX)SELECT DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO;//부서별 번호와 부서별 평균 급여





블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

오라클 그룹함수

Oracle 2014. 11. 12. 09:53

SUM - 그룹의 누적 합계를 반환

AVG - 그룹의 평균을 반환

COUNT - 그룹의 총 개수를 반환

MAX - 그룹의 최대값을 반환

MIN - 그룹의 최소값을 반환

STDDEV - 그룹의 표준편차를 반환

VARIANCE - 그룹의 분산을 반환


EX) SELECT SUM(SAL) FROM EMP;

EX) SELECT AVG(SAL) FROM EMP;

EX) SELECT MAX(SAL), MIN(SAL) FROM EMP;

EX) SELECT COUNT(COMM) FROM EMP;

EX) SELECT COUNT(DISTINCT JOB) 업무수 FROM EMP;


블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,