출처 : http://naver.kaist.ac.kr/oracle_sql/s03.htm
♣ 테이블 구조 조회(DESC 명령)
◈SQL*Plus의 DESCRIBE명령은 테이블의 구조를 표시한다.
SQL>DESCRIBE 테이블명
◈NOT NULL인 column은 반드시 값을 가져야 한다.
◈Column, Datatype 및 길이(length)
◈명령의 결과는 column명, datatype 및 column이 NULL값을 허용하는지를 알 수 있다.
♠실습 : S_DEPT 테이블의 구조에 관한 정보를 출력 하시오.
SQL> DESCRIBE s_dept; |
1. SQL *Plus편집 명령어
◈SQL문장을 수행하고 나면 SQL buffer에 마지막으로 수행된 SQL문장이 저장된다.
◈SQL buffer에 저장되어 있는 SQL문장은 SQL*PLUS의 EDIT command를 이용하여 EDIT를 한다.
◈SQL buffer에는 맨마지막으로 수행된 단 1개의 SQL문장만이 남아있다.
Command | 설 명 |
A[PPEND] text | 현재 Line의 마지막에 text를 추가한다 |
C[HANGE]/old_text/new_text | old_text를 new_text로 변경한다. |
C[HANGE]/text/ | 현재 행으로부터 Text를 삭제한다. |
CL[EAR] BUFF[ER] | SQL버퍼로부터 모든 라인을 삭제한다. |
DEL | SQL buffer에 남아있는 SQL문장을 삭제한다. |
I[NPUT] | SQL buffer의 마지막에 새로운 Line을 추가 |
L[IST] | SQL buffer에 남아있는 모든 SQL문장을 보여준다. |
L[IST] m n | m에서 n라인까지의 내용을 보여 준다. |
R[UN] | SQL buffer의 내용을 display하고 수행한다. |
n | n라인으로 현재 위치를 변경시켜 준다. |
n text | n 으로 지정된 Line을 text로 변경한다. |
0 text | 1 라인 전에 하나의 라인을 삽입한다. |
◈명령어 작성중간에 [RETURN]키를 누르면 SQL*Plus는 라인번호와 함께 프람프트를 내어 준다.
◈터미네이터 문자(세미콜론 또는 슬레쉬)중 하나를 입력하거나 (RETURN)키를 두 번 누름으로
SQL 명령어 입력을 끝낼 수 있다. 이때 SQL 프람프트를 볼 수 있다.
2. SQL *Plus 파일 명령어
◈SQL*Plus는 환경제어, Query결과 Format설정 및 파일관리를 위해 아래 명령어들을 제공한다.
Command | 설 명 |
SAVE filename | SQL buffer의 내용을 filename으로 FILE에 저장한다. |
GET filename | filename.sql로 저장된 내용을 출력 하시오 |
START(/) filename | filename.sql로 저장된 file을 수행한다 |
@filename | filename.sql로 저장된 file을 수행한다(START와 동일) |
RUN | SQL buffer의 내용을 display하고 수행한다. |
ED(IT) filename | 저장된 파일의 내용을 편집하기 위해 편집기를 실행한다. |
EXIT | SQL *Plus를 중단한다. |
SPOOL filenamel[off] | 향후 수행될 sql 문의 결과를 저장한다 |
HOST | SQL *Plus를 종료하지 않고도 HOST 운영체제의 명령어를 실행한다. |
◈Note : SQL *Plus 변수 _EDITOR의 값을 DEFINE명령을 사용하여 변경함으로써
Text 편집기를 변경할 수 있다.
◈파일명을 쓰지 않고 EDIT명령어를 사용할 때, 기본적인 파일명은 afiedt.buf이다.
이 파일은 버퍼를 편집할 때마다 이 파일에 겹쳐쓰게 된다.
현재의 디렉토리에 없는 파일명을 명시하면 SQL*Plus는 파일 이름을 묻는다.
♠실습 : 따라하기
SQL> SELECT first_name, last_name, title |
3. SET 환경 명령어
♣ SQL *Plus SET 명령어 Syntax
SET 시스템변수값
◈SET명령어는 현재의 세션 환경을 제어한다.
◈로그인시 login.sql에는 실행되는 표준 SET 명령과 그 외의 SQL*Plus명령이 들어 있다.
◈login.sql을 수정하여 부가적인 SET 명령을 쓸 수 있다.
◈여기서 시스템변수는 세션 환경을 제어하는 변수이고, 값은 시스템변수의 값임
♠실습 : Login.sql 확인(C:\orawin95\doc\Login.sql)
SQL> GET Login.sql set numwidth 9 |
♣ login.sql 파일을 이용한 기본값 설정
◈login.sql 파일에는 접속 때마다 필요한 표준 SET 명령과 그 외의 SQL*Plus 명령어들이 들어 있다. 접속할 때에 이 파일을 읽어서 명령어가 수행된다. 로그 아웃을 하면 사용자 정의 설정이 상실된다.
♣ 기본값 설정 변경
◈login.sql로 수행된 설정은 현재의 세션에서 변경될 수 있다. 해당 세션에 대해서만 변경된다. 로그 아웃을 하자마자 설정값이 상실된다. 설정값을 영구적으로 변경하려면 login.sql 파일에 추가한다.
♣ 유용한 SET 명령어
SET 변수와 값 | 설 명 |
ARRAYSIZE {20|n} | 데이터베이스의 데이터 인출 크기 설정 |
COLSEP {|text} | Column사이에 출력될 문자를 설정 |
ECHO OFF|ON | 파일이 수행될 때 SQL *Plus명령어의 표시 여부를 결정 |
FEEDBACK {6|n|OFF|ON} | Feedback 설정 |
HAEDING {OFF|ON} | Column의 Hading 출력여부를 결정 |
LINESIZE {80|n} | 보고서의 라인당 문자의 수를 설정 |
LONG {80|n} | LONG값을 표시하는 최대 폭을 결정 |
PAGESIZE {24|n} | 출력 페이지당 라인의 수를 명시 |
PAUSE {OFF|ON|text} | 단말기의 화면 이동을 제어함 |
◈ 예를 들어, SHOW PAUSE와 같이 현재의 설정 값을 보려면 SHOW 명령문을 사용한다.
◈ 모든 SET 변수값을 보려면, SHOW ALL 명령어를 사용한다.
◈ n값은 숫자값을 나타낸다.
◈ 밑줄 그은 값은 기본값을 나타낸다. 만일 변수에 값이 없으면, SQL*Plus는 기본값을 사용한다.
4. SQL *Plus 포멧 명령어
◈보고서의 특성을 제어할 수 있다.
명 령 어 | 옵 션 설 명 |
COLUMN [Column][옵션] | CLEAR Column의 형식을 WLDNA |
FORMAT형식 Column의 데이터 표시형식 설정 | |
HEADING text Column의 Heading 설정 | |
JUSTIFY {정렬} Column의 Headin을 왼쪽, 중앙, 오른쪽으로 정렬 | |
예> COL last_name HEADING 'Employee|Name ' FORMAT A15 | |
TTITLE [text|OFF|ON] | 보고서의 각 페이지 상단에 나타나는 머리글을 명시 |
BTITLE [text|OFF|ON] | 보고서의 각 페이지 하단에 나타나는 머리글을 명시 |
BREAK [ON] | 라인 넘김을 써서 중복값을 배제 |
COLUMN Break가 일어날 column명을 명시한다. | |
REPORT 총계를 내도록 보고서 레벨의 그룸을 생성 한다. | |
SKIP n|PAGE Break값의 변경시 n개의 행을 건너뛰거나 새로운 페이지로 이동한다. | |
DUPLICATES 중복값을 출력한다. | |
NODUPLICATES 중복값을 출력하지 않는다. | |
예> BREAK ON title SKIP 1 ON RREPORT | |
COMPUTE 함수 [LABEL]… | 합계을 계산함. |
예> BREAK ON title SKIP 1 ON REPORT |
♣ 스크립트 파일
◈명령어의 값을 포맷하고 재설정하는 데에 사용되는 SQL SELECT 문장과 Plus 명령어로 구성된
스크립터 파일(또는 명령어 파일)을 만들 수 있다.
◈스크립터 파일은 문장에 대한 특정한 SQL 문장과 Plus 설정 값을 저장하는 데 유용하다.
◈추가적으로, 기본적인 Plus 명령어를 갖는 파일을 생성할 수 있는데 언제든지 실행하여 설정 값을
재설정할 수 있다. 이 파일은 명령어 파일 안에서 실행 될 수 있다.
◈모든 형식 명령어는 Plus 세션이 끝나거나 형식 설정이 변경될 때까지 유효하다.
◈보고서를 작성한 후에는 Plus의 설정을 기본값으로 재설정하라.
◈SQL*Plus 변수 값을 기본값으로 설정하기 위한 명령은 없다.
◈특정 값을 알지 못하면 로그아웃을 하고 나서 다시 로그인해야 한다.
◈ Column에 대한 alias를 주는 경우, Column 이름이 아닌 alias를 참조해야 한다.
♣ COLUMN 명령
◈COLUMN 명령을 사용하여 보고서의 Column의 표시 형식을 제어한다. 예를 들어, Heading,폭,
형식을 변경할 수 있다.
COL[UMN] [{Column|alias} [옵션]]
◈COLUMN명령어 옵션
옵션 | 설명 |
CLE[AR] | Column의 형식을 지움. |
FOR[MAT] 형식 | Column 데이터의 표시 형식을 설정. |
HEA[DING] 텍스트 | Column의 Heading 설정. |
JUS[TIFY] {정렬} | Column의 Heading을 왼쪽,중앙,또는 오른쪽에 정렬함. |
※ 명령이 길다면, 현재의 행 끝에 하이픈(-)을 써서 다름 행에 계속 쓸 수 있다.
◈ Column 형식 모델 요소의 예
요소 | 설명 | 예 | 결과 |
An | 문자와 날짜 Column에 대해 n만큼의 폭으로 출력 설정 | N/A | N/A |
9 | 자리표현수 | 999999 | 1234 |
0 | 앞에 0을 붙임 | 909999 | 01234 |
$ | 달러 부호의 표시 | $9999 | $1234 |
L | 국내 통화 표시 | L9999 | L1234 |
. | 소숫점의 위치를 표현 | 9999.99 | 1234.00 |
, | 천 단위 구분자 표시 | 9,999 | 1,234 |
※ Oracle7 Server는 결과 값이 형식 모델에서 제공하는 정수의 자리수를 초과하면
파운드 부호(#) 문자열을 출력한다.
♣ TTITLE과 BTITLE 명령
◈페이지 머리글을 형식화하는 데에는 TITLE 명령을 사용하고, BTITLE 명령은 바닥글을 형식화하는
데에 사용한다. 바닥글은 PAGESIZE값에 따라 페이지의 끝에 출력된다.
TTI[TLE] [[텍스트|변수] [OFF|ON] 또는 BTTI[TLE] [[텍스트|변수] [OFF|ON]
◈날짜는 왼쪽, 텍스트는 중앙, 페이지번호는 오른쪽끝에 기본 설정값을 출력한다.
◈여러 행에 결쳐 제목에 대한 텍스트를 쓰려면 ( | )를 사용한다.
◈설정값의 출력과 해제
명령어 | 설명 |
TTITLE | 머리글에 대한 현재의 설정값을 출력. |
TTITLE OFF | 머리글을 출력하지 않음. |
HEA[DING] BTITLE | 바닥글에 대한 현재의 설정값을 출력. |
BTITLE OFF | 바닥글을 출력하지 않음. |
♣ BREAK 명령
◈BREAK 명령을 사용하여 보고서를 보기좋게 할 수 있다.
◈BREAK 명령어는 column에 대해 중복값을 감추고,변경할때마다 한 행씩 건너뛴다.
◈COMPUTE 명령에 사용될 시 그룹을 생성한다.
BRE[AK] [ON element [action]]
◈BREAK명령어 옵션
단위요소 또는 작업 | 설명 |
COLUMN | Break가 일어날 Column명을 명시한다. |
REPORT | 총계를 내도록 보고서 레벨의 그룹을 생성한다. |
SKI[P] n|PAGE | Break값의 변경시 n개의 행을 건너뛰거나 새로운 페이지로 이동한다. |
DUP[LICATES] | 중복값을 출력한다. |
NODUP[LICATES] | 중복값을 출력하지 않는다. |
♣ COMPUTE 명령
◈COMPUTE 명령을 써서 합계와 같은 함수를 수행할 수 있다.
◈함수 : AVG, COUNT, MAXIMUM, MINIMUM, STD
◈COMPUTE 명령에 사용될 시 그룹을 생성한다.
COM[PUTE] 함수 [LAB[EL] 텍스트]…
OF column…. ON break cloumn
♠실습 : 직급별로 상원의 급여 합계를 계산한다.
SQL> compute sum of SALARY on title |
♠실습 : 부서번호별로 직원수 및 평균급여를 계산한다.
SQL> comp count avg of SALARY on dept_id report |
♣ 보고서 수행하기 위한 스크립트 파일 생성 단계
1. SQL 프롬프트에서 SQL SELECT문을 생성한다.
2. SELECT 문장을 스크립트 파일에 저장한다.
3. SQL *Plus 명령을 추가하기 위해 스크립트 파일을 저장한다.
4. SELECT문장 전에 필요한 Format을 설정한다.
5. SELECT문장 뒤에 ";"이나 "/" 같은 실행문자를 입력한다.
6. SELECT문장 이후에 포멧팅 명령을 해제하는 SQL *Plus명령을 추가한다.
7. 변경된 스크립트 파일을 저장한다.
8. 스크립트를 실행하기 위해 START파일명이나 @파일명을 입력하여 스크립트 파일을 실행한다.
♣ 보고서 생성
◈머리글과 바닥글 생성
◈그룹 사이에 페이지 구분과 라인 넘김 추가
◈데이터 출력형식 변경
◈중복 데이터 제거
◈소계와 총계의 표시
◈Column의 Heading변경
♠실습 : 부사장이나 창고 관리자가 아닌 모든 사원의 직급,성 및 월급을 출력하는 보고서를 만드는
스크립트 파일을 작성한다.
동일한 직급은 1번만 출력하고 직급별 그룹마다 한 행을 띄울 수 있도록 명령 파일을 편집하고,
각 직급별 급여 소계및 모든 사원 급여의 총계를 계산.
REM ** This report covers all employees who are not |