현 블로그는 모바일 환경이 아닌 PC환경에 최적화 되어있습니다.

 Mir의 운영환경

SQL*Plus문이란?


SQL문을 실행시키고 그 결과를 볼수 있도록 오라클에서 제공하는 툴이다.

SQL은 데이터베이스에서 자료를 검색하고 수정하고 삭제하는 테이터베이스 언어라면 

SQL*Plus는 출력 형식을 지정하거나 편의상 환경설정을 하는 명령어이다.



SQL과 SQL*Plus명령어는 아래 표와 같은 차이점이 있다.

  SQL문

 SQL*Plus명령어

관계형 데이터베이스의 ANSI(미국표준협회)에서 채택한 표준언어

오라클 사가 만든 SQL문을 사용자가 더욱

편하게 사용할수 있도록 만든 툴

종결문자(;)의 사용으로 여러줄을 사용해도

끝에 종결문자(;)를 넣으면 한줄로 인식

종결문자(;)가 없기때문에 여러줄을 사용할려면 연결문자(-)를 사용해 주어야함

 키워드 단축 불가

키워드 단축 가능 

 버퍼에 마지막 저장문 저장 

버퍼 저장 안함  

 

버퍼에 대해서 알아보자.

오라클은 현재 실행중인(최근에 사용했던) SQL문을 명령 버퍼(command buffer)에 저장한다. 그리고 저장된 SQL문을 SQL*Plus명령어로 호출, 편집및 실행을 할수 있다.

그럼 현재 버퍼에 저장되어 있는 쿼리문을 확인해보자.




LIST - 버퍼에 있는 내용을 확인하기 위한 명령어 (축약형 : L)

필자가 이름과 연봉을 SQL구문으로 출력을 시키고 난뒤에

LIST를 사용하여 방금 어떤 명령을 내렸는지 확인해보앗다. 

SQL*Plus문은 명령어의 축약형을 가지고 있기때문에 알아두면 매우 편리하다.

하지만 축약형만 알고 이것이 어떤명령어인지 모르고 있으면 안되니 

명령어를 확실하게 알아두고 난뒤에 축약형을 사용하도록 하자.


LIST로 버퍼에 저장된 문구를 확인하였다.

SELECT ename, sal*12

FROM emp 

라는 쿼리문이 버퍼에 저장되어 있다.  그럼 저장된 문구를 실행시켜보자.


1. RUN  - 버퍼에 저장된 쿼리문을 실행(축약형 : R) 

2. / - 버퍼에 저장된 쿼리문을 실행


저장된 문구를 실행시키는 명령어는 2가지가 있는데 RUN 과 / 이다.

둘다 버퍼에 저장된 쿼리문을 실행하지만 한가지 다른점이 있다.

아래 각각 리스트를 확인하고 run과 /로 쿼리문을 출력시켰다.

위 그림에서 보듯이 RUN은 버퍼에 저장된 명령어를 다시한번 출력하지만
 / 는 바로 실행이 된다.  (L은 LIST의 축약형이라는거 벌써 까먹으면 안된다.)


이번엔 LIST로 쿼리문을 출력하였는데 저장된 쿼리문을 수정하고 싶을때 쓰는 명령어이다.


EDIT - 버퍼에 저장된 쿼리문을 편집하는 명령어(축약형 ED)


LIST로 저장된 문구를 확인하고 난뒤에 

EDIT(ED)를 입력하면 file afiedt.buf가 기럭되었습니다. 라고 출력하며 메모장이 뜬다.


메모장을 확인해보면 방금 리스트로 출력된 쿼리문이 적혀있는것이 확인된다.

자 여기서 커미션(comm)컬럼을 추가한뒤에 저장해보자.


---메모장----------------------------

select ename, sal*12, comm

form emp

/  <--은 종결문자(;)을 나타낸다. 

----------------------------메모장---



저장한뒤 메모장을 종료하면 아래처럼 수정한 쿼리문이 출력된다.



자 그럼 저장된 쿼리문을 출력해보자.

COMM컬럼까지 추가되어 출력되는것이 확인 되는가?

EDIT를 사용하면 이렇게 버퍼에 저장된 명령문을 수정할수 있다.


그럼 HOST명령문을 사용하여 도스프롬포트를 열어보자.



 

 

HOST - 도스프롬포트를 연다.


 

도스명령어 dir를 입력하면 afiedit.buf라는 파일이 존재하는것을 확인할수 있다.



다시 sqlplus로 돌아올려면 도스프롬포트를 나가는 명령어 exit를 사용하면 sqlplus로 돌아오게 된다.



자 버퍼에 담긴 내용을 출력하고 수정하고 실행하는것 까지 알아보았다.

이번엔 이 버퍼에 저장된 내용을 파일로 저장하여 부르고 싶을때 부를수 있도록 해보자.




save - 마지막에 실행한 명령어를 저장하는 명령어


쿼리문을 사용한후 save (파일명)을 사용하면 마지막에 사용한 명령어가 (파일명).sql로 저장이 된다. 



HOST로 나가면 생성된 a1.sql 파일을 확인할수 있다. 



그럼 저장된 명령어를 불러와보자.




@ - 저장한 명령어를 불러와서 실행시키는 명령어

필자가 저장시켜 놓은 SELECT ename, sal*12 FROM emp;가 출력되는것을 확인할수 있다.


save를 사용하면 자기가 사용한 명령어를 파일로 저장시켜서 언제든지 확인 및 수정, 출력을 할수 있는데 save사용시 이미 있는 파일이름을 넣으면 오류가 나게 된다.


이럴때 replace라는 옵션을 사용하면 덮어쓰가 된다.


자 SAVE와 @ 명령어에 따라 붙는 명령어가 하나더 있는데 바로 GET이다.




GET - 저장한 명령어를 버퍼로 불러오는 명령어 


@는 저장된파일을 읽어 바로 실행을 시키지만 GET는 저장된 명령어를 불러와서

버퍼에 저장만 할뿐 실행은 시키지 않는다. 

그래서 GET를 사용하고 난뒤에 RUN이나 /를 사용하여 실행시켜줘야 한다. 

여기까지 명령어를 저장및 수정, 실행하는 방법을 알아보았다.

이번엔 시스템환경을 설정해주는 SET명령어에 대해 알아보자.





SET은 출력할 컬럼제목, 출력문의 길이 및 너비 등등을 설정할수 있다.

(SET NULL명령도 SET명령어 변수중 하나인 NULL을 사용한 명령어이다.)


SET 시스템_변수명 값 


SET다음에 어떤 시스템변수를 쓰냐에 따라 현재 시스템의 환경이 변화된다.

SET명령의 기본변수를 하나하나 알아보자.


SET_HEADING - 컬럼제목의 출력 여부를 결정 





SET_LINESIZE - 한 화면에 출력되는 라인의 수를 수정





SET_PAGESIZE - 페이지 크기를 결정


기본적인 SET명령어의 시스템변수를 알아보았다.

눈으로 보기만해도 뭐가 달라진것인지 알수 있지만 다들 한번씩은 적용해서 출력해보기 바란다.





이번엔 컬럼 제목을 수정하는 명령어를 배워보겠다.

SQL문에서도 컬럼제목을 수정하는 별칭달기라는 방법이 있엇는데

SQL*Plus문에서는 컬럼제목을 한번 설정하면 해제하기전까지 계속 변경되여 출력이 된다.



COLUMN (컬럼명) HEADING '바꿀컬럼명'
- 컬럼 제목을 설정하는명령어 

COLUMN ename HEADING '사원이름'


ename가 출력시 사원이름으로 변경되었다.


각자 sal을 월급으로 sal*12를 연봉으로 바꾸어서 한번 출력해보자.




ename가 설정후에 계속 사원이름으로 출력되는것이 확인된다.

이제 설정을 해제시켜보자.


COLUMN (컬럼명) CLEAR - 설정 해제 명령어


설정을 해제하기전에 컬럼에 설정된 값을 한번 확인해보자.


COLUMN (컬럼명) - 컬럼에 설정된 값을 확인



컬럼 : ename 

해딩 : '사원이름'

---------------------------



이렇게 해딩이 설정되어 있다고 출력이 된다.

그럼 해제 시켜보자.

COLUMN ename CLEAR


해제를 시키고 난뒤에 설정값을 확인해보니 정의가 되지 않았다고 메세지가 출력된다.

다시 SELECT ename를 출력하면 처음으로 되돌아 간것을 확인할수 있다.



마지막으로 테이터의 출력형식을 변경해보자.


COLUMN (컬럼명) FORMAT (출력형식) - 컬럼의 출력형식을 변경 


이명령어는 출력되는 데이터의 형식을 바꾸는것인데

예를 들어 세자리수마다 ,를 찍는다던지 (100,000) 문자출력을 20자까지 출력을

할수있게 해주는 명령어이다.


COLUMN sal FORMAT 000,000


 

(필자가 sla을 월급으로 설정해놓을것을 아직 풀어주지 않았다;)


자 위 그림처럼 내가 지정한 포멧에 맞춰 출력이 된다.

포멧 000,000 은 3번째 자리앞에 ,를 찍은 6자리수로 출력하라는 뜻이다.

그래서 값이 없는 곳엔 0을넣어 6자리수를 만들어 출력되었다.


위 값을 보면  3자리수는 하나밖에 없고 나머지는 모두 4자리수 인데

만약 000을 출력하라고 하면 어떻게 될까?

그러면 3자리수 값만 제대로 출력되고 나머지는 깨져서 나오게 된다.


자 그러면 이번엔 문자열을 출력해보자

문자열은 포멧값을 A20 (20자리까지 출력)으로 주면 된다.


COLUMN ename FORMAT a20



 


포멧값을 주고난뒤와 안줬을때와 차이점이 보이는가?

A20으로 인해 문자열을 20자 출력해야되는데 값이 없으니 
공란으로 20자까지 출력을 하는것이다.


그럼 문자값은 자릿수를 줄여서 출력하면 어떻게 될까?

A를 4로 두고 한번 출력해 보겠다.

보이는가?

문자값은 4자리를 출력하라고 하면 5번째 자리의 문자는 한칸 아래로 내려가 출력하게 된다.

숫자처럼 깨지지 않는것이다.(아직 필자도 왜 그러는지는 확실하게 모른다.. 그냥 이렇다고만 알아두자;)


이렇게 출력형식을 이용하면 좀더 간략하고 보기편하게 출력형식을 바꿔줄수 있다.


마지막으로 원상복구를 시켜놓자


COLUMN sal FORMAT 99999

포멧형식을 99999로 정해주면 원상복귀가 된다.

모두 다시 원상복귀를 하고난뒤 출력을하여 확인해보기 바란다.





오라클의 기초는 일단 명령어 외우기 부터이다.
필자의 포스트는 진도를 빠르게 나가기 위해 명령어를 자주 쓰이는것만 포스팅하고 있다.
(필자가 배우기도 이정도의 명령어만 배우고 있다.)
각자 참고하는 서적등에서 새로운 명령어가 나오면 한번씩 사용 해보고
"이런기능을 가진 명령어가 있다" 라고는 꼭 기억해두어야지 후에 그 기능을 사용할때
책을 찾기라도 한다. (모르면 기능을 쓰지못하는것이다.)








 

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------
본 블로그의 글을 퍼가실때 꼬릿말, 퍼가시는곳 주소를 꼭 남겨주세요.
출처 꼭 기재해주시고요. 상업적인 용도의 이용은 절대 금합니다. 
혹 프린트를 할 경우 블로그주소와 함께 프린트 해주세요.
허락을 맡지 않고 무단도용을 할경우 법적인 제제가 있을수도 있습니다.
(전 분명히 경고했습니다. 합의같은거 안합니다.)
그리고 혹 무단도용한것을 보신분은 신고해주시면 사례금 챙겨 드리겠습니다.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
⬇ 도움이 되셨다면 다음뷰 추천(아래 손가락 모양) 한번씩만 클릭해주세요 ^^ 추천은 저에게 힘이 됩니다~
 

+ Recent posts