반응형



SQL Plus를 실행하는데 방법에 익숙해진 다음에는 이를 이용해 SQL을 실행하는 방법을 배울 차례이다.

데이터베이스에 접속할 때는 특정한 사용자 계정으로 접속하는 것이며, 여러분의 계정에 할당된 권한에 따라 데이터베이스에

보관된 데이터에 대한 접근이 가능한자의 여부가 결정 된다는 것을 먼저 기억해두자.

오라클은 데이터베이스 이용을 배우는 데 이용할 수 있는 몇 가지 예제 스키마를 제공한다. 우리가 이용할 첫번째 사용자 계정은

오라클 예제 스키마 (HR)으로 이 사용자 계정은 SQL Plus이용에 익숙해지는 데 이용할 수 있는 몇 가지 테이블들을 소유하고

있으므로, 유용하게 활용할 수 있다.

[Try it Out]




다음과 같은 결과를 볼 수 있다. 위 두개는 같은 결과를 출력하고 있지만 가독성을 위해서 두 번째 형식을 따르는게 좋다.

이는 HR사용자가 소유하고 있는 모든 테이블 목록이다.

[결과 분석]
USER_TABLE은 올라클 데이터 딕셔너리 포함된 뷰이며, 현재 사용자에게 속한 테이블에 대한 정보를 얻는데 이용한다.

앞의 예에서 우리는 사용자 HR으로 데이터베이스에 연결하였으므로, 다음과 같은 테이블이 사용자에게 속해 있다는 결과가

나타난 것이다. 이제 현재 사용자에게 속한 테이블이 무엇인지를 알 수 있으므로 JOBS 테이블에 저장된 데이터가 무엇인지를

알아내는 쿼리를 실행해보자.


결과를 보면 자동으로 줄바꿈이 되어있고 상당히 읽기가 힘들다. 이것은 SQL Plus 세션에 라인 당 데이터로 80 문자의 공간밖에

할당되어 있지 않으며, SQL Plus가 자동으로 모든 출력에 열 제목을 반복하기 때문이다.


SQL Plus에서 이런 문제를 해결하는 데는 3가지 방법이 있다.

1. 익숙해진다.

2. 적은 수의 열을 질의한다.

3. 결과를 변환한다.

[결과 변환하기]

▒ COLUMN
SQL Plus에서는 쿼리 실행의 결과가 데이터의 행과 열로 리턴되며, 쿼리 결과셋의 각 행에 대해 COLUMN 명령을 사용하면

출력 속성을 지정할 수 있다.

 


텍스트 문자열 $999,999,99는 본인이 선택하는 열의 숫자 값을 9로 대체할 것을 오라클에게 알려주는 포맷 매스크이다.

즉 출려값이 1600이고, 포맷 매스크 $999,999,99가 적용되면 결과는 $1,600,00가 된다. 또는 여웃자 데이터의 경우에는 다음과 같이

열의 너비를 지정할 수 있다.


이 쿼리에서  object_name열은 128문자이므로, 화면에 출력되면 전체 라인을 차지한다. 사실 열에 포함된 데이터는 이렇게 많은

공간을 차지하지는 않지만, SQL Plus가 이를 알지 못하기 때문에 열에서 리턴된 데이터를 포맷할 때는 데이터베이스 내의

열 정의에 포함된 길이에 맞도록 포맷틸할 필요가 있다.


a20의 a는 영숫자를 의미하며 20은 열의 너비를 의미한다. 이제 object_type열의 포맷옵션이 정의되었으므로 다시 쿼리를

실행해보자. SQL Plus내에서 코드를 다시 실행하려면 '/' 문자를 이용하면 된다.

포맷된 결과를 보면 object_type열이 이제 20 문자를 포함한다는 것과 각 행이 하나의 라인에 표시되고 있음을 알 수 있다.



▒ PAUSE
쿼리는 사용자의 SQL에 따라 수백만의 행을 리턴하거나 전혀 행을 리턴하지 않을 수도 있다.
(리터될 수 있는 행의 수는 무제한이다.)

SQL에서 데이터를 출력하는 속도는 매우 빠르기 때문에 이를 따라잡기는 쉽지 않다.

따라서 한 화면에 전부 볼 수 없는 데이터를 포함하는 쿼리나 보고서의 경우에느 화면에 스크롤된 데이터를 버퍼에 저장하고,

위나 아래로 스크롤 하여 쿼리의 결과를 모두 볼 수 있어야 한다.

PAUSE 명령은 바로 이런 경우를 위한 것이다.

 



이제 사용자가 실행한 쿼리의 결과가 페이지의 길이보다 길 경우에는 Enter키를 누를 때까지 출력이 정지된다.

PAUSE 명령이 작동중일 때 사용자가 쿼리를 실행하면, 오라클은 첫번째 페이지를 출력하기 전에 한 차례 정지한다.

즉 쿼리에 반응하지 않고 아무것도 하지 않고 있는 것으로 보일 수도 있다. 이 상태에서 Enter키를 누르면, 화면으로의

데이터 스풀링을 시작하며 첫번째 페이지를 보게 된다.

PAUSE 이용을 중지하려면 다음과 같은 명령을 이용하면 된다.


▒ PAGESIZE
쿼리를 실행하면 SQL는 먼저 사용자가 선택한 열 제목을 출력하고, 이어 해당하는 열 제목 아래 데이터를 스풀링하는데, 이 때

PAGESIZE 설정에 지정된 수 만큼의 행을 출력하고 다시 열 제목을 출력한다.

PAGESIZE의 디폴트 값은 14이지만 필요한 경우에는 원하는 값으로 변경할 수 있다.


▒ LINESIZE
LINESIZE를 이용하면 SQL에 설정된 Default LINESIZE(80)를 변경할 수 있다. SQL에서는 LINESIZE에 지정된 문자 만큼을

출력하면 다음 라인으로 넘겨 출력을 계속하므로, 충분히 넓은 창을 이용하고 있다면 줄바꿈을 피하도록 LINESIZE 값을

늘려도 된다.


반응형

+ Recent posts