오라클(ORACLE) Query 정리 (DML)

Posted 2008/03/30 03:26

1. 사용 가능한 모든 테이블 보기.

SQL> select * from tab;
TNAME TABTYPE CLUSTERID
COURSE TABLE -
PROFESSOR TABLE -
ENROLL TABLE -
TEACH TABLE -
TEST TABLE -
BIN$UYKt7HVzS5ysFJBENaAf2w==$0 TABLE -
BIN$zUzFZ5NoR3ifBgnxvkeffw==$0 TABLE -
BIN$iIZ4VDi8R6ysk3KnSDNmbg==$0 TABLE -
BOOK2 TABLE -
BIN$4r3hx/OGS1CIMeGS1Xvp4Q==$0 TABLE -
More than 10 rows available. Increase rows selector to view more rows.


SQL> select * from tabs;
TABLE_NAME TABLESPACE_NAME CLUSTER_NAME IOT_NAME STATUS PCT_FREE PCT_USED INI_TRANS MAX_TRANS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE FREELISTS FREELIST_GROUPS LOGGING BACKED_UP NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_SPACE CHAIN_CNT AVG_ROW_LEN AVG_SPACE_FREELIST_BLOCKS NUM_FREELIST_BLOCKS DEGREE INSTANCES CACHE TABLE_LOCK SAMPLE_SIZE LAST_ANALYZED PARTITIONED IOT_TYPE TEMPORARY SECONDARY NESTED BUFFER_POOL ROW_MOVEMENT GLOBAL_STATS USER_STATS DURATION SKIP_CORRUPT MONITORING CLUSTER_OWNER DEPENDENCIES COMPRESSION DROPPED
REVIEW USERS - - VALID 10 - 1 255 65536 - 1 2147483645 - - - YES N - - - - - - - - 1 1 N ENABLED - - NO - N N NO DEFAULT DISABLED NO NO - DISABLED YES - DISABLED DISABLED NO
LESSON USERS - - VALID 10 - 1 255 65536 - 1 2147483645 - - - YES N 1 5 0 0 0 19 0 0 1 1 N ENABLED 1 08/03/14 NO - N N NO DEFAULT DISABLED YES NO - DISABLED YES - DISABLED DISABLED NO
TEACHER USERS - - VALID 10 - 1 255 65536 - 1 2147483645 - - - YES N 1 5 0 0 0 17 0 0 1 1 N ENABLED 1 08/03/14 NO - N N NO DEFAULT DISABLED YES NO - DISABLED YES - DISABLED DISABLED NO
DUMMY USERS - - VALID 10 - 1 255 65536 - 1 2147483645 - - - YES N 1 5 0 0 0 2 0 0 1 1 N ENABLED 1 08/03/14 NO - N N NO DEFAULT DISABLED YES NO - DISABLED YES - DISABLED DISABLED NO
SALGRADE USERS - - VALID 10 - 1 255 65536 - 1 2147483645 - - - YES N 5 5 0 0 0 10 0 0 1 1 N ENABLED 5 08/03/14 NO - N N NO DEFAULT DISABLED YES NO - DISABLED YES - DISABLED DISABLED NO
BONUS USERS - - VALID 10 - 1 255 65536 - 1 2147483645 - - - YES N 0 0 0 0 0 0 0 0 1 1 N ENABLED 0 08/03/14 NO - N N NO DEFAULT DISABLED YES NO - DISABLED YES - DISABLED DISABLED NO
EMP USERS - - VALID 10 - 1 255 65536 - 1 2147483645 - - - YES N 14 5 0 0 0 37 0 0 1 1 N ENABLED 14 08/03/14 NO - N N NO DEFAULT DISABLED YES NO - DISABLED YES - DISABLED DISABLED NO
DEPT USERS - - VALID 10 - 1 255 65536 - 1 2147483645 - - - YES N 4 5 0 0 0 20 0 0 1 1 N ENABLED 4 08/03/14 NO - N N NO DEFAULT DISABLED YES NO - DISABLED YES - DISABLED DISABLED NO
STUDENT USERS - - VALID 10 - 1 255 65536 - 1 2147483645 - - - YES N 10 5 0 0 0 52 0 0 1 1 N ENABLED 10 08/03/28 NO - N N NO DEFAULT DISABLED YES NO - DISABLED YES - DISABLED DISABLED NO
BOOK1 USERS - - VALID 10 - 1 255 65536 - 1 2147483645 - - - YES N 0 0 0 0 0 0 0 0 1 1 N ENABLED 0 08/03/28 NO - N N NO DEFAULT DISABLED YES NO - DISABLED YES - DISABLED DISABLED NO
More than 10 rows available. Increase rows selector to view more rows.


SQL> select table_name from tabs;
// 모든 사용자 table 보기
COURSE
PROFESSOR
ENROLL
TEACH
TEST
BOOK2
BOOK1
STUDENT
DEPT
EMP
More than 10 rows available. Increase rows selector to view more rows.


2. TABLE 구조도 보기
SQL> desc emp;
Table Column Data Type Length Precision Scale Primary Key Nullable Default Comment
EMP EMPNO Number - 4 0 - - - -
  ENAME Varchar2 10 - - - nullable - -
  JOB Varchar2 9 - - - nullable - -
  MGR Number - 4 0 - nullable - -
  HIREDATE Date 7 - - - nullable - -
  SAL Number - 7 2 - nullable - -
  COMM Number - 7 2 - nullable - -
  DEPTNO Number - 2 0 - nullable - -
1 - 8


3. 쉘 명령어 실행 (sqlplus 내에서 윈도우의 프로그램 구동 기능)
SQL> host notepad;


