Oracle/SQL

SQL Plus 명령어

에몽이ㅋ 2012. 1. 9. 22:42

퍼온곳  : www.jigi.net



1.  주로  사용되는  명령어

LIST,  SAVE,  GET,  EDIT,  SPOOL                                  편집  명령과  파일  조작 
RUN,  @,  /                                                                        실행 
HOST,  EXIT                                                                      데이터베이스  접속  및  종료 
LINE,  PAGE                                                                      출력  형식


1)  LIST

SELECT  ename,  sal*12  FROM  emp;

LIST 
방금  실행한  쿼리문을  다시한번  보여줍니다.

L  이라고  단축으로  실행하셔도  됩니다.


2)  RUN 
LIST로  버퍼에  저장된  쿼리문을  실행하기  위한  명령어  입니다. 
RUN  은  R  이나  /  (슬레시)로  단축키를  사용할수  있습니다.


3)  EDIT 
버퍼에  저장된  쿼리문을  편집하기  위한  명령어 
EDIT  는  ED  라는  단축키를  사용할수  있습니다.

편집창이  호출되고  명령문을  편집완료  하였다면  창을  닫으면  저장할지  여부를  묻습니다. 
저장하게  되면  SQL  Plus  화면에  편집된  쿼리문을  보여  줍니다. 
실행  하시려면  R  이나  /  를  입력하시면  됩니다.


4)  HOST 
도스  프롬프트로  나가서  다른  작업을  수행할수  있습니다. 
완전히  종료되는  것은  아니고  일시적으로  수행  창을  도스  프롬프트로  바꾸어  줍니다. 
다시  SQL  Plus  로  돌아가려면  도스  프롬프트  창을  닫으시면  됩니다.


5)  EXIT 
SQL  Plus  를  완전히  종료  합니다.


6)  SAVE 
마지막에  실행한  명령어를  저장하는  명령어  입니다. 
SAVE  a001

a001.sql  이  생성됩니다.

저장된  파일을  실행하려면 
@a001 
처럼  @기호와  파일  이름을  써주고  엔터키를  누르면  됩니다. 


저장된  파일에  새로운  결과를  저장하려면

select  *  from  dept; 
라는  명령문을  실행했다고  본다면

SAVE  a001  REPLACE 
를  실행합니다.

결과를  다시  확인하려면  불러들이면  되죠... 
@a001


7)  GET 
파일로  저장된  쿼리문을  불러와서  보여줍니다. 
실행은  R  이나  /  기호를  이용하여야  합니다.

8)  SPOOL 
SPOOL  b001 
b001  로  실행결과를  저장하겠다는  표현이며, 
select  *  from  emp; 
select  *  from  dept; 
의  실행  결과를  최종  저장하기  위해선 
SPOOL  OFF 
가  최종  실행되어야  합니다.

HOST로  잠시  도스프로프트창으로  나가서 
dir  *.lst 
를  실행하시면  결과파일이  생성됨을  보실수  있습니다.

notepad  b001.lst

exit 
다시  돌아옵니다.


9)  시스템  변수  설정하기  위한  SET  명령어

형식: 
SET  시스템_변수명  값

SET  HEADING  OFF

select  *  from  emp; 
컬럼제목이  나오지  않게  합니다


SET  HEADING  ON

select  *  from  emp; 
다시  복원  합니다.


10)  한  화면에  출력되는  라인의  수를  결정하는  LINESIZE  변수

SET  LINESIZE  40 
desc  emp;


11)  한  페이지에  출력되는  페이지의  크기를  결정하는  PAGESIZE  변수 
SET  PAGESIZE  10 
select  *  from  emp;


12)  컬럼제목을  설정하기  위한  COLUMN  HEADING 
COLUMN  empno  HEADING  '사원번호' 
select  *  from  emp;


13)  컬럼에  대한  설정된  값을  확인하거나  해제하기 
확인: 
COLUMN  empno

해제: 
COLUMN  empno  CLEAR


14)  컬럼  제목의  출력  형식을  변경하기  위한  COLUMN  FORMAT

COLUMN  dname  FORMAT  A10 
해당  컬럼의  크기를  10으로  지정합니다.

숫자  데이터  출력형식  변경 
COLUMN  sal  FORMAT  0,000,000

숫자의  경우  다시  복원하려면 
COLUMN  dname  FORMAT  999999 


출처 : http://www.netme.kr/bbs/board.php?bo_ta ••• page%3D2



sqlplus 에서 edit를 리눅스에서 자동으로 vi가 실행되도록 하자.
--> 디렉터리 이동 ( 오라클 홈 디렉터리/sqlplus/admin )
cd /$ORA_HOME/oracle/product/9.2.0/sqlplus/admin
--> 아래와 같은 파일을 찾아보자. 
glogin.sql  
--> 위의 파일 편집
vi glogin.sql
--> 아래와 같은 내용 glogin.sql에 추가 
define _editor=vi

1) edit(ed) - 

2) save(sav) - 현재 버퍼에 저장된 쿼리문을 별도의 파일에 저장 
   ex) SQL > save savetest01.sql 
   ex) SQL > save savetest01.sql replace --> 기존 파일이 있으면 덮어씌우기 
   ex) SQL > save savetest01.sql append --> 기존 파일에 추가하기
    
3) get  - 쿼리문을 파일로부터 불러오기
   ex) SQL > get savetest01.sql 
   
4) start(sta) - get으로 불러온 쿼리문 실행
   ex) SQL > start savetest01.sql 
   ex) SQL > @ savetest01.sql    --> 같다. 
   
5) spool(spo) - 기능을 켜놓은 상태의 모든 화면을 텍스트 형태로 저장한다. 
   ex) SQL > spool spooltest.txt --> spooltest.txt에 저장 시작 
   ex) SQL > spool off --> spool 끄기

    
----------------------------------------------------------------------------------------------
Oracle SQL* Plus
----------------------------------------------------------------------------------------------
SQL > show all  --> 모든것 보기 
SQL > show autocommit
SQL > set autocommit on --> DML 구문실행시 자동 commit, 롤백 불가.
SQL > show feedback --> 결과값이 6행(기본값) 이상일 때, 몇개가 나왔는지 알려줌.
SQL > set feedback 3 --> 3행 이상의 결과값이 나올때... 로 변경 
SQL > set heading off --> 결과물의 컬럼명 나타내기 / 숨기기
SQL > set line(linesize) 100 --> 한 화면에 최대 사용가능한 글자 수.(기본값 80) 
SQL > set pause on 
--> 한 화면에 모두 나오지 않는 결과값의 경우 엔터키에 의해 한 페이지씩 넘긴다.  
  ex) select * from dictionary;    

SQL > set time on --> 16:55:24 SQL > 이렇게 시계가 생긴다. (기본값 : off) 
--> 불의의 사고로 인한 백업/복구 작업시 실수한 작업당시의 시간을 알아야 하므로 중요하다.  


SQL >제 set timing on  --> 쿼리문 작업 처리 시간 보기 
   ex) select * from dept;
   --> 14 개의 행이 선택되었습니다.
   --> 경   과: 00:00:01.00 


SQL > col empno format 9999 --> 리턴된 값의 표를 깔끔히 하기위해 자릿수를 지정한다. 
SQL > col ename format a10    
SQL > col job format a9     --> 문자 9자리 
SQL > col mgr format 9999   --> 숫자 4자리 
SQL > col hiredate format a9
SQL > col sal format $9,999 --> 숫자 3자리마다 컴마(,)가 생기고, 앞에 $가 붙는다. 
SQL > col comm format $99,999.99 --> 정수 총 5자리에서 3자리마다 컴마, 나머지는 소수부 점(.)
SQL > col deptno format 099
SQL > col ename clear       --> 저장된 값 삭제
SQL > set sqlprompt 하하하 SQL >--> SQL > 가 하하하 SQL > 로 변경된다.
--> 세션 종료시까지만 유지되는 단점이 있어서 다음과 같은 방법으로 고정 가능.
--> C:\oracle\ora92\sqlplus\admin\glogin.sql 파일을 워드패드로 불러와서, 아래 행 추가. 
----------------------------------------------------------------------------------------------
-- USER DEFINE
SET SQLPROMPT "하하하 SQL > " 
----------------------------------------------------------------------------------------------

* 치환변수 
----------------------------------------------------------------------------------------------
SQL > select ename,deptno 
  1 > from EMP
  2 > where deptno=&buno;   --> 엔터 실행
  
buno의 값을 입력하시오 : 10  --> 사용자가 10을 입력하여, buno에 10이 입력된다.
구   3: where deptno=&buno       --> 입력받을 값이 숫자일 경우 
신   3: where deptno=10
ENAME          DEPTNO
---------- ----------
CLARK              10
KING               10
MILLER             10
----------------------------------------------------------------------------------------------

SQL >  select ename,job,sal
  2  from emp
  3  where job=upper('&jik');    --> 입력받을 값이 문자열일 경우 
jik의 값을 입력하십시오: salesman
구   3: where job=upper('&jik')
신   3: where job=upper('salesman')   --> jik에 salesman이란 값이 치환되었다. 
ENAME      JOB              SAL
---------- --------- ----------
ALLEN      SALESMAN        1600
WARD       SALESMAN        1250
MARTIN     SALESMAN        1250
TURNER     SALESMAN        1500
   
----------------------------------------------------------------------------------------------
SQL> select * from dept;
    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON            
        
----------------------------------------------------------------------------------------------        
SQL> insert into dept values(&dno,'&dna','&lo');  --> 숫자타입, 문자타입 구분 
dno의 값을 입력하십시오: 50
dna의 값을 입력하십시오: 연구부
lo의 값을 입력하십시오: 서울
구   1: insert into dept values(&dno,'&dna','&lo')
신   1: insert into dept values(50,'연구부','서울') --> 이렇게 치환된다. 
1 개의 행이 만들어졌습니다.
SQL> select * from dept;
    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
        50 연구부         서울 
----------------------------------------------------------------------------------------------        
 * 메모장을 열어 아래와 같이 입력하여, accepttest01.sql로 저장한다.   

accept v_deptno prompt '부서번호를 입력하세요 : '
accept v_job    prompt '직종을 입력하세요 : '
col empno format 9999 
col ename format a10    
col job format a9     
col mgr format 9999   
col hiredate format a9
col sal format $9,999 
col comm format $99,999.99 
col deptno format 099

select empno,ename,deptno,job,sal
from emp
where deptno=&v_deptno and job=upper('&v_job')
/
col empno clear
col ename clear
col job clear
col mgr clear
col hiredate clear
col sal clear
col comm clear
col deptno clear

----------------------------------------------------
--> 실행

SQL> @ C:\oracle\ora92\sqlplus\admin\accepttest01.sql
--> 위의 파일을 폴더에 저장하였다.  C:\oracle\ora92\sqlplus\admin\
부서번호를 입력하세요 : 10  --> 10입력 
직종을 입력하세요 : MANAGER --> MANAGER 입력 
구   3: where deptno=&v_deptno and job=upper('&v_job')
신   3: where deptno=10 and job=upper('MANAGER')
--> 결과값
EMPNO ENAME      DEPTNO JOB           SAL
----- ---------- ------ --------- -------
 7782 CLARK         010 MANAGER    $2,450 


출처 : http://heyjoon.egloos.com/2764458