Oracle

SQL Plus

damian 2011. 12. 21. 16:54

1. SQL*PLUS의 편집 : 편집기의 작업을 이용,,, 오라클 작업을 더욱 능률적으로 할 수 있다.

A.
LIST (L) : SQL버퍼의 내용을 보여준다.

    • L : 모든내용
    • L3 : 세번째 줄.
    • L2 4 :두번째 줄에서 4번째
    • 3 : 세번째 줄만

B. APPEND (A) : 현재 작업라인의 끝에 문자열 추가

    • 2 ; 두번째라인으로 POINT를 옮긴 후
    • A FROM ; FROM을 두번째 라인 뒤에 추가시킨다.

C. CHANGE(C) : 고치고자 하는 OLD문자를 새로운 문자로 바꾼다.
형식 : C/OLD문자 /NEW문자

    • C/*/ENAME

D. DEL : 현재 작업라인을 삭제한다.

E. INPUT(I) : 현재 작업위치아래에 새로운 라인을 삽입

    • I 문자열: 한 라인 추가
    • I : 여러 라인 추가. 종료시는 CTRL+C.

** CLEAR SCREEN : CTRL+DEL
** SPOOL :
화면에서 사용한 기록들을 하나의 화일로 저장한다.


2.
메모장을 이용한 SQL*PLUS의 편집:

: 여러개의 명령을 메모장에서 호출해서 한꺼번에 수행하며, 명령이 길어 오타가 나기 쉬울때 메모장에서 쉽게 고칠수 있으므로 유용하게 쓰일 수 있다.

1> edit a
-- a.sql 이라는 화일을 메모장에 저장

2> 메모장에 명령어 입력후 저장

3> @ a 또는 START a : a.sql 을 메모장에서 수행.

 

 

보고서 환경설정/머리말,꼬리말 설정

1. REPORT 만들 수 있는 두가지 방법

  • Delvelp/2000 Report을 이용시 전문적인 보고서를 만들 수 있다.

(다른 Tool를 사용시)

  • SQL*PLUS REPORT을 이용(간단한 방법)

2. 보고서 환경 설정

  • 1. 문서폭, 라인 등을 설정
  • 2. 형식> SET 명령 숫자값 (on/off )

Option /
Set Auto Commit on/Off
(
자동으로 Transaction작업을 실행)(Commit,Rollback작업이 안됨)
Set Pause on/Off //
검색 작업시 자료량이 많아 Page별로 출력
Set Pagesize 10 // Page Row
을 설정 /set Pagesize 5
Set Pause ‘
아무거나 누르세요
Set New Page n :
윗쪽 여백Line수를 설정
Set Heading on/Off :
필드명의 보임,안보임
Set Null ‘TEXT’ : Null
값을 text문자로 표현
Set Null ‘
없다’ : Null값을 없다로 표현
Set Null ‘’ : Null
값을 공백으로 표현
Set Space n :
컬럼과컬럼사이의 공백
Set LineSize n :
출력할 페이지의 폭을 설정
Set UnderLine '*’:
필드명과 레코드 사이의 것을 어느것을 사용할 지 결정

프로그램을 설정하면 Option으로 설정된 값은 모두 Default로 된다.

3 .머리말,꼬리말(TITLE)에 대한 설정

  • 형식)
    TTITLE
    BTITLE

[col n] 머리말 꼬릿말 내용
[skip n]
[left]
[right]
[center]

  • TTITLE on/Off : 머리말,꼬리말 을 표시할거냐
  • BTITLE on/OFF : 머리말,꼬리말 을 표시할거냐 한번 설정하면 반복 사용할 수 있다.
  • Ttitle : 현재 설정된 상태를 보여준다.
  • Btitle : 현재 설정된 상태를 보여준다.

 

SQL>ttitle center '사원보고서'
SQL>
btitle left '
작성자:대호'

SQL> btitle off
SQL> btitle on

SQL> ttitle col 10 '
보고서'
SQL>
ttitle col 10 '
보고서' skip 2 center '대호주식회사'
--
보고서를 10칸 띈후 출력하고,
두줄을 띈 후에 대호주식회사를 가운데 출력

SQL> set pagesize 6
SQL>
ttitle left 'page:' col8 SQL.pno
--Ttitle
에 페이지번호를 왼쪽에서 8칸 띈후 자동으로 출력 시친다.

 

18.Column명령을 이용한 보고서 만들기

1. Col에 대한 설정

  • Heading을 영구히 설정된 값으로 설정 ( 필드명을 착각하지말 것)

2. 형식

Column

대상

[Heading 문자열’]

컬럼의 Heading명을 설정

컬럼명

[format 형식 ]

컬럼의 자료의 표현 형식 설정

Heading

[justifycenter,right,left]

컬럼의 Heading명을 정렬

[new _value 변수]

해당페이지에서 첫번째로 나오는 컬럼의 자료값을 의미

[old_value 변수]

해당페이지에서 마지막으로 나오는 컬럼의 자료값을의미

[noprint]

해당컬럼을 출력하지않겠다.

[newline]

해당컬럼에서 줄바꾸기를 하겠다.

[clear]

해당컬럼에 대한 설정을 해제

  • clear columns : 모든컬럼에 대한 설정을 해제하게된다.

3. FORMAT 형식;

9 :숫자한자리
0 :
숫자한자리(빈자리는 0으로 채운다)
, : ,
출력
. : .
출력
$ ; $
를 붙인다.
EEEE :
지수로 표시

An - 문자의 폭을 n Byte로 설정

 

SQL> column saname new_value v_a
SQL> column saname old_value v_b
SQL> ttitle center v_a
SQL> btitle center v_b
SQL> select * from sawon;

SQL> column sapay format '99,999,999.99'
SQL> column deptno newline
SQL> select * from sawon;

SQL>column saname format A10
--saname의 크기를 10자로 지정
SQL> column saname format ‘$99,999,999.99’
SQL> column sapay format ‘099,999,999.99’
SQL> column sapay heading '
급여' format '099,999,999.99'
SQL> column deptno like sapay heading '
부서코드'
//sapay column형식을 쓰겠다.
SQL> select * from sawon;

 

 

19.BREAK를 이용한 보고서

*** BREAK 명령어(그룹 설정)

  • 보고서 작성시 출력데이타를 Group별로 묶어서 출력한다.
  • 계산된 결과는 나오지 않고 리스트로 나온 것을 그룹별로 묶어서 출력

BREAK on

col1
1
차그룹

On

col2
2
차 그룹

여러 개의 그룹설정

 

BREAK on row

1라인을 하나의 group으로 설정
한사람데이타를 한장에 출력하겠다.

BREAK on page

1page을 하나의 그룹으로 설정
한페이지에대한 계산결과값을 출력할 때

BREAK on report

전체보고서를 그룹으로 설정

 

BREAK on break 종류 [skip n] on break 종류

 

break의 기본예제

SQL> break on daptno;
--dept
그룹으로 묶어서 출력
SQL> select deptno,saname,sajob from sawon order by deptno;
--
그룹화된 보고서가 부서별로 출력되어 있다.
--
주의할 점은 반드시 order by 를 이용 소트를 시켜야 한다,..
소트시키지 않을 경우 에러가 발생

 

두개의 그룹 설정

SQL> break on deptno page on sasex skip 1;
-- 1.deptno, 2.sasex 두 개의 그룹화시켜 출력
SQL> select deptno,saname,sajob, sasex from sawon order by deptno, sasex;

SQL> clear break;

 

20.COMPUTE를 이용한 보고서

** 그룹별 소계(Compute)

  • 형식: compute group 함수 [Label'문자열'] of 컬럼명,컬럼명 on break한 컬럼
  • 항상 break 문이 먼저 그룹을 설정 후, compute 문으로 그룹의 소계을 계산 할 수 있다.

 

부서별 성별 합계 계산

SQL> break on deptno page on sasex skip1;
SQL> compute
sum of sapay on sasex deptno;
--
부서별 그룹합계 계산
SQL> compute
count of saname on deptno, sasex;
--
부서별, 성별, saname의 수 합계 계산
SQL> select deptno, sasex, saname, sapay from sawon order by deptno, sasex;

 

LABEL 붙이기

SQL> compute sum LABEL '급여합' of sapay on deptno sasex;
SQL> select deptno, sasex, saname, sapay from sawon order by deptno, sasex;

 

Report 이용 모든 데이타 계산

--전사원에대한 합계는 어떻게???
SQL> break on
deptno on sasex ON report;
--report
는 모든 데이타를 대상으로 할 때 지정한다.
SQL> compute sum of sapay on deptno report;
SQL> compute count of saname on REPORT;
SQL> select deptno, sasex, saname, sapay from sawon order by deptno, sasex;
--
전체에 대한 sapay의 합계 ,인원수가 출력 된다

 

'Oracle' 카테고리의 다른 글

oracle 프로시져 검색  (0) 2012.01.11
오라클 테이블 락 ( Table lock ) 확인  (0) 2012.01.10
PL/SQL  (0) 2011.12.21
Oracle Pipelined Table Function 의 용도  (0) 2011.12.21
SPLIT 함수  (0) 2011.12.21