4.  SQL문 편집 명령어

SQL> select empno, ename, job
from emp
where empno=7900;

     EMPNO ENAME                JOB                                            
---------- -------------------- ------------------                             
      7900 JAMES                CLERK           


// SQL버퍼의 모든 행 나열
SQL> list

  1  select empno, ename, job
  2  from emp
  3* where empno=7900


// 1행 선택
SQL> list 1

  1* select empno, ename, job


// 선택한 행 끝에 ', sal'추가
SQL> a, sal

  1* select empno, ename, job, sal


// 편집된 SQL문 실행
SQL> run

  1  select empno, ename, job, sal
  2  from emp
  3* where empno=7900

     EMPNO ENAME                JOB                       SAL                  
---------- -------------------- ------------------ ----------                  
      7900 JAMES                CLERK                     950  

// 3행 선택
SQL> list 3

  3* where empno=7900

// '7900'을 '7902'로 변경
SQL> change /7900/7902
  3* where empno=7902



5. 최근 SQL문 재실행

SQL> run     또는
SQL> /



6. 버퍼에 있는 SQL문을 파일로 저장

SQL> save d:\study\oracle\select_emp.sql


7. 파일로 저장된 SQL문 불러와 버퍼에 저장

SQL> get d:\study\oracle\select_emp.sql


8. 파일에 저장된 SQL문 실행

SQL> @ d:\study\oracle\select_emp.sql     또는
SQL> start d:\study\oracle\select_emp.sql


9. 화면에 출력된 내용을 파일로 저장

SQL> spool d:\study\oracle\test.txt
SQL > select ename from emp where deptno = 10; // 쿼리 입력
SQL > spool off;

10. Cartesian Product
SQL >SELECT empno, ename, job, dname
SQL >FROM emp, dept;

11. Equi Join
// 사원정보를 출력하는데 부서정보도 같이 출력
SQL> SELECT empno, ename, job, dname
FROM emp, dept
WHERE emp.deptno = dept.deptno;

12. EQUI Join + 조건

// 급여가 2000 이상인 사원에 대해 사원정보와 부서정보를 같이 출력
SQL> SELECT empno, ename, job, dname, loc
FROM emp, dept
WHERE emp.deptno=dept.deptno and sal>=2000;
13. Equi Join + 테이블 별칭 이용
SQL> SELECT empno, ename, job, dname, loc
FROM emp e, dept d
WHERE e.deptno = d.deptno and sal >= 2000;

14. BETWEEN a AND b
// 급여가 3000과 4000사이의 사원 이름과 부서명 출력
SQL> SELECT e.ename, d.dname
FROM emp e, dept d
WHERE e.sal BETWEEN 3000 AND 4000;

15. Self Join
// table이 1개이지만 자기가 자기 자신을 Join한다.
// 자신의 Manager의 정보가 존재하면 자신의 EMPNO와 ENAME, Manager의 EMPNO와 ENAME을 출력
SQL> SELECT e1.empno, e1.ename, e2.empno, e2.ename
FROM emp e1, emp e2
WHERE e1.mgr = e2.empno;

16. Outer Join

// 부서당 직원의 인원을 출력
// Outer Join을 안쓰면 직원이 없는 부서는 출력되지 않음
SQL> SELECT count(a.deptno), b.deptno
FROM emp a, dept b
WHERE a.deptno(+) = b.deptno GROUP BY b.deptno;
17. Single Row 서브질의

// Single Row 서브질의
// 'SMITH'와 같은 직업을 같는 사원의 정보 출력
SQL> SELECT ename, empno, job
FROM emp
WHERE job =
(SELECT job FROM emp WHERE ename='SMITH');


18. Multiple Rows 서브질의 (IN)

// 부서별로 가장 많은 급여를 받는 사원의 정보
SQL> SELECT empno, ename, sal, deptno
FROM emp
WHERE sal IN
(SELECT MAX(sal) FROM emp GROUP BY deptno);


19. Multiple Rows 서브질의 (ANY)

// 30번 부서의 최소 급여를 받는 사원보다 많은 급여를 받는 사원의 정보
SQL> SELECT empno, ename, sal, job
FROM emp
WHERE deptno != 30 AND
SAL > any(SELECT sal FROM emp WHERE deptno=30);


20. Multiple Rows 서브질의 (ALL)

// 30번 부서의 최고 급여를 받는 사원보다 많은 급여를 받는 사원의 정보
SQL> SELECT empno, ename, sal, job
FROM emp
WHERE deptno != 30 AND
sal > ALL(SELECT sal FROM emp WHERE deptno=30);


21. Multiple Rows 서브질의 (EXISTS)

// 적어도 한명의 사원으로부터 보고를 받을 수 있는 사원의 정보
// 자신의 empno가 mgr에 존재하면 출력
SQL> SELECT empno, ename, sal
FROM emp e
WHERE EXISTS
(SELECT empno FROM emp WHERE e.empno=mgr);

'C.S.E > Database' 카테고리의 다른 글

오라클(ORACLE) 데이터 처리 함수  (0) 2008/03/30
데이터 무결성 제약조건과 Constraint  (0) 2008/03/30
오라클(ORACLE) Query 정리 (DML)  (0) 2008/03/30
ESQL Programming  (0) 2007/12/20
Indexing의 효과  (0) 2007/12/20
MySql 기본명령어.  (0) 2007/01/20
« PREV : 1 : ... 108 : 109 : 110 : 111 : 112 : 113 : 114 : 115 : 116 : ... 276 : NEXT »