=========================================================
SQL*Plus Commands
=========================================================
- 환경 설정 : set, show
SQL> show all
-- 현재 인스턴스의 환경변수를 모두 보여줌.
SQL> set sqlprompt "Eddy> "
-- "SQL>" 인 SQL 프롬프트를 "Eddy>" 로 바꿈
Eddy> set colsep "|"
-- 컬럼과 컬럼 사이에 스페이스바를 하나 넣음
Eddy> select * from emp;
--> 결과..와 같이 컬럼사이에 "|"가 하나씩 나옴.
EMPNO|ENAME |JOB | MGR|HIREDATE | SAL|.............
----------|----------|---------|----------|------------|----------|---
7369|SMITH |CLERK | 7902|17-DEC-80 | 800|.............
7499|ALLEN |SALESMAN | 7698|20-FEB-81 | 1600|.............
7521|WARD |SALESMAN | 7698|22-FEB-81 | 1250|.............
7566|JONES |MANAGER | 7839|02-APR-81 | 2975|.............
7654|MARTIN |SALESMAN | 7698|28-SEP-81 | 1250|.............
7698|BLAKE |MANAGER | 7839|01-MAY-81 | 2850|.............
7782|CLARK |MANAGER | 7839|09-JUN-81 | 2450|.............
7788|SCOTT |ANALYST | 7566|09-DEC-82 | 3000|.............
7839|KING |PRESIDENT| |17-NOV-81 | 5000|.............
7844|TURNER |SALESMAN | 7698|08-SEP-81 | 1500|.............
7876|ADAMS |CLERK | 7788|12-JAN-83 | 1100|.............
7900|JAMES |CLERK | 7698|03-DEC-81 | 950|.............
7902|FORD |ANALYST | 7566|03-DEC-81 | 3000|.............
7934|MILLER |CLERK | 7782|23-JAN-82 | 1300|.............
Eddy> exit
- 결과 포맷 : column, break, tti, bti
-- 출력 결과의 포맷을 예쁘게 만든다.
-- tti = Top TItle, bti = Bottom TItle
SQL> select deptno, empno, ename, sal, job
2 from emp
3 order by deptno;
SQL> tti 'Salary|Report'
SQL> /
-- 결과의 앞대가리에 'Salary|Report' 를 출력, "|"의 의미는 엔터다. header라고 한다.
SQL> bti confidential
SQL> /
-- 결과의 꽁무니에 confidential 이라고 출력, footer 라고 한다.
SQL> set lines 60
SQL> /
-- 라인을 60으로 설정한다는 의미인데, 좌우 폭을 나타낸다.
SQL> set pages 40
SQL> /
--한 페이지를 40으로 설정한다. 한 페이지의 높이를 나타낸다.
SQL> break on deptno skip 1;
SQL> /
-- deptno의 값들중 같은 값이 중복되서 출력되면 한 줄을 비우고(skip하고) 출력한다.
SQL> break on deptno skip page
SQL> /
-- deptno의 값들중 같은 값이 중복되서 출력되면 한 페이지를 skip한다.
SQL> break on deptno skip 1;
SQL> /
-- 지금 실습에서 한줄을 skip할 것이므로 위와 같이 설정
SQL> set lines 70
--좌우 폭을 70으로 설정
SQL> column sal format L999,999.99
SQL> /
-- sal컬럼의 값들의 포맷을 바꿈.
$2,975.00
$3,000.00
$1,100.00
$800.00
$3,000.00
--> 이렇게 바꿈
SQL> set feedback off
SQL> /
-- "14 rows selected" 라는 문구 안나오게 함
# 보고서를 만드는 SQL Script 생성
SQL> ed salary_report.sql
-> 아래 내용을 salary_report.sql 에 입력하고 저장한다.
set lines 70
set pages 40
set feedback off
tti 'Salary|Report'
bti confidential
break on deptno skip 1;
column sal format L999,999.99
spool salary_report.txt
select deptno, empno, ename, sal, job
from emp
order by deptno;
spool off
tti off
bti off
clear break
column sal clear
set feedback on
set pages 30
set lines 150
-> 여기까지. 각종 설정을 변경하고 spool을 사용해서 결과를 txt파일로 만든다.
spool을 off하고 나서, 방금 했던 설정들을 되돌림
SQL> @ salary_report.sql -- 해당 sql문을 실행
-- 방금 저장한 이 파일은 어디에 저장되지?
SQL> ed salary_report.txt
-- 실행된 결과를 txt메모장 파일로 보여줌
- Script 편집
save 파일이름 : 버퍼 -> 파일
get 파일이름 : 파일 -> 버퍼
start 파일이름 : 파일 실행
@ 파일이름 : 파일 실행
edit 파일이름 : 파일 편집 or 생성 (cf. SQL> edit : 버퍼 편집)
spool 파일이름 ~ spool off
SQL> select * from emp
2 where sal >= 2000;
-- 지금 실행한 이 sql문은 버퍼에 있다.
SQL> save c:\a.sql
-- 버퍼에 있는 정보를 저장, 위의 문장이 저장됨
SQL> start c:\a.sql
-- 방금 저장한 a.sql을 실행함.
-- "@ c:\a.sql" 와 동일함
SQL> select * from dept;
-- 새로운 sql문을 버퍼에 가지고 있다.
SQL> get c:\a.sql
1 select * from emp
2* where sal >= 2000
-- 현재 버퍼에 있는 내용을 출력한다.
-- * (아스터)의 의미는 현재 편집가능한 위치이다.
SQL> @ c:\a.sql
-- 아까 저장된 a.sql 을 실행함.
-- "start c:\a.sql" 와 동일함
SQL> ed c:\a.sql
-- 기존 파일 편집
-- a.sql 이라는 파일이 존재한다면 ed명령어로 존재하는 파일을 열어서 편집가능
SQL> ed c:\b.sql
-- 새로운 파일 생성
-- b.sql 파일은 존재하지 않기 때문에 새로운 파일이 생성된다.
- Command 편집 : input, list, run(r, /), chagne, delete, append, 숫자
SQL> select * from emp;
SQL> i
2 where deptno = 30
3
-- i 는 input 인데, 앞서 select * from emp; 다음 줄에 행번호 2로 입력 가능해진다.
-- 3에서 그냥 엔터친 뒤. list를 입력하면...(계속)
SQL> list
-- 1행에 select * from emp, 2행에 where deptno = 30 이 입력되어 있다는 것을 보여준다.
SQL> l
--list 와 l (엘)은 완전히 똑같다.
SQL> run
-- 현재 버퍼에 있는 내용을 실행한다.
SQL> r
SQL> /
-- run 과 r , / 는 완전히 똑같다.
SQL> i
3 and sal >= 1500;
-- i를 입력하여 또 추가해보자.
SQL> l
-- 버퍼에 있는 애들을 한번 보자.
SQL> l 3
3* and sal >= 1500
--버퍼의 3행에 있는 내용만 보자.
SQL> l 1 2
1 select * from emp
2* where deptno = 30
-- 리스트에서 1, 2행에 있는 내용만 보자.
SQL> l
-- 버퍼에 있는 애들을 다시 한번 보자
-- '*'가 있는 위치가 현재 위치다. 커서의 위치라고 이해하면 편함.
SQL> c/1500/2000
3* and sal >= 2000
-- '*'가 있는 곳의 값을 바꾼다.
-- c는 change다. "바꿔라. 1500을 2000으로...
SQL> /
-- 실행하면 c를 한 맨 마지막에 있는 버퍼의 내용이 실행된다.
SQL> 2
2* where deptno = 30
-- 그냥 숫자를 입력하면 해당 행으로 커서가 이동한다.
SQL> c/30/20
2* where deptno = 20
-- 커서가 있는 곳의 값 30을 20으로 변경한다.
SQL> /
--실행
SQL> del 2
-- 2번 행을 지운다
SQL> l
1 select * from emp
2* and sal >= 2000
-- 2번행이 지워지고 3번행이 2번행이 되었다.
SQL> 1
1* select * from emp
-- 1번행으로 이동하고
SQL> i
2i where deptno=10
3i
-- 2번행에다가 where절을 입력한다.
SQL> l
1 select * from emp
2 where deptno=10
3* and sal >= 2000
-- 방금 입력한 것은 1과 2 사이에 입력되었고, 2번행은 3번행으로 밀려났다
SQL> /
--실행
SQL> a and job = 'MANAGER'
3* and sal >= 2000 and job = 'MANAGER'
-- a는 add, 즉, 추가한다.
-- "and job = 'MANAGER'"를 커서가 있는 곳에 추가한다.
-- and sal >= 2000 and job = 'MANAGER' 가 되었다.
SQL> l
1 select * from emp
2 where deptno=10
3* and sal >= 2000 and job = 'MANAGER'
-- 버퍼의 내용 확인
SQL> /
-- 실행
<< 마무리 >>
출력 포맷을 자유자재로 다루었다.
마치 vi 에디터를 사용하듯이 sql문을 다루었다.
버퍼에 있는 내용을 커서(그냥 내가 커서라고 표현함)가 있는 행을 중심으로 수정하고, 지우고, 추가하였다.
어차피 메모장을 이용하여 타이핑을 하고 카피엔페이스트를 사용하여 sql문을 사용하겠지만
순간적으로 사용할 수 있을 것 같다.
댓글 없음:
댓글 쓰기