본문 바로가기

ORACLE

SQL*Plus 명령어

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

SQL*Plus 명령어
----------------------------------------------------------------------

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

'ORACLE' 카테고리의 다른 글

ld: 0711-224 WARNING: Duplicate symbol: p_xargc  (0) 2012.01.04
[ORACLE] 테이블당 사용량 구하기  (0) 2011.08.17
[오라클] 덤프 exp/imp  (0) 2010.08.13
[오라클] 9i 임포트(import) 가이드  (0) 2010.08.13
[오라클] export/import  (0) 2010.08.13