'Oracle'에 해당되는 글 1건

  1. 2012.05.09 Oracle 오라클 쿼리 예제

12/05/09

기본적으로 제공되는 scott/tiger 계정으로 연습한 쿼리 예제문

http://www.oracleclub.com => 오라클강좌 참고

-- 테이블 생성 및 제약조건
 CREATE TABLE EMP2(
    EMPNO  NUMBER    CONSTRAINT emp_pk_empno PRIMARY KEY,    
    ENAME  VARCHAR2(20) CONSTRAINT emp_nn_ename NOT NULL,
    JOB    VARCHAR2(40),
    MGR    NUMBER,
    HIREDATE  DATE,
    SAL    NUMBER,
    COMM   NUMBER,
    DEPTNO NUMBER
);

-- SELECT 를 이용한 테이블 생성
CREATE TABLE emp2
  AS SELECT * FROM emp;

-- 테이블 삭제
DROP TABLE EMP2;


-- 테이블 복사
CREATE TABLE EMP3
  AS SELECT * FROM EMP;
 
-- 컬럼 추가
ALTER TABLE emp
  ADD (addr VARCHAR2(50));

-- 컬럼 수정
ALTER TABLE emp
  MODIFY (ename VARCHAR2(50));

-- 컬럼 삭제
ALTER TABLE emp
  DROP COLUMN addr;

-- 데이터 삽입
INSERT INTO dept (deptno, dname)
  VALUES(10, 'ACCOUNTING' );

-- 데이터 수정
UPDATE emp
  SET deptno = 30
  WHERE empno = 7902;
 
-- 데이터 삭제
DELETE FROM emp
  WHERE empno = 7902 ;
 
-- SELECT문( IN )
select ename, empno
  from emp
  where empno IN(7900, 7934);
 
-- SELECT문(BETWEEN)
select empno, ename
  from emp
  where sal between 3000 and 5000;
 
-- SELECT문(LIKE)
select empno, ename
  from emp
  where UPPER(name) LIKE '%K%';

-- SELECT문(ORDER BY) asc=오름차순, desc=내림차순
select empno, ename
  from emp
  where deptno = 30
  ORDER BY ename ASC;
 
-- JOIN(EQUI JOIN)
SELECT  e.ename, d.dname
  FROM   emp e , dept d
  WHERE e.deptno = d.deptno;

-- JOIN(OUTER JOIN)
SELECT DISTINCT(a.deptno), b.deptno
  FROM emp a, dept b
  WHERE  a.deptno(+) = b.deptno;

-- 내장함수(숫자함수)
--    반올림
SELECT ROUND(192.123, 1) test FROM DUAL ;

-- 내장함수(숫자함수)
--    올림
SELECT CEIL(10.1) test FROM DUAL;

-- 내장함수(숫자함수)
--    버림
SELECT FLOOR(10.1) test FROM DUAL;

-- 내장함수(문자열 함수)
--    문자 결합
SELECT CONCAT('Oracle', 'Club') FROM DUAL;

-- 내장함수(문자열 함수)
--    LOWER <= 소문자  , UPPER <= 대문자
SELECT LOWER('KIM JUNG SICK') FROM DUAL;
SELECT UPPER('KIM JUNG SICK') FROM DUAL;

-- 내장함수(문자열 함수)
--    SUBSTR('A', B, C) <= A의 B번째 문자부터 C의 개수만큼 반환
SELECT SUBSTR('JUNG-SICK', 3, 4) FROM DUAL;

-- 내장함수(문자열 함수)
--    LENGTH <= 문자 개수 반환
SELECT LENGTH('JUNG-SICK') TEST FROM DUAL;

-- 내장함수(문자열 함수)
--    REPLACE('A', 'B', 'C') <= 'A'문자 중에 'B'에 해당하는 문자를
--                              'C'로 반환한다
SELECT REPLACE('JACK and JUE','J','BL') "Changes" FROM DUAL;

-- 내장함수(문자열 함수)
--   왼쪽에서 3번째부터 시작을 해서 비교를 하는데 
--   OR이 두 번째 검색되는 지점의 위치를 반환 한다.
SELECT INSTR('CORPORATE FLOOR','OR', 3, 2) "Instring" FROM DUAL;

-- 내장함수(문자열 함수)
--    TRIM('A' from 'ABCDE' <= 'A'를 제거한다
SELECT TRIM('A' from 'ABCDE') "TRIM EXAMPLE"
  FROM DUAL;

-- 내장함수(날짜 처리 함수)
--   오늘날짜 출력
SELECT to_char(sysdate, 'YYYY-MM-DD') today
  FROM dual;
 
-- 내장함수(날짜 처리 함수)
--  날짜 출력
SELECT TO_DATE('2011/05/08','YY/MM/DD') FROM DUAL;

-- 내장함수 (General Functions)
--    DECODE
SELECT deptno,
      DECODE(deptno, 10 , 'ACCOUNTING' ,
                     20 , 'RESEARCH' ,
                     30 , 'SALES' ,
                     40 , 'OPERATIONS')
     FROM emp;

-- 내장함수 (CASE)
--    DECODE와 같은 기능
SELECT deptno,
        CASE deptno
          WHEN 10 THEN 'ACCOUNTING'
            WHEN 20 THEN 'RESEARCH'
            WHEN 30 THEN 'SALES'
            ELSE 'OPERATIONS'
          END as "Dept Name"
     FROM emp;

-- GROUP BY
-- 부서별로 그룹한 결과와 사원수 조회
SELECT b.deptno, COUNT(a.empno)
  FROM emp a, dept b
  WHERE a.deptno = b.deptno
  GROUP BY b.deptno;

-- 부서별로 그룹하여  부서번호, 인원수, 급여의 평균,
-- 급여의 합을 조회하는 예제
SELECT deptno, COUNT(*), ROUND(AVG(sal)) "급여평균",
            ROUND(SUM(sal)) "급여합계"
     FROM emp
     GROUP BY deptno;
 
-- 업무별로 그룹하여  업무, 인원수, 평균 급여액,
-- 최고 급여액, 최저 급여액 및 합계를 조회하는 예제
SELECT job, count(empno),AVG(sal)"평균",
       MAX(sal), MIN(sal), SUM(sal)
  FROM emp
  GROUP BY job;

--HAVING
--사원수가 5명이 넘는 부서의 부서명과 사원수 조회
SELECT d.dname, count(e.empno)
  from emp e, dept d
  where e.deptno = d.deptno
  group by d.dname
  having count(e.empno) >= 5;
 
--서브쿼리
SELECT ename,job
  FROM emp
  WHERE job = (SELECT job
              FROM emp
              WHERE empno = 7369);

'개발개발 > 오라클' 카테고리의 다른 글

SQL의 종류  (0) 2012.05.07
SELECT문 세부정리  (0) 2012.04.09
오라클 명령어 간단 정리  (0) 2012.04.09
Posted by 공돌공돌
,