상세검색
매뉴얼1-10 / 347건
-
- [Altibase 5.3.3] iSQL User's Manual_KOR ㅣ 2012-09-27
- ALTIBASE Tools iSQL User’s Manual Release 5.3.3 ----------------------- ALTIBASE Tools iSQL User's Manual Release 5.3.3 Copyright ⓒ 201~209 ALTIBASE Corp. All Rights Reserved. 본 문서의 저작권은 ㈜알티베이스에 있습니다.
-
미리보기
ALTIBASE Tools iSQL User’s Manual Release 5.3.3 ----------------------- ALTIBASE Tools iSQL User's Manual Release 5.3.3 Copyright ⓒ 201~209 ALTIBASE Corp. All Rights Reserved. 본 문서의 저작권은 ㈜알티베이스에 있습니다. 이 문서에 대하여 당사의 동의 없이 무단으로 복제 또는 전용할 수 없습니다. ㈜알티베이스 152-790 서울시 구로구 구로동 182-13 대륭포스트타워Ⅱ 10 층 전화: 02-2082-1114 팩스: 02-2082-1099 e-mail: support@altibase.com homepage: http://ww.altibase.com -------------------------------------------- 목차 I 목 차 서문 .......................................................................................................................... i 이 매뉴얼에 대하여 ...................................................................................................................... ii 1. iSQL 이용방법 ................................................................................................ 1 iSQL의 개요 ...................................................................................................................................... 2 iSQL 설정 .......................................................................................................................................... 3 iSQL 커맨드 라인 옵션 ............................................................................................................... 5 iSQL 명령어 ...................................................................................................................................... 8 iSQL 관련 환경변수 ................................................................................................................... 14 iSQL 구성 ....................................................................................................................................... 17 2. iSQL 사용 예 ............................................................................................... 19 로그인 .............................................................................................................................................. 20 알티베이스의 구동 및 종료 ................................................................................................... 21 접속 연결 및 해제 ..................................................................................................................... 23 데이터베이스 객체 정보 조회 ............................................................................................... 26 트랜잭션 제어 .............................................................................................................................. 30 파일 관리........................................................................................................................................ 31 SELECT 결과 포매팅 .................................................................................................................. 37 출력 옵션 제어 ............................................................................................................................ 42 iSQL 환경변수 보기 ................................................................................................................... 49 호스트 변수 ................................................................................................................................... 51 PREPARE SQL문 수행 ................................................................................................................ 53 프로시저 생성과 실행 및 삭제 ............................................................................................. 54 함수 생성과 실행 및 삭제 ...................................................................................................... 59 사용자 편의 기능 ........................................................................................................................ 61 내셔널 캐릭터 사용법 ............................................................................................................... 63 II ALTIBASE5 iSQL User’s Manual 찾아보기 .............................................................................................................. 65 서문 i 서문 ii ALTIBASE5 iSQL User’s Manual 이 매뉴얼에 대하여 이 매뉴얼은 데이터베이스에 접속해 데이터베이스 정보와 서버의 정보를 조회하고 제어할 수 있는 도구인 iSQL 의 사용법에 대해 설명한다. 대상 사용자 이 매뉴얼은 다음과 같은 알티베이스 사용자를 대상으로 작성되었다. y 데이터베이스 관리자 y 성능 관리자 y 데이터베이스 사용자 y 응용 프로그램 개발자 y 기술지원부 다음과 같은 배경 지식을 가지고 이 매뉴얼을 읽는 것이 좋다. y 컴퓨터, 운영 체제 및 운영 체제 유틸리티 운용에 필요한 기본 지식 y 관계형 데이터베이스 사용 경험 또는 데이터베이스 개념에 대한 이해 y 컴퓨터 프로그래밍 경험 y 데이터베이스 서버 관리, 운영 체제 관리 또는 네트워크 관리 경 험 소프트웨어 환경 이 매뉴얼은 데이터베이스 서버로 알티베이스 버전 5.3.3 을 사용한다는 가정 하에 작성되었다. 이 매뉴얼의 구성 이 매뉴얼은 다음과 같이 구성되어 있다. y 제 1장 iSQL 이용방법 이 장은 iSQL의 개요와 제공하는 명령어 및 사용방법에 대해 설 명한다. y 제 2장 iSQL 사용 예 이 장은 iSQL이 제공하는 각각의 명령어 대해 자세한 사용 예를 들어 설명한다. 서문 iii 문서화 규칙 이 절에서는 이 매뉴얼에서 사용하는 규칙에 대해 설명한다. 이 규칙을 이해하면 이 매뉴얼과 설명서 세트의 다른 매뉴얼에서 정보를 쉽게 찾을 수 있다. 여기서 설명하는 규칙은 다음과 같다. y 구문 다이어그램 y 샘플 코드 규칙 구문 다이어그램 이 매뉴얼에서는 다음 구성 요소로 구축된 다이어그램을 사용하여, 명령문의 구문을 설명한다. 구성 요소 의미 예약어 명령문이 시작한다. 완전한 명령문이 아닌 구문 요소는 화살표로 시작한다. 명령문이 다음 라인에 계속된다. 완전한 명령문이 아닌 구문 요소는 이 기호로 종료한다. 명령문이 이전 라인으로부터 계속된다. 완전한 명령문 이 아닌 구문 요소는 이 기호로 시작한다. ; 명령문이 종료한다. SELECT 필수 항목 NOT 선택적 항목 ADD DROP 선택사항이 있는 필수 항목. 한 항목만 제공해야 한다. ASC DESC 선택사항이 있는 선택적 항목 , ASC DESC 선택적 항목. 여러 항목이 허용된다. 각 반복 앞부분에 콤마가 와야 한다. iv ALTIBASE5 iSQL User’s Manual 샘플 코드 규칙 코드 예제는 SQL, Stored Procedure, iSQL 또는 다른 명령 라인 구문들을 예를 들어 설명한다. 아래 테이블은 코드 예제에서 사용된 인쇄 규칙에 대해 설명한다. 규칙 의미 예제 [ ] 선택 항목을 표시 VARCHAR [(size)] [[FIXED |] VARIABLE] { } 필수 항목 표시. 반드시 하나 이 상을 선택해야 되는 표시 { ENABLE | DISABLE | COMPILE } | 선택 또는 필수 항목 표시의 인 자 구분 표시 { ENABLE | DISABLE | COMPILE } [ ENABLE | DISABLE | COMPILE ] . . . 그 이전 인자의 반복 표시 예제 코드들의 생략되는 것을 표 시 SQL> SELECT ename FROM employee; ENAME ----------------------- SWNO HJNO HSCHOI . . . 20 rows selected. 그 밖에 기 호 위에서 보여진 기호 이 외에 기 호들 EXEC :p1 := 1; acc NUMBER(11,2); 기울임 꼴 구문 요소에서 사용자가 지정해 야 하는 변수, 특수한 값을 제공 해야만 하는 위치 지정자 SELECT * FROM table_name; CONNECT userID/password; 소문자 사용자가 제공하는 프로그램의 요소들, 예를 들어 테이블 이름, 칼럼 이름, 파일 이름 등 SELECT ename FROM employee; 대문자 시스템에서 제공하는 요소들 또 는 구문에 나타나는 키워드 DESC SYSTEM_.SYS_INDICES_; 관련 자료 자세한 정보를 위하여 다음 문서 목록을 참조하기 바란다. 서문 v y ALTIBASE Administration Installation User’s Manual y ALTIBASE Administration Starting User’s Manual y ALTIBASE Administration Administrator’s Manual y ALTIBASE Administration Replication User’s Manual y ALTIBASE Application Development SQL User’s Manual y ALTIBASE Application Development Stored Procedure User’s Manual y ALTIBASE Message Error Message Reference 온라인 매뉴얼 알티베이스 테크니컬 센터(http://atc.altibase.com/)에서 국문 및 영문 매뉴얼(PDF, HTML)을 받을 수 있다. 알티베이스는 여러분의 의견을 환영합니다. 이 매뉴얼에 대한 여러분의 의견을 보내주시기 바랍니다. 사용자의 의견은 다음 버전의 매뉴얼을 작성하는데 많은 도움이 됩니다. 보내실 때에는 아래 내용과 함께 기술지원센터(support@altibase.com)로 보내주시기 바랍니다. y 사용 중인 매뉴얼의 이름과 버전 y 매뉴얼에 대한 의견 y 사용자의 성함, 주소, 전화번호 이 외에도 알티베이스 기술지원 설명서의 오류와 누락된 부분 및 기타 기술적인 문제들에 대해서 이 주소로 보내주시면 정성껏 처리하겠습니다. 기술적인 부분과 관련하여 즉각적인 도움이 필요한 경우에는 기술지원센터로 연락하시기 바랍니다. 여러분의 의견에 항상 감사드립니다. iSQL 이용방법 1 1. i S QL 이용방법 2 ALTIBASE5 iSQL User’s Manual iSQL 의 개요 iSQL 은 알티베이스 데이터베이스에 접속하여 SQL 문과 부가적인 여러 명령어를 통해 서버에 저장되어 있는 자료를 얻고, 수정하는 작업을 수행할 수 있는 사용자 도구이다. i SQL 의 주요 기능 y 알티베이스의 구동 및 종료 기능 알티베이스 서버의 구동 및 종료를 여러 개의 커맨드라인 명령어 로 지원하지 않고, iSQL을 이용해 데이터베이스 관리를 일원화 된 도구로 관리할 수 있도록 지원한다. y 데이터베이스 접속 및 해제 기능 알티베이스 구동 이후 데이터베이스 접속 시 다양한 사용자명으 로의 접속 및 해제가 가능하도록 지원한다. y 데이터베이스 객체 정보 조회 기능 iSQL에서는 데이터베이스 객체에 대한 모든 정보를 SQL문으로 조회할 수 있으며, 주요 객체에 대해서는 간편한 조회 명령어를 지원한다. y SQL문 수행을 통한 데이터베이스 관리 기능 iSQL을 사용해 모든 SQL문을 수행할 수 있도록 지원하므로 트 랜잭션 제어, 데이터베이스 변경 등을 빠르고 간편하게 수행할 수 있다. y 사용자 편의 기능 위의 기능을 쉽고 편리하게 수행할 수 있도록 파일 처리 기능, 에디터 기능, iSQL상에서의 쉘 명령어 수행 기능, HISTORY 기 능 등을 지원한다. iSQL 이용방법 3 i SQL 설정 iSQL 은 서버에 접속하기 위해서 다음과 같은 정보가 필요하다. y ALTIBASE_HOME 서버 혹은 클라이언트가 설치된 경로 y server_name 알티베이스 서버가 구동되어 있는 컴퓨터 서버의 이름(또는 IP 주소) y port_no TCP 또는 IPC로 접속할 때 사용할 포트 번호 y user_id 데이터베이스에 등록된 사용자 ID y password 사용자 ID와 일치하는 암호 y NLS_USE 데이터 검색 시, 사용자에게 보여주는 문자 집합 ALTIBASE_HOME 은 환경 변수로 설정하도록 되어있으며, 나머지는 커맨드 라인 옵션을 통해서 설정할 수 있도록 되어 있다. (자세한 내용은 “iSQL 커맨드 라인 옵션”을 참고한다.) ALTIBASE_HOME 은 iSQL 을 사용하기 위해서 반드시 설정해야 하는 환경 변수이다. 윈도우의 경우, 서버가 설치될 때 자동으로 설정되는데 클라이언트의 경우에는 사용자가 직접 설정해야 한다. 설정되지 않았을 경우에는 올바르게 동작하지 않을 수 있으므로 실행 전에 올바르게 설정되어 있는지 확인할 것을 권한다. port_no 와 NLS_USE 는 환경 변수 또는 서버 설정 파일(altibase.properties)을 이용해서 설정할 수도 있다. 세 가지 방법으로 모두 설정되어 있을 경우 적용 우선 순위는 다음과 같다. 1. 커맨드 라인 옵션 2. 환경 변수(ALTIBASE_PORT_NO, ALTIBASE_NLS_USE) 3. 서버 설정 파일(altibase.properties) 그러므로 설정된 값과 다른 옵션으로 연결하고자 할 경우, 커맨드 라인 옵션을 사용하면 서버 설정 파일이나 환경 변수를 다시 설정하지 않아도 된다. 옵션이 설정되어 있지 않을 경우에는 iSQL 이 처음 실행될 때 옵션 입력 프롬프트를 띄우고 사용자에게서 해당 값을 입력 받는다. 이 때 바르지 않은 형식이나 유효하지 않은 값을 입력할 경우, iSQL 은 바르게 동작하지 않을 수 있다. 4 ALTIBASE5 iSQL User’s Manual 특히 NLS_USE 옵션은 사용자가 설정하지 않았더라도 실행 시에 입력 프롬프트가 나타나지 않는다. 만약 사용자가 NLS_USE 옵션을 설정하지 않았다면 기본값인 US7ASCII 를 이용해 접속을 시도한다. 이 때 서버가 US7ASCII 를 사용하지 않는 경우에는 바르게 실행되지 않거나 사용자 데이타가 일부 깨질 수 있으므로 반드시 NLS_USE 를 사용 환경에 맞는 값으로 설정해야 한다. 원활한 iSQL 사용을 위해 다음 환경 변수를 설정할 것을 권장한다. y ALTIBASE_HOME : 서버 혹은 클라이언트가 설치된 경로 y ALTIBASE_PORT_NO : 서버에 접속할 때 사용할 포트 번호 y ALTIBASE_NLS_USE : 데이터 검색 시, 사용자에게 보여주는 문자 집합 y PATH : 실행 파일이 있는 경로인 $ALTIBASE_HOME/bin 추 가 iSQL 이용방법 5 i SQL 커맨드 라인 옵션 iSQL 을 실행하기 위해서는 반드시 먼저 알티베이스 서버를 구동 시켜야 한다. 옵션은 대문자 또는 소문자 모두 가능하다. isql [-S server_name] [-U user_id] [-P password] [-PORT port_no] [-UNIXDOMAIN_FILEPATH filepath] [-IPC_FILEPATH filepath] [-F infile_name] [-O outfile_name][-H] [-SILENT] [-NLS_USE] [-NLS_NCHAR_LITERAL_REPLACE] -S server_name 알티베이스 서버가 구동되어 있는 컴퓨터 서버의 이름(또는 IP 주소)을 명시한다. -U user_id 데이터베이스에 등록된 사용자 ID를 명시한다. -P password 사용자 ID와 일치하는 암호를 명시한다. -PORT port_no TCP 또는 IPC로 접속할 때 해당 포트 번호를 명시한다. 단 유닉스 환경에서 IPC로 접속시 생략이 가능하다. TCP로 접속시 먼저 클라이언트에서 환경 변수 ‘ISQL_CONNECTION=TCP’를 설정하고, 옵션에 PORT_NO를 입력한다. IPC로 접속시 환경 변수 ‘ISQL_CONNECTION=IPC’를 설정하고, IPC_PORT_NO를 입력한다. 그러나 ISQL_CONNECTION이 IPC인 상태에서 환경변수로 ALTIBASE_IPC_PORT_NO가 존재할 경우 IPC_PORT_NO를 생략할 수 있다. PORT_NO, IPC_PORT_NO는 서버의 altibase.properties에 설정된 값을 입력한다. 생략 시 환경변수 ALTIBASE_PORT_NO, altibase.properties를 차례로 참조하며 설정되지 않았을 경우에는 포트 번호 입력 프롬프트가 출력된다. -UNIXDOMAIN_FILEPATH filepath 유닉스 환경에서 서버와 클라이언트가 유닉스 도메인의 소켓으로 접속할 때(ISQL_CONNECTION=UNIX) ALTIBASE_HOME이 서로 다른 경우, 유닉스 도메인의 소켓 경로가 일치하지 않으면 접속할 6 ALTIBASE5 iSQL User’s Manual 수 없다. 이 때 서버와 클라이언트가 같은 파일(ex. ALTIBASE_HOME/trc/cm-unix)을 이용하면, 유닉스 도메인 통신이 가능하다. -IPC_FILEPATH filepath 유닉스 환경에서 서버와 클라이언트가 IPC로 접속(ISQL_CONNECTION=IPC)할 때 ALTIBASE_HOME이 서로 다른 경우, 유닉스 도메인의 소켓 경로가 일치하지 않아 접속할 수 없다. 이 때 ALTIBASE_HOME/trc/cm-ipc 파일을 이용하면, 유닉스 도메인 통신이 가능해져 공유 메모리의 정보를 가져올 수 있다. 그러나 이 옵션은 환경변수 ALTIBASE_IPC_FILEPATH를 설정하였다면, 생략이 가능하다. -F infile_name iSQL 실행 후 바로 실행할 스크립트 파일을 명시한다. -O outfile_name iSQL 실행 후 실행한 명령들에 대한 결과들을 저장할 파일을 명시한다. 이 파일은 현재 디렉토리에 생성된다. 파일이 기존에 존재할 경우, 기존 내용 위에 겹쳐 쓴다. -H iSQL의 실행 방법을 보여준다. -SILENT silent 모드를 켜는 옵션이다. silent 모드를 켜면 Copyright 등의 부가적인 설명들을 디스플레이 하지 않는다. -NLS_USE 데이터 검색 시, 사용자에게 보여주는 문자 집합(Character Set)이다. iSQL을 실행하는 터미널의 encoding을 명시하여 준다. US7ASCII KO16KSC5601 MS949 BIG5 GB231280 UTF8 SHIFT-JIS EUC-JP 생략 시 환경변수 ALTIBASE_NLS_USE, altibase.properties를 차례로 참조하며, 설정되지 않았을 경우에는 기본 문자 집합(US7ASCII)을 사용한다. iSQL 이용방법 7 -NLS_NCHAR_LITERAL_REPLACE 0 : 내셔날 캐릭터(national character) 사용 여부를 검사하지 않음 1 : 내셔날 캐릭터가 존재하는지 검사함 위의 커맨드 라인 중 -S, -U, -P 옵션이 빠져 있는 경우에는 사용자에게 질문을 하여 그 옵션값을 입력받는다. 8 ALTIBASE5 iSQL User’s Manual i SQL 명령어 iSQL 을 실행 시키면 iSQL 명령어 실행을 위한 프롬프트가 나오고, 이곳에 iSQL 명령어들을 입력하면 그 결과를 보여주는 형태로 프로그램이 동작한다. 아래의 표에 iSQL 각각의 명령에 대해 설명하였다. 분류 종류 명령어 설명 iSQL 구 동 및 종 료 구동 $ isql [option] 쉘 상에서 이 명령어를 수행하면 iSQL이 구동된다. 사용 가능한 옵션에 대해서는 iSQL 커맨드 라인 옵션 절의 내용을 참 조한다. 프롬프트 iSQL> iSQL 프롬프트로 명령어 입력 후 ENTER 키를 입력한다. 정지 EXIT; QUIT; iSQL을 종료한다. 알티베이 스의 구동 및 종료 알티베이스 구동 STARTUP PRE-PROCESS, PROCESS, CONTROL, META, SERVICE 중 하나 의 옵션을 이용하여 알티베이스의 다단계 구동을 수행한다. 알티베이스 종료 SHUTDOWN NORMAL, IMMEDIATE, ABORT 중 하 나의 옵션을 사용하여 알티베이스를 종료 한다. 데이터베 이스 접속 및 해제 다른 사용 자로 서버 에 접속 CONNECT user1/pass1 [AS sysdba]; iSQL에서 데이터베이스 접속 후 다른 사 용자로 접속하기 위한 명령어로 패스워드 pass1을 가진 user1이라는 사용자로 접 속한다.CONNECT가 성공하면 이전 세션 정보는 clear 된다. AS 절은 SYS 사용자가 sysdba 관리자 모드로 서버에 접속하는 것을 허용한다. sysdba로 접속하는 것은 한 명의 사용자 만 허용된다. 접속해제 DISCONNECT; 현재 세션을 종료하고 서버와의 연결을 끊는다. 데이터베 이스 객체 정보 조회 성능 뷰 목 록 보기 SELECT * FROM V$TAB; 시스템이 제공하는 모든 성능 뷰 목록을 보여준다. 이 명령어는 iSQL에서만 사용 가능 하다. 테이블 목록 보기 SELECT * FROM TAB; 현재 사용 중인 테이블의 목록을 보여준 다. 이 명령어는 iSQL에서만 사용가능 하다. iSQL 이용방법 9 분류 종류 명령어 설명 테이블 구조 보기 DESC samp; samp 테이블의 구조를 보여준다. 시퀀스 정보 보기 SELECT * FROM V$SEQ; SYS 계정으로 서버에 접속한 경우 모든 시퀀스 들의 정보를 보여준다. 다른 사용자로 서버에 접속한 경우는 그 사용자가 생성한 시퀀스들에 대한 정보만 보여준다. 이 명령어는 iSQL에서만 사용가능 하다. 트랜잭션 제어 트랜잭션 모드 설정 AUTOCOMMIT ON; AUTOCOMMIT OFF; 한번 명령어를 실행할 때마다 자동으로 반영을 수행할지 결정한다. 기본값: ON 기타 SET 기능 SET PLANCOMMIT ON; SET PLANCOMMIT OFF; AUTOCOMMIT OFF 모드에서 EXPLAIN PLAN이 ON (또는 ONLY) 조건일 때, DESC, SELECT * FROM TAB; 또는 SELECT * FROM seq_name; 등과 같은 명령어를 수행했 을 때 자동으로 commit 할지를 결정한 다. 기본값: OFF 파일 관리 파일로 자 료 출력 SPOOL filename; 화면에 보여지는 결과를 filename에 기 록하기 시작한다. SPOOL OFF; 화면에 보여지는 결과를 filename에 기 록하지 않는다. sql script 의 실행 START file_name;script 파일을 읽어, 해당 SQL문들을 순 차적으로 수행한다. @ file_name; iSQL 프롬프트 상에서 수행 시 start와 유사한 기능을 갖는다. @@ file_name; 스크립트 안에서 사용될 때 호출을 한 스 크립트와 동일한 디렉토리에서 파일을 수 행한다. SQL문 파 일 저장 SAVE abc.sql; 현재 iSQL 버퍼에 있는 명령어 중 가장 마지막 명령어가 파일로 저장된다. SQL문의 load LOAD abc.sql; file에 저장되어 있는 명령어 중 가장 첫 번째 명령어가 명령어 버퍼의 마지막으로 로드된다. 10 ALTIBASE5 iSQL User’s Manual 분류 종류 명령어 설명 DML문을 파일로 저 장 SET QUERYLOGGING ON; SET QUERYLOGGING OFF: INSERT, UPDATE, DELTE, MOVE 등 의 DML문을 $ALTIBASE_HOME/trc/isql_query.log 에 기록한다. 질의문 편 집 ED 임시 파일을 생성하고 편집 ED filename[.sql] 기존 파일 편집 2ED 또는 2 ED 히스토리 목록에 있는 번호가 2인 질의문 을 편집한다. 출력 옵션 제어 Select 결 과의 칼럼 포맷 팅 SET LINESIZE 100; select 결과 출력 시 디스플레이 되는 한 라인의 사이즈를 설정한다. 10 에서 200 사이의 값이어야 한다. 기본값: 80 Select 결 과의 Clob 칼럼 포맷 팅 SET LOBSIZE 10; Clob 칼럼을 출력 시 디스플레이 되는 데이터의 길이를 설정한다. 기본값: 80 SET LOBOFFSET 3; Clob 칼럼을 출력 시 디스플레이 되는 데이터의 오프셋을 설정한다. 기본값: 0 Select 결 과 건수 출 력 SET FEED[BACK] ON; SET FEED[BACK] OFF; SET FEED[BACK] n; 쿼리 실행결과 건수를 출력여부를 설정한 다. select 결 과의 row 포매 팅 SET PAGESIZE 10; select 결과 레코드들을 몇 개 단위로 출 력할지를 결정하는 명령어로 `0`으로 설정 할 경우 결과 레코드 전체를 한 단위로 출력한다. 기본값: 0 select 결 과의 헤더 유무 SET HEADING ON; SET HEADING OFF; select 결과 헤더 출력유무 기본값: ON select 결 과 칼럼의 출력 사이 즈 조절 SET COLSIZE N;;CHAR, VARCHAR 타입 칼럼의 select 결과 출력 시 출력 값 사이즈 설정 기능 iSQL 이용방법 11 분류 종류 명령어 설명 SQL문 실 행시간 SET TIMING ON; SET TIMING OFF; SQL 명령 실행시간 출력유무 기본값: OFF SQL문 실 행시간 출 력 단위 설 정 SET TIMESCALE SEC; SET TIMESCALE MILSEC; SET TIMESCALE MICSEC; SET TIMESCALE NANSEC; SQL문의 쿼리 수행 시간 단위를 초, 밀 리초, 마이크로초, 나노초 등으로 설정한 다. foreign key 정보 출력의 유 무 SET FOREIGNKEYS ON; SET FOREIGNKEYS OFF; 테이블 구조(DESC)를 볼 때 외래 키 정 보 포함 출력 여부 설정. 기본값: OFF 스크립트 실행 결과 의 출력 유 무 SET TERM ON; SET TERM OFF; 스크립트 명령을 이용하여 생성된 결과를 화면상에 보여줄지를 결정한다. 기본값: ON 실행 계획 트리 출력 ALTER SESSION EXPLAIN PLAN = ON; ALTER SESSION EXPLAIN PLAN = ONLY; ALTER SESSION EXPLAIN PLAN = OFF; SELECT문에 대한 실행 계획 트리의 출 력 여부를 설정한다. 기본값: OFF SELECT 결과 출력 방향 SET VERTICAL ON; SET VERTICAL OFF; 레코드를 조회할 때 이 값을 ON으로 설 정하면, SELECT의 결과가 세로로 보여 진다. 기본값: OFF iSQL 환경변수 값 보기 SHOW LINESIZE 현재의 LINESIZE 값을 보여준다. SHOW COLSIZE 현재의 COLSIZE 값을 보여준다. 12 ALTIBASE5 iSQL User’s Manual 분류 종류 명령어 설명 SHOW LOBOFFSET 현재의 LOBOFFSET 값을 보여준다. SHOW LOBSIZE 현재의 LOBSIZE 값을 보여준다. SHOW PAGESIZE 현재의 PAGESIZE 값을 보여준다. SHOW PLANCOMMIT AUTOCOMMIT OFF 모드에서 명령어를 수행할 때 자동으로 커밋되는 여부를 보 여준다. SHOW QUERYLOGGING DML 문이 실행될 때 $ALTIBASE_HOME/trc/isql_query.log 에 기록되는지 여부를 보여준다. SHOW FEEDBACK현재 설정된 FEEDBACK 값을 보여준 다. SHOW HEADING 현재의 HEADING 설정 여부를 보여준 다. SHOW TERM 현재 TERM 설정 여부를 보여준다. SHOW TIMING 현재의 TIMING 설정 여부를 보여준다. SHOW TIMESCLAE 현재의 SQL문의 쿼리 수행 시간 단위가 무엇으로 설정되었는지를 보여준다. SHOW USER 현재 사용자를 보여준다. SHOW FOREIGNKEYS 현재의 외래 키 설정 여부를 보여준다. SHOW VERTICAL 현재의 SELECT 결과가 세로로 출력되는 지 여부를 보여준다. SHOW ALL 현재 세션의 환경변수 설정 값을 보여준 다. 변수 및 Prepared SQL문 변수 선언 VAR p1 INTEGER; 정수타입의 변수 p1을 선언한다. VARIABLE p2 CHAR(10); CHAR 타입의 변수 p2를 선언한다. 변수에 값 할당 EXECUTE :p1 := 100; 변수 p1에 100을 할당한다. EXEC :p2 := 'abc'; 변수 p2에 ‘abc’를 할당한다. 변수 보기 PRINT VAR[IABLE]; 현재 선언된 변수들을 보여준다. iSQL 이용방법 13 분류 종류 명령어 설명 PRINT p1; 변수 p1의 타입과 값을 보여준다. Prepared SQL문 수 행 PREPARE SQL문; 질의 최적화 과정과 실행 과정을 나누어 Prepared SQL문으로 수행하게 한다. iSQL에서의 SQL문 수행은 기본적으로 최적화와 실행을 한번에 수행하는 Direct Execution 방법이다. iSQL 상에서 두 가지 수행 방법에 대한 속도 및 결과에는 차이가 없으며 Prepared SQL문의 경우 변수를 사용해 값을 바인딩 하여 SQL문 수행이 가능하 다. 사용자 편 의 기능 히스토리 목록 보기 HISTORY; H; 현재 iSQL buffer에 저장되어 있는 명령 어들의 목록을 보여준다. 반복 실행 / 현재 iSQL buffer의 명령어를 반복하여 실행한다. 마지막에 수행한 명령어가 실행된다. 2/ HISTORY 명령에 의해 나타난 목록의 번호가 2인 명령어가 실행된다. 쉘 명령 실 행 ! shell command !다음에 쉘 명령을 입력하면 iSQL에서 바로 쉘 명령이 실행된다. 주석 /* comment */ -- comment 여러 라인 주석 한 라인 주석 도움말 HELP; HELP INDEX; HELP EXIT; 도움말 사용법 명령어 리스트 출력 EXIT 명령어에 대한 설명 14 ALTIBASE5 iSQL User’s Manual i SQL 관련 환경변수 ALTIBASE_HOME 패키지가 설지된 디렉토리를 설정한다. MS 윈도우의 경우, 서버 설치 시에 자동으로 설정되지만, 클라이언트 설치 시에는 서버를 위한 환경 변수와 충돌이 있을 수 있으므로 자동으로 설정되지 않는다. 클라이언트 설치 시에는 사용자가 직접 설정해야 한다. ISQL 사용을 위해 반드시 설정해야 하는 환경변수이다. <예제> Windows (Server): ‘set ALTIBASE_HOME=C:/Program Files/Altibase/Altibase5_Server/altibase_home’, Windows (Client): ‘set ALTIBASE_HOME=C:/Program Files/Altibase/Altibase5_Client/altibase_home_client’) ALTIBASE_PORT_NO 접속할 서버의 포트 번호이다. -PORT 옵션 또는 altibase.properties 를 통해서 지정할 수 있다. 포트 번호 설정의 우선 순위는 -PORT 옵션, 환경변수 ALTIBASE_PORT_NO, altibase.properties 순이며 설정되지 않았을 경우에는 포트 번호 입력 프롬프트가 출력된다. ALTIBASE_NLS_USE 데이터 검색 시 사용자에게 보여주는 문자열이다. y US7ASCII y KO16KSC5601 y MS949 y BIG5 y GB231280 y UTF8 iSQL 이용방법 15 y SHIFT-JIS y EUC-JP -NLS_USE 옵션 또는 altibase.properties 를 통해서 지정할 수도 있다. NLS_USE 설정의 우선 순위는 -NLS_USE 옵션, 환경 변수 ALTIBASE_NLS_USE, altibase.properties 순이며 설정되지 않았을 경우에는 기본 문자 집합(US7ASCII)을 사용한다. ALTIBASE_NLS_NCHAR_LITERAL_REPLACE NCHAR 타입의 문자열을 사용하기 위한 환경변수이다. ALTIBASE_NLS_NCHAR_LITERAL_REPLACE 의 값이 1 일 때 NCHAR 는 데이터베이스 문자 셋으로 변환되지 않고, 서버에서 직접 내셔널 문자 셋으로 변환된다. y 0 : national character 사용 검사를 하지 않음 y 1 : national character가 존재하는지 항상 검사함 클라이언트에서 NCHAR 의 사용 여부를 검사하는 것은 비용이 크게 발생한다. ISQL_CONNECTION 알티베이스를 클라이언트-서버 구조로 운영할 때, 사용자는 응용 시스템의 구성에 적합한 클라이언트-서버 프로토콜을 선택하여 환경 변수를 설정할 수 있다. 알티베이스는 TCP/IP, IPC 와 UNIX DOMAIN 소켓 프로토콜을 제공한다. 알티베이스 서버와 통신하기 위한 기본값은 TCP/IP 프로토콜이다. 단, IPC 프로토콜을 이용할 경우엔 (예: CSH: ‘setenv ISQL_CONNECTION IPC’, SH: ‘ISQL_CONNECTION=IPC; export ISQL_CONNECTION’) 알티베이스 프로퍼티들 중에서 IPC 채널과 관련된 프로퍼티들의 값(IPC_CHANNEL_COUNT)도 함께 고려해야 한다. ISQL_BUFFER_SIZE 쿼리를 저장할 버퍼의 크기를 환경변수를 이용하여 지정할 수 있다. (예: CSH: ‘setenv ISQL_BUFFER_SIZE 128000’, SH: ‘ISQL_BUFFER_SIZE = 128000; export ISQL_BUFFER_SIZE’) 16 ALTIBASE5 iSQL User’s Manual ALTIBASE_DATE_FORMAT Date 데이터 타입인 data 를 select 시 기본 날짜 형식인 YYYY/MM/DD HH:MI:SS 을 환경변수 ALTIBASE_DATE_FORMAT 을 설정하여 새로운 날짜 형식으로 나타낼 수 있다. (예: Born, Korn, 또는 Bash Shell 의 경우: export ALTIBASE_DATE_FORMAT=’DD-MON-YYYY’) ISQL_EDITOR 기본 편집기(/usr/bin/vi )를 바꾸기 위한 환경변수를 설정할 수 있다. (예: CSH: ‘setenv ISQL_EDITOR usr/bin/ed’, SH: ‘ISQL_EDITOR=/usr/bin/ed; export ISQL_EDITOR’) ALTIBASE_IPC_FILEPATH 유닉스 환경에서 서버와 클라이언트가 IPC로 접속할 때 ALTIBASE_HOME이 다른 경우, 유닉스 도메인의 소켓 경로가 일치하지 않아 접속할 수 없다. 이 때 iSQL 옵션 등을 사용해 별도의 설정을 하지 않았다면, ALTIBASE_HOME/trc/cm-ipc 파일을 이용하여 유닉스 도메인 통신이 가능하도록 한다. iSQL 이용방법 17 i SQL 구성 iSQL 사용자들은 특별한 방법으로 iSQL 환경을 설정하고 각 세션에서 그러한 설정을 다시 사용할 수 있다. 예를 들어, OS 파일을 통하여 질의 결과마다 현재 시간을 출력할 수 있도록 사용자가 원하는 출력 서식 형태로 만들 수 있다. 이러한 파일은 다음과 같이 두 가지로 나눌 수 있다. glogin.sql iSQL 은 iSQL 처음 구동 시 초기화 작업을 위하여 DB 관리자에 의해 생성된 전역 스크립트 파일인 glogin.sql 을 지원한다. iSQL 은 임의의 사용자가 iSQL 을 처음 기동하고 알티베이스 연결을 시도할 때 마다 이 스크립트를 실행한다. 전역 파일은 DB 관리자가 모든 사용자들에게 특별한 사이트에서 iSQL 환경을 설정할 수 있도록 한다. 전역 스크립트 파일은 $ALTIBASE_HOME/conf 밑에 위치한다. login.sql iSQL 은 또한 glogin.sql 후에 실행되는 login.sql 파일도 지원한다. 만약, glogin.sql 파일과 login.sql 파일이 모두 존재하는 경우 iSQL 구동 시 glogin.sql 이 실행된 후 login.sql 이 실행되므로 login.sql 에 있는 명령어들로 우선수행 (override) 된다. 하나의 유닉스 계정을 여러 명이 사용할 경우에는 glogin.sql 파일을 개인적인 용도로 수정하기가 불가능할 수도 있다. 이런 경우 일반 사용자는 현재 개인용 작업 디렉토리에서 SQL 명령어들, 스토어드 프로시저, 또는 iSQL 명령어들을 login.sql 파일에 첨가할 수 있다. 사용자가 iSQL 을 구동할 때, iSQL 은 자동적으로 현재 디렉터리에서 login.sql 파일을 찾고, 그 안에 명령어들을 수행한다. login.sql 파일은 iSQL 초기 설정이나 각각의 세션에 대한 동작을 조정할 수 없다. LOGIN 파일 변경 사용자는 임의의 다른 스크립트들처럼 LOGIN 파일을 변경할 수 있다. 다음은 임의의 사용자(user1)가 autocommit mode 를 off 로 변경하고 SQL 문들을 실행하기 위하여 LOGIN 파일을 작성한 18 ALTIBASE5 iSQL User’s Manual 예이다. shell> vi glogin.sql "glogin.sql" 3 lines, 56 characters AUTOCOMMIT ON SET HEADING OFF SELECT sysdate FROM dual; shell> vi login.sql "login.sql" 1 lines, 238 characters AUTOCOMMIT OFF; SET HEADING ON DROP TABLE savept; CREATE TABLE savept(num INTEGER); INSERT INTO savept VALUES(1); SAVEPOINT sp1; INSERT INTO savept VALUES(2); SELECT * FROM savept; ROLLBACK TO SAVEPOINT sp1; SELECT * FROM savept; COMMIT; shell> isql ------------------------------------------- Altibase Client Query utility. Release Version 5.3.3.1 Copyright 2000, ALTIBASE Corporation or its subsidiaries. Al Rights Reserved. ------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : user1 Write Password : ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 Set autocommit on success. -> 먼저 glogin.sql 을 실행 2004/12/28 1:15:03 -> heading off 1 row selected. Set autocommit off success. -> glogin.sql 이 실행된 후 사용자의 현재 작업 디렉토리에서 login.sql 을 실행 Drop success. Create success. 1 row inserted. Savepoint success. -> autocommit mode off 에서만 실행 가능 1 row inserted. SAVEPT.NUM -> heading on --------- 1 2 2 rows selected. Rollback success. SAVEPT.NUM --------- 1 1 row selected. Commit success. iSQL 사용 예 19 2. iSQL 사용 예 이 장은 iSQL 을 이용하여 데이터베이스를 다루는 몇 가지 예를 설명한다. 20 ALTIBASE5 iSQL User’s Manual 로그인 iSQL 유틸리티를 사용하기 위해서는 먼저 로그인 과정을 거쳐야 하는데, 커맨드 라인 상에서 직접 연결 정보를 입력하는 방법과 iSQL 상에서 입력하는 방법이 있다. isql -U userID -P pasword [-SYSDBA] 또는 isql [-SYSDBA] 서버와 연결하기 위한 부가 정보로는 서버 이름(-S), 사용자 ID(-U), 패스워드(-P)가 있다. 사용자 ID 와 패스워드는 대소문자를 구별하지 않는다. SYS 사용자가 관리자 모드로 iSQL 유틸리티를 사용하기 위해서는 - SYSDBA 옵션을 사용한다. SYSDBA 옵션으로 원격에서도 접속이 가능하다. 주의사항 y SYSDBA 모드로 접속하는 것은 한 명의 사용자만 허용된다. 2 명 이상의 사용자가 동시에 SYSDBA 모드로 접속할 수 없다. y 원격에서 SYSDBA 모드로 접속할 수 있지만, DBMS를 구동할 수는 없다. 시스템 권한에 대한 자세한 정보는 SQL User’s Manual 을 참조하기 바란다. iSQL 사용 중 발생하는 에러에 대한 자세한 정보는 Error Message Reference 를 참조하기 바란다. shell> isql -U sys -P manager [-SYSDBA] 또는 shell> isql [-sysdba] ------------------------------------------- Altibase Client Query utility. Release Version 5.3.3.1 Copyright 2000, ALTIBASE Corporation or its subsidiaries. Al Rights Reserved. ------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : sys Write Password : manager -> 화면에는 암호가 나타나지 않는다. ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL(sysdba)> -> iSQL 이 서버와 연결된 상태이며, 여기에서 SQL, iSQL, PSM 명령등을 입력하여 실행할 수 있다. iSQL 사용 예 21 알티베이스의 구동 및 종료 알티베이스의 구동 및 종료는 iSQL 을 사용해 수행한다. 알티베이스 구동 알티베이스를 구동시키기 위해서는 데이터베이스 생성 시와 마찬가지로 우선 isql 을 -sysdba 옵션으로 띄워야 한다. * 알티베이스의 startup 명령어는 알티베이스(isql 포함)를 설치한 유닉스 계정으로만 수행이 가능하다. 다음은 iSQL 를 이용한 알티베이스 구동 예제이며 알티베이스 구동에 대한 자세한 설명은 Administrator’s Manual 제 2 장 알티베이스 구동 및 종료의 내용을 참조한다. shell> isql -s 127.0.0.1 -u sys -p manager -sysdba ------------------------------------------- Altibase Client Query utility. Release Version 5.3.3.1 Copyright 20, ALTIBASE Corporation or its subsidiaries. Al Rights Reserved. ------------------------------------------- ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 [Connected to idle instance] iSQL(sysdba)> startup service Connecting to the DB server... Connected. TRANSITION TO PHASE : PROCESS TRANSITION TO PHASE : CONTROL TRANSITION TO PHASE : META [SM] Recovery Phase - 1 : Preparing Database : Dynamic Memory Version => Paralel Loading [SM] Recovery Phase - 2 : Loading Database [SM] Recovery Phase - 3 : Skipping Recovery Threads... Refining Disk Table [SM] Refine Memory Table : ................................................... [SUCCESS] [SM] Rebuilding Indices [Total Count:100] .................................. [SUCCESS] TRANSITION TO PHASE : SERVICE [CM] Listener started : TCP on port 20300 [CM] Listener started : UNIX [RP] Initialization : [PASS] --- STARTUP Process SUCCESS -- Command execute success. 22 ALTIBASE5 iSQL User’s Manual 알티베이스 종료 현재 구동중인 알티베이스 서버를 종료하려면 SHUTDOWN 명령어를 사용한다. 다음은 iSQL 를 이용한 알티베이스 종료 예제이며 알티베이스 종료에 대한 자세한 설명은 Administrator’s Manual 제 2 장 알티베이스 구동 및 종료의 내용을 참조한다. iSQL(sysdba)> shutdown normal Ok..Shutdown Proceeding.... TRANSITION TO PHASE : Shutdown Altibase [RP] Finalization : PASS shutdown normal success. iSQL 사용 예 23 접속 연결 및 해제 접속 연결 명시된 사용자 ID 로 알티베이스에 연결한다. 첫 연결 실패 시 CONNECT 명령어는 사용자 ID 나 패스워드를 다시 프롬프트(prompt) 하지 않는다. CONNECT userID/password [AS SYSDBA]; userID/password 알티베이스에 연결하고자 하는 사용자의 id 와 패스워드 AS SYSDBA AS 절은 SYS 사용자가 sysdba 관리자 모드로 서버에 접속하는 것을 허용한다. CONNECT 가 성공하면 현재의 세션을 종료하고 명시된 사용자 ID 와 패스워드, altibase.properties 정보로 서버와 연결한다. 따라서 연결 전의 세션 정보는 없어진다. 예를 들어 altibase.properties 의 AUTOCOMMIT 모드가 true 였고, iSQL 에서 AUTOCOMMIT 모드를 false 로 변경하여 쿼리를 수행하다가 이 SQL 문을 수행하였다면 AUTOCOMMIT 모드는 CONNECT 시 altibase.properties 에 의하여 true 로 변경된다. CONNECT 가 실패한다면 이전의 세션은 종료된 상태이고 서버와의 연결이 끊어진 상태이다. 즉, 이후에 수행되는 SQL 문의 결과는 모두 “Not connected.” 이다. 만약, 다시 서버와 연결을 시도할 때는 CONNECT userID/password [AS SYSDBA];를 수행한다. CONNECT userID/password [AS SYSDBA]; shell> isql ------------------------------------------- Altibase Client Query utility. Release Version 5.3.3.1 Copyright 20, ALTIBASE Corporation or its subsidiaries. Al Rights Reserved. ------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : SYS Write Password : ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL> SHOW USER; User : SYS iSQL> CREATE USER altiadmin IDENTIFIED BY altiadmin1234; Create success. 24 ALTIBASE5 iSQL User’s Manual iSQL> CONNECT altiadmin/altiadmin1234; Connect success. iSQL> SHOW USER; User : ALTIADMIN iSQL> CREATE TABLE altitbl(i1 INTEGER, i2 CHAR(5)); Create success. iSQL> SELECT * FROM tab; TABLE NAME TYPE ------------------------------------ ALTITBL TABLE 1 row selected. iSQL> CONNECT sys/manager; Connect success. iSQL> SHOW USER; User : SYS iSQL> CREATE TABLE systbl(i1 INTEGER, i2 CHAR(5)); Create success. iSQL> SELECT * FROM tab; USER NAME TABLE NAME TYPE ----------------------------------- SYSTEM_ SYS_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINTS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINT_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_DATABASE_ SYSTEM TABLE SYSTEM_ SYS_GRANT_OBJECT_ SYSTEM TABLE SYSTEM_ SYS_GRANT_SYSTEM_ SYSTEM TABLE SYSTEM_ SYS_INDEX_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_INDICES_ SYSTEM TABLE SYSTEM_ SYS_PRIVILEGES_ SYSTEM TABLE SYSTEM_ SYS_PROCEDURES_ SYSTEM TABLE SYSTEM_ SYS_PROC_PARAS_ SYSTEM TABLE SYSTEM_ SYS_PROC_PARSE_ SYSTEM TABLE SYSTEM_ SYS_PROC_RELATED_ SYSTEM TABLE SYSTEM_ SYS_REPLICATIONS_ SYSTEM TABLE SYSTEM_ SYS_REPL_HOSTS_ SYSTEM TABLE SYSTEM_ SYS_REPL_ITEMS_ SYSTEM TABLE SYSTEM_ SYS_TABLES_ SYSTEM TABLE SYSTEM_ SYS_TBS_USERS_ SYSTEM TABLE SYSTEM_ SYS_USERS_ SYSTEM TABLE SYSTEM_ SYS_VIEWS_ SYSTEM TABLE SYSTEM_ SYS_VIEW_PARSE_ SYSTEM TABLE SYSTEM_ SYS_VIEW_RELATED_ SYSTEM TABLE SYSTEM_ SYS_XA_HEURISTIC_TRANS_ SYSTEM TABLE ALTIADMIN ALTITBL TABLE SYS CUSTOMER TABLE SYS DEPARTMENT TABLE SYS DUAL TABLE SYS EMPLOYEE TABLE SYS GOODS TABLE SYS ORDERS TABLE SYS SAVEPT TABLE SYS SYSTBL TABLE 32 rows selected. 접속 해제 iSQL 사용 예 25 현재 세션을 종료하고 서버와의 연결을 끊는다. 이후에 수행되는 SQL 문의 결과는 모두 “Not connected.”이며, 다시 서버와 연결을 시도할 때는 CONNECT userID/password;를 수행한다. DISCONNECT; iSQL> INSERT INTO systbl VALUES(1, 'A1'); 1 row inserted. iSQL> INSERT INTO systbl VALUES(2, 'A2'); 1 row inserted. iSQL> SELECT * FROM systbl; SYSTBL.I1 SYSTBL.I2 ------------------ 1 A1 2 A2 2 rows selected. iSQL> DISCONNECT; Disconnect success. iSQL> INSERT INTO systbl VALUES(3, 'A3'); Not connected. iSQL> SELECT * FROM systbl; Not connected. iSQL> CONNECT sys/manager; Connect success. 26 ALTIBASE5 iSQL User’s Manual 데이터베이스 객체 정보 조회 성능 뷰 조회 성능 뷰는 서버의 상태 및 데이터베이스 정보를 조회할 수 있는 데이터 딕셔너리 테이블의 일종으로 알티베이스가 제공하는 성능 뷰의 목록을 확인하기 위해서는 다음 명령어를 사용한다. iSQL> SELECT * FROM V$TAB; TABLE NAME TYPE ------------------------------------ V$ALCOLUMN PERFORMANCE VIEW V$ARCHIVE PERFORMANCE VIEW V$BUFPOL_STAT PERFORMANCE VIEW V$DATABASE PERFORMANCE VIEW V$DATAFILES PERFORMANCE VIEW V$DISKGC PERFORMANCE VIEW V$DISKTBL_INFO PERFORMANCE VIEW V$FLUSHINFO PERFORMANCE VIEW . . 알티베이스가 제공하는 전체 성능 뷰의 목록과 칼럼의 의미 등은 Administrator’s Manual 의 제 3 장 데이터 딕셔너리의 자세한 설명을 참조한다. 성능 뷰의 목록을 조회한 후 특정 성능 뷰의 데이터는 일반 테이블 조회와 동일한 SELECT 문을 사용하여 조회할 수 있으며 조인 등을 사용해 다양한 형태로 결과를 출력할 수 있다. 테이블 목록 보기 데이터베이스에 존재하는 모든 테이블에 대한 정보를 알고 싶으면 아래와 같은 명령을 사용하면 된다. sys_tables_은 알티베이스에서 제공하는 데이터베이스 카탈로그 정보를 수록하는 시스템 내부 테이블이다. iSQL> SELECT * FROM system_.sys_tables_; iSQL> SELECT * FROM tab; -> 이 명령어는 iSQL 에서만 사용가능. USER NAME TABLE NAME TYPE ----------------------------------- SYSTEM_ SYS_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINTS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINT_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_DATABASE_ SYSTEM TABLE iSQL 사용 예 27 SYSTEM_ SYS_GRANT_OBJECT_ SYSTEM TABLE SYSTEM_ SYS_GRANT_SYSTEM_ SYSTEM TABLE SYSTEM_ SYS_INDEX_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_INDICES_ SYSTEM TABLE SYSTEM_ SYS_PRIVILEGES_ SYSTEM TABLE SYSTEM_ SYS_PROCEDURES_ SYSTEM TABLE SYSTEM_ SYS_PROC_PARAS_ SYSTEM TABLE SYSTEM_ SYS_PROC_PARSE_ SYSTEM TABLE SYSTEM_ SYS_PROC_RELATED_ SYSTEM TABLE SYSTEM_ SYS_REPLICATIONS_ SYSTEM TABLE SYSTEM_ SYS_REPL_HOSTS_ SYSTEM TABLE SYSTEM_ SYS_REPL_ITEMS_ SYSTEM TABLE SYSTEM_ SYS_TABLES_ SYSTEM TABLE SYSTEM_ SYS_TBS_USERS_ SYSTEM TABLE SYSTEM_ SYS_USERS_ SYSTEM TABLE SYSTEM_ SYS_VIEWS_ SYSTEM TABLE SYSTEM_ SYS_VIEW_PARSE_ SYSTEM TABLE SYSTEM_ SYS_VIEW_RELATED_ SYSTEM TABLE SYSTEM_ SYS_XA_HEURISTIC_TRANS_ SYSTEM TABLE ALTIADMIN ALTITBL TABLE SYS CUSTOMER TABLE SYS DEPARTMENT TABLE SYS DUAL TABLE SYS EMPLOYEE TABLE SYS GOODS TABLE SYS ORDERS TABLE SYS SAVEPT TABLE SYS SYSTBL TABLE 32 rows selected. 테이블 구조 보기 사용자가 생성한 테이블에 관한 정보를 알고 싶으면 아래와 같은 명령을 사용한다. DESC table_name; -> table_name: 테이블 정보(테이블 구조)를 알 고 싶 은 테 이블명. iSQL> DESC department; [ TABLESPACE : SYS_TBS_MEMORY ] [ ATRIBUTE ] -----------------------------------NAME TYPE IS NUL ----------------------------------- DNO BYTE(2) FIXED NOT NULL DNAME CHAR(20) FIXED NOT NULL DEP_LOCATION CHAR(9) FIXED MGR_NO INTEGER FIXED [ INDEX ] ----------------------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------- 28 ALTIBASE5 iSQL User’s Manual _SYS_IDX_ID_62 BTRE UNIQUE DNO ASC [ PRIMARY KEY ] ----------------------------------- DNO [ FOREIGN KEYS ] 1 ----------------------------------- 시퀀스 정보 보기 데이터베이스에 존재하는 모든 시퀀스에 대한 정보를 알고 싶으면 아래와 같은 명령을 사용하면 된다. SELECT * FROM seq; iSQL> CONNECT sys/manager; Connect success. iSQL> CREATE USER user1 IDENTIFIED BY user1; Create success. iSQL> CONNECT user1/user1; Connect success. iSQL> CREATE SEQUENCE seq1 MAXVALUE 100 CYCLE; Create success. iSQL> CREATE SEQUENCE seq2; Create success. iSQL> CONNECT sys/manager; Connect success. iSQL> CREATE SEQUENCE seq2 START WITH 20 INCREMENT BY 30; Create success. iSQL> CREATE SEQUENCE seq3 CACHE 40; Create success. iSQL> SELECT * FROM seq; -> SYS 계정으로 데이터베이스에 접속한 경우 생성된 모든 sequence 들의 정보를 출력한다. USER_NAME ----------------------------------- SEQUENCE_NAME CURENT_VALUE INCREMENT_BY ------------------------------------ MIN_VALUE MAX_VALUE CYCLE CACHE_SIZE ------------------------------------ SYS SEQ2 20 30 1 9223372036854775806 NO 20 SYS SEQ3 1 1 1 9223372036854775806 NO 40 USER1 1 iSQL 환경변수 FOREIGNKEYS 가 ON 으로 설정되어 있는 경우 외래 키 정보가 보여진다. iSQL 사용 예 29 SEQ1 1 1 1 10 YES 20 USER1 SEQ2 1 1 1 9223372036854775806 NO 20 4 rows selected. iSQL> CONNECT user1/user1; Connect success. iSQL> SELECT * FROM seq; -> user1 이 생성한 모든 sequence 들의 정보를 출력한다. SEQUENCE_NAME CURENT_VALUE INCREMENT_BY ------------------------------------ MIN_VALUE MAX_VALUE CYCLE CACHE_SIZE ------------------------------------ SEQ1 1 1 1 10 YES 20 SEQ2 1 1 1 9223372036854775806 NO 20 2 rows selected. 30 ALTIBASE5 iSQL User’s Manual 트랜잭션 제어 트랜잭션 모드 설정 한 번 명령어를 수행할 때마다 자동으로 commit 할 것인지 여부를 결정하는 기능이다. iSQL> AUTOCOMMIT OFF; -> 사용자가 commit 하기 전에는 commit 되지 않음 Set autocommit off success. iSQL> AUTOCOMMIT ON; -> 명령어를 수행할 때마다 자동으로 commit Set autocommit on success. 기타 SET 기능 SET PLANCOMIT ON/OFF; autocommit off (non-autocommit) 모드에서 explain plan 이 on (또는 only) 조건일 때, desc, select * from tab; 또는 select * from sequence_tblName; 등과 같은 명령어를 수행했을 때 자동으로 commit 할지를 결정하는 기능이다. 기본값은 OFF 이다. * 참고: 기본값이 OFF 이므로 autocommit off 세션에서 explain plan 이 on (또는 only) 조건일 때 알티베이스는 위의 명령어(desc, select * from tab; 또는 select * from sequence_tblName;)를 자동 commit 하지 않고 오류 메시지를 발생한다. iSQL 사용 예 31 파일 관리 작업 결과 저장 iSQL 을 통해 작업한 결과를 지정한 파일로 저장하는 기능을 제공한다. 다음과 같이 spool 명령을 이용하면 지정한 book.txt 파일에 작업한 결과가 저장된다. 이 기능을 해제하고 싶으면 SPOOL OFF 명령을 사용한다. iSQL> SPOOL book.txt Spool start. [book.txt] -> 이후의 모든 명령과 그 결과들이 book.txt 파일에 저장된다. 이 파일은 현재 디렉토리에 생성된다. iSQL> SPOOL OF Spool Stop -> 더 이상 명령과 그 결과들을 파일에 저장하지 않는다. 스크립트 실행 @ 명령어 @file_name[.sql] 또는 START file_name[.sql] iSQL 명령어들을 명시된 스크립트에 저장하여 한번에 순차적으로 실행한다. file_name[.sql]: 수행 될 스크립트, 확장자를 생략하면 iSQL 은 기본 명령어 파일 확장자(.sql)로 간주한다. @ 명령어는 START 와 같은 기능을 갖는다. y 스크립트 내에 exit 또는 quit 명령어는 iSQL을 종료시킨다. y 스크립트에는 일반적으로 SQL문, iSQL 명령어, 또는 Stored Procedure 블록 등이 포함될 수 있다. 다음은 $ALTIBASE_HOME/sample 디렉토리에 있는 스크립트 schema.sql 을 현재 디렉토리에서 수행하는 예이다. iSQL> START schema.sql <- 파일내의 sql 문이 실행된다. 또는 iSQL> @schema.sql 스크립트 수행 시 @ 명령어 다음에 사용자 계정의 알티베이스 홈 디렉토리($ALTIBASE_HOME)를 의미하는 ?를 명시하여 스크립트를 수행할 수 있다. 32 ALTIBASE5 iSQL User’s Manual 다음은 $ALTIBASE_HOME/sample 디렉토리에 있는 스크립트 schema.sql 을 altibase_home 디렉토리에서 수행하는 예이다. iSQL> @?/sample/schema.sql ? 는 다음 iSQL 명령어에서도 적용된다: edit, save, load, spool, start * 스크립트 파일 내에서 주석의 사용은 -- 또는 /* */으로 가능하다. --는 이 표시 다음부터 그 라인의 끝까지를 주석으로 처리하고 여러 라인을 주석으로 처리할 때는 주석부분을 /*와 */ 사이에 넣으면 된다. @@ 명령어 @@file_name[.sql] 명시된 스크립트를 수행한다. @@ 명령어는 @ 명령어와 유사한 기능을 갖는다. 이 명령어는 수행될 스크립트와 같은 경로에서 명시된 스크립트를 찾는 기능을 가지고 있기 때문에 내포형 스크립트를 수행하는데 유용하다. file_name[.sql]:수행될 내포형 스크립트를 나타낸다. 확장자를 생략하면 iSQL 은 기본 명령어 파일 확장자(.sql)로 간주한다. @@ 명령어는 다음과 같은 용도로 쓰일 수 있다. y 사용자가 임의의 스크립트를 작성할 때 @@file_name.sql을 입 력하면, iSQL은 file_name.sql을 호출한 스크립트와 동일한 디 렉터리에서 file_name.sql을 수행한다. 만일 그런 파일이 존재 하지 않으면, iSQL은 오류 메시지를 보여준다. y 사용자가 iSQL 상에 대화 형식으로 @@file_name.sql을 입력 하면, iSQL 상에서 @file_name.sql을 실행한 결과와 동일하다. y 스크립트에는 일반적으로 SQL문, iSQL 명령어, 또는 Stored Procedure 블록 등이 포함될 수 있다. y 스크립트 내에 exit 또는 quit 명령어는 iSQL을 종료시킨다. 다음은 $ALTIBASE_HOME/sample 디렉토리에 schema.sql 을 내포한 스크립트 a.sql 을 altibase_home 디렉토리에서 수행하는 예이다. iSQL> @sample/a.sql * 참고: shell> cat a.sql @@schema.sql * 참고: 이 후의 예제는 위의 스크립트를 실행해서 생성된 테이블들을 (부록 Schema 참고) 가지고 iSQL 환경에서 질의에 따른 결과를 편집한 것이다. iSQL 사용 예 33 SQL 문의 저장 현재 isql buffer 에 있는 명령어 중 가장 마지막에 수행한 명령어를 파일로 저장하는 기능이다. 이 파일은 현재 디렉토리에 생성된다. iSQL> SELECT * FROM book; iSQL> SAVE book.sql; -> book.sql 파일에 ‘SELECT * FROM book;’가 저장된다. Save completed. SQL 문의 로드 지정한 파일의 명령어를 isql 버퍼의 마지막으로 로드되는 기능이다. iSQL> LOAD book.sql iSQL> SELECT * FROM book; Load completed. iSQL> / -> SELECT * FROM book; 문이 실행된 것을 볼 수 있다. DML 문 저장 INSERT, UPDATE, DELETE, MOVE 등의 DML문을 $ALTIBASE_HOME/trc/isql_query.log에 기록한다. 이 기능을 설정하려면 SET QUERYLOGGING 을 ON 으로 하고, 해제하려면 OFF 하면 된다. iSQL> SET QUERYLOGGING ON; -> 이후의 모든 DML 문이 $ALTIBASE_HOME/trc/isql_query.log 에 저장된다. iSQL> CREATE TABLE T1 ( I1 INTEGER ); Create success. iSQL> INSERT INTO T1 VALUES ( 1 ); 1 row inserted. iSQL> UPDATE T1 SET I1 = 2; 1 row updated. iSQL> SELECT * FROM T1; I1 --------- 2 1 row selected. iSQL> DELETE FROM T1; 1 row deleted. iSQL> DROP TABLE T1; Drop success. iSQL> EXIT % cat $ALTIBASE_HOME/trc/isql_query.log -> SET QUERYLOGGING ON 으로 실행한 후의 DML 을 확인할 수 있다. 34 ALTIBASE5 iSQL User’s Manual [2009/09/16 10:36:14] [127.0.0.1:25310 SYS] INSERT INTO T1 VALUES ( 1 ) [2009/09/16 10:36:25] [127.0.0.1:25310 SYS] UPDATE TABLE T1 SET I1 = 2 [2009/09/16 10:36:31] [127.0.0.1:25310 SYS] UPDATE T1 SET I1 = 2 [2009/09/16 10:36:37] [127.0.0.1:25310 SYS] DELETE FROM T1 질의문 편집 최근 질의문 편집 iSQL 상에서 파일을 생성하고 편집할 수 있도록 편집기 ed 를 제공한다. 인수 없이 ed 를 실행하면 가장 최근 실행된 질의문이 iSQL.buf 라는 임시 파일로 생성되며 다음과 같은 화면을 볼 수 있다. (지면을 절약하기 위해 몇 줄만 화면으로 표시한다.) iSQL> ed 기존 파일 편집 존재하는 파일을 편집하기 위해서는 iSQL 상에서 그 파일 이름을 넣으면 된다. 화면이 초기화 되어 있을 때 빈 줄 표시는 ~(tilde) 문자로 표시된다. iSQL> ed myquery[.sql] 히스토리 목록에 있는 질의문 편집 히스토리 목록에서 해당 번호를 사용하여 이전에 수행했던 명령을 편집할 수 있다. 즉, 해당 번호의 질의문이 iSQL.buf 임시 파일로 SELECT * FROM EMPLOYE; ~ ~ ~ "iSQL.buf" Have no saved command. iSQL> ed myquery.sql "myquery.sql" INSERT INTO EMPLOYE(ENO, ENAME, SEX) VALUES(21, 'MSJUNG', 'F'); INSERT INTO EMPLOYE(ENO, ENAME, SEX, JOIN_DATE) VALUES(22, 'MHJUNG', 'F', TO_DATE('2001-11-19 00:00:00', 'YYYY- MM-DD HH:MI:SS')); ~ ~ "myquery.sql" iSQL 사용 예 35 생성되어 편집을 할 수 있으며, 편집 결과는 마지막 히스토리로 등록되어 가장 마지막 명령을 재수행하는 ‘/’ 으로도 실행 가능하다. iSQL> h 1 : SELECT * FROM CUSTOMER; 2 : SELECT * FROM EMPLOYEE; iSQL> 2ed or iSQL> 2 ed * 파일을 편집하기 위해서 명령 줄에 인수 2 라는 파일 이름을 넣은 (iSQL> ed 2) 명령어와 구분 필요 편집 후 iSQL> h <- 현재 isql buffer 에 있는 히스토리 목록 1 : SELECT * FROM CUSTOMER; 2 : SELECT * FROM EMPLOYEE; : SELECT * FROM ORDERS; <- 2 ed 명령어에 의해 편집된 질의문이 히스토리 목록에 가장 마지막 명령어로 저장된다. iSQL> / <- 마지막에 수행한 명령어가 실행된다. ORDERS.ONO ORDERS.ORDER_DATE ORDERS.ENO ORDERS.CNO ----------------------------------- ORDERS.GNORDERS.QTY ORDERS.ARIVAL_DATE ORDERS.PROCESSING ----------------------------------- 0011290007 20/11/29 00:00:00 12 711111- 1431202 A111100002 70 2000/12/02 00:0:00 C 0011290011 20/11/29 00:00:00 12 761001- 1000001 E111100001 100 2000/12/05 00:00:00 D … 0012310012 20/12/31 00:00:00 19 730828- 1201145 C1111001 250 2001/01/03 00:00:00 O 30 rows selected. 기본 편집기를 위한 환경변수 기본 편집기(/usr/bin/vi )를 바꾸기 위한 환경변수는 ISQL_EDITOR 을 설정하면 된다. (예: CSH: ‘setenv ISQL_EDITOR usr/bin/ed’, SH: ‘ISQL_EDITOR=/usr/bin/ed; export ISQL_EDITOR’) SELECT * FROM ORDERS; ~ "iSQL.buf" SELECT * FROM EMPLOYE; ~ ~ "iSQL.buf" 36 ALTIBASE5 iSQL User’s Manual iSQL 사용 예 37 SELECT 결과 포매팅 SELECT 문에 대한 결과들을 사용자가 보기 좋게 포매팅하는 기능이다. y LINESIZE SELECT 문 결과 출력시 디스플레이되는 한 라인의 사이즈를 설정한다. 10 에서 200 사이의 값이어야 한다. y LOBSIZE Clob 칼럼을 SELECT 문으로 조회 시 디스플레이 되는 데이터 의 길이를 설정한다. y LOBOFFSET Clob 칼럼을 SELECT 문으로 조회할 때 디스플레이 되는 Clob 데이터의 시작 위치를 설정한다. y FEEDBACK SELECT 문 결과 출력시 선택된 결과 건수를 출력한다. y PAGESIZE 결과 row들을 몇 개 단위로 보여줄 것인지 결정한다. y HEADING 결과에 헤더를 출력할지 결정한다. y COLSIZE SELECT 문 결과 출력시 디스플레이되는 CHAR, VARCHAR 타입 칼럼의 사이즈를 설정하여, 길이가 긴 문자열을 포함하는 칼럼이 존재할 경우 인식을 용이하게 한다. SET LINESIZE iSQL> SET LINESIZE 100; -> 한 라인의 디스플레이 크기를 100 으로 설정한다. iSQL> SELECT * FROM employee; EMPLOYEE.ENO EMPLOYEE.ENAME EMPLOYE.EMP_JOB EMPLOYE.EMP_TEL EMPLOYE.DNO ----------------------------------- EMPLOYE.SALARY EMPLOYEE.SEX EMPLOYEE.BIRTH EMPLOYE.JOIN_DATE EMPLOYEE.STATUS ----------------------------------- 1 SWNO CEO 019562365 M R 2 HJNO DESIGNER 013654540 C02 15000 F 1219 1999/11/18 00:00:00 H . 20 rows selected. 38 ALTIBASE5 iSQL User’s Manual SET LOBSIZE Clob 칼럼의 데이터를 SELECT 문으로 조회하기 위해서 우선 트랜잭션 모드를 AUTOCOMMIT OFF 로 설정해야 한다. CREATE TABLE C1(I1 INTEGER, I2 CLOB); INSERT INTO C1 VALUES(1, 'A123456789'); INSERT INTO C1 VALUES(2, 'A1234'); INSERT INTO C1 VALUES(3, 'A12345'); INSERT INTO C1 VALUES(4, 'A1234567890123'); iSQL> autocommit off; -> CLOB 칼럼 조회를 위해 트랜잭션 모드를 OFF 로 설정한다. Set autocommit off success. iSQL> select * from c1; C1.I1 C1.I2 --------------------- 1 A123456789 2 A1234 3 A12345 4 A1234567890123 4 rows selected. iSQL> set lobsize 10; -> CLOB 칼럼의 데이터를 select 문으로 조회할 때 화면에 나타나는 데이터 길이를 설정한다. iSQL> select * from c1; C1.I1 C1.I2 ------------------ 1 A123456789 2 A1234 3 A12345 4 A123456789 4 rows selected. SET LOBOFFSET Clob 칼럼의 데이터를 SELECT 문으로 조회하기 위해서 우선 트랜잭션 모드를 AUTOCOMMIT OFF 로 설정해야 한다. CREATE TABLE C1(I1 INTEGER, I2 CLOB); INSERT INTO C1 VALUES(1, 'A123456789'); INSERT INTO C1 VALUES(2, 'A1234'); INSERT INTO C1 VALUES(3, 'A12345'); INSERT INTO C1 VALUES(4, 'A1234567890123'); iSQL> autocomit of; Set autocommit off success. iSQL> set loboffset 4; -> CLOB 칼럼의 데이터를 select 문으로 조회할 때 화면에 나타나는 데이터의 시작 위치를 설정한다. iSQL> select * from c1; C1.I1 C1.I2 ------------------ 1 456789 2 4 iSQL 사용 예 39 3 45 4 4567890123 4 rows selected. SET FEEDBACK SET FEEDBACK ON|OFF|n ON: SELECT 문 수행 후 결과 데이터 건수를 출력한다. OFF: SELECT 문 수행 후 결과 데이터 건수를 출력하지 않는다. n: 결과 건수가 n 이상일 경우에만 출력한다. iSQL> SET FEDBACK ON; iSQL> SELECT * FROM employe WHERE ENO < 3; EMPLOYEE.ENO EMPLOYEE.ENAME EMPLOYE.EMP_JOB EMPLOYE.EMP_TEL EMPLOYE.DNO ----------------------------------- EMPLOYE.SALARY EMPLOYEE.SEX EMPLOYEE.BIRTH EMPLOYE.JOIN_DATE EMPLOYEE.STATUS ----------------------------------- 1 SWNO CEO 019562365 M R 2 HJNO DESIGNER 013654540 C02 15000 F 1219 1999/11/18 00:00:00 H 2 rows selected. SET PAGESIZE iSQL> SET PAGESIZE 2; -> 결과 row 를 2 개 단위로 보여준다. iSQL> SELECT * FROM employee; EMPLOYEE.ENO EMPLOYEE.ENAME EMPLOYE.EMP_JOB ----------------------------------- EMPLOYE.EMP_TEL EMPLOYE.DNO EMPLOYEE.SALARY EMPLOYEE.SEX ----------------------------------- EMPLOYE.BIRTH EMPLOYE.JOIN_DATE EMPLOYEE.STATUS ----------------------------------- 1 SWNO CEO 019562365 M R 2 HJNO DESIGNER 013654540 C02 150 F 1219 1999/11/18 00:00:00 H EMPLOYEE.ENO EMPLOYEE.ENAME EMPLOYE.EMP_JOB ----------------------------------- EMPLOYE.EMP_TEL EMPLOYE.DNO EMPLOYEE.SALARY EMPLOYEE.SEX ----------------------------------- EMPLOYE.BIRTH EMPLOYE.JOIN_DATE EMPLOYEE.STATUS ----------------------------------- 3 HSCHOI ENGINER 40 ALTIBASE5 iSQL User’s Manual 0162581369 D001 2000000 M 0226 2000/01/11 00:00:00 H 4 KSKIM ENGINER 0182563984 D001 1800000 M 0730 . . . 20 rows selected. iSQL> SET PAGESIZE 0; -> 결과 전체를 한 단위로 보여준다. iSQL> SELECT * FROM employee; EMPLOYEE.ENO EMPLOYEE.ENAME EMPLOYE.EMP_JOB ----------------------------------- EMPLOYE.EMP_TEL EMPLOYE.DNO EMPLOYEE.SALARY EMPLOYEE.SEX ----------------------------------- EMPLOYE.BIRTH EMPLOYE.JOIN_DATE EMPLOYE.STATUS ----------------------------------- 1 SWNO CEO 019562365 M R 2 HJNO DESIGNER 013654540 C02 150 F 1219 1999/11/18 00:00:00 H . . . 20 rows selected. SET HEADING iSQL> SET HEADING OFF; -> 결과에 헤더를 출력하지 않는다. iSQL> SELECT * FROM employee; 1 SWNO CEO 019562365 M R 2 HJNO DESIGNER 013654540 C02 150 F 1219 1999/11/18 00:00:00 H . . . 20 rows selected. iSQL> SET HEADING ON; -> 결과에 헤더를 출력한다. iSQL> SELECT * FROM employee; EMPLOYEE.ENO EMPLOYEE.ENAME EMPLOYE.EMP_JOB ----------------------------------- EMPLOYE.EMP_TEL EMPLOYE.DNO EMPLOYEE.SALARY EMPLOYEE.SEX iSQL 사용 예 41 ----------------------------------- EMPLOYE.BIRTH EMPLOYE.JOIN_DATE EMPLOYEE.STATUS ----------------------------------- 1 SWNO CEO 019562365 M R 2 HJNO DESIGNER 013654540 C02 150 F 1219 1999/11/18 00:00:00 H . . . 20 rows selected. SET COLSIZE iSQL> CREATE TABLE LOCATION( ID INTEGER, NAME CHAR(20), ADDRESS VARCHAR(500), PHONE CHAR(20)); Create success. iSQL> INSERT INTO LOCATION VALUES(1, 'ALTIBASE', 'Inyoung Bldg, 5fl 4-11 Youido-dong Youngdungpo-qu seoul, 150-890. Korea', '82- 769-7500'); 1 row inserted. CHAR 또는 VARCHAR 타입의 한 칼럼 사이즈를 7 로 설정하여 조회하는 예제이다. iSQL> SET COLSIZE 7; iSQL> SELECT ID,NAME,ADDRESS,PHONE FROM LOCATION; ID NAME ADRES PHONE ----------------------------------- 1 ALTIBAS Inyoung 82-2-76 E Bldg, 9-750 5fl 4- 1 Youi do-dong Youngd ungpo-q u seoul , 150-8 90. Kor ea 1 row selected. 42 ALTIBASE5 iSQL User’s Manual 출력 옵션 제어 실행 시간 설정 SQL 문을 실행하는데 걸린 시간을 알려주는 기능이다. iSQL> SET TIMING ON; -> 명령 실행 후 마지막 라인에 실행시간을 출력한다. iSQL> SELECT * FROM employee; EMPLOYE.ENO EMPLOYE.ENAME EMPLOYE.EMP_JOB ----------------------------------- EMPLOYE.EMP_TEL EMPLOYE.DNO EMPLOYEE.SALARY EMPLOYEE.SEX ----------------------------------- EMPLOYE.BIRTH EMPLOYE.JOIN_DATE EMPLOYE.STATUS ----------------------------------- 1 SWNO CEO 019562365 M R 2 HJNO DESIGNER 0113654540 C02 1500000 F 1219 1999/11/18 00:00:00 H . . . 20 rows selected. elapsed time : 0.01 iSQL> SET TIMING OFF; -> 실행시간을 출력하지 않는다. 실행 시간 출력 단위 설정 SQL문의 쿼리 수행 시간 단위를 설정하는 기능이다. 설정할 수 있는 단위는 다음과 같다. y 초 y 밀리초 y 마이크로초 y 나노초 iSQL(sysdba)> SET TIMESCALE SEC; iSQL(sysdba)> SELECT * FROM T1, T2 LIMIT 200; I1 I1 --------------------- 1 1 ... 200 rows selected. elapsed time : 0.01 iSQL(sysdba)> SET TIMESCALE MILSEC; iSQL(sysdba)> SELECT * FROM T1, T2 LIMIT 200; iSQL 사용 예 43 I1 I1 --------------------- 1 1 ... 200 rows selected. elapsed time : 5.88 iSQL(sysdba)> SET TIMESCALE MICSEC; iSQL(sysdba)> SELECT * FROM T1, T2 LIMIT 200; I1 I1 --------------------- 1 1 ... 200 rows selected. elapsed time : 5521.00 iSQL(sysdba)> SET TIMESCALE NANSEC; iSQL(sysdba)> SELECT * FROM T1, T2 LIMIT 200; I1 I1 --------------------- 1 1 ... 200 rows selected. elapsed time : 5437000.00 외래 키 정보 출력 DESC 명령어를 사용하여 테이블 구조를 볼 때 외래 키에 대한 정보를 보여주는 기능이다. iSQL> SET FOREIGNKEYS ON; -> 외래 키에 대한 정보를 출력한다. iSQL> DESC employee; [ TABLESPACE : SYS_TBS_MEMORY ] [ ATRIBUTE ] ----------------------------------- NAME TYPE IS NULL ----------------------------------- ENO INTEGER FIXED NOT NULL ENAME CHAR(20) FIXED NOT NULL EMP_JOB CHAR(15) FIXED EMP_TEL NIBLE(15) FIXED DNO BYTE(2) FIXED SALARY NUMERIC(10, 2) FIXED SEX CHAR(1) FIXED NOT NULL BIRTH BYTE(2) FIXED JOIN_DATE DATE FIXED STATUS CHAR(1) FIXED [ INDEX ] ----------------------------------- 44 ALTIBASE5 iSQL User’s Manual NAME TYPE IS UNIQUE COLUMN ----------------------------------- EMP_IDX1 BTRE DNO ASC _SYS_IDX_ID_72 BTRE UNIQUE ENO ASC [ PRIMARY KEY ] ----------------------------------- ENO [ FOREIGN KEYS ] ----------------------------------- iSQL> SET FOREIGNKEYS OFF; -> 외래 키에 대한 정보를 출력하지 않는다. iSQL> DESC employee; [ TABLESPACE : SYS_TBS_MEMORY ] [ ATRIBUTE ] ----------------------------------- NAME TYPE IS NULL ----------------------------------- ENO INTEGER FIXED NOT NULL ENAME CHAR(20) FIXED NOT NULL EMP_JOB CHAR(15) FIXED EMP_TEL NIBLE(15) FIXED DNO BYTE(2) FIXED SALARY NUMERIC(10, 2) FIXED SEX CHAR(1) FIXED NOT NULL BIRTH BYTE(2) FIXED JOIN_DATE DATE FIXED STATUS CHAR(1) FIXED [ INDEX ] ----------------------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------- EMP_IDX1 BTRE DNO ASC _SYS_IDX_ID_72 BTRE UNIQUE ENO ASC [ PRIMARY KEY ] ----------------------------------- ENO 스크립트 실행 결과 출력 스크립트 명령을 이용하여 생성된 결과의 출력을 조절하는 기능이다. iSQL 사용 예 45 OFF 기능은 iSQL 상에서 스크립트 명령을 이용하여 생성된 결과가 화면에 출력되는 것을 막는다. 그러나, OFF 가 설정되어 있더라도 질의를 직접 입력하는 경우 (예: iSQL> select * from t1;) 질의 결과는 화면에 출력 되며, 스크립트 명령을 이용하는 경우에만 (예: iSQL> @t.sql ) 화면에 출력되지 않는다. iSQL> SET TERM OFF; iSQL> SET TIMING ON; -> 실행시간이 화면에 출력되지 않는다. iSQL> @schema.sql -> 스크립트 실행 결과를 출력하지 않는다. iSQL> SELECT * FROM employee; -> 질의를 직접 입력하는 경우 결과는 출력된다. EMPLOYEE.ENO EMPLOYEE.ENAME EMPLOYE.EMP_JOB ----------------------------------- EMPLOYE.EMP_TEL EMPLOYE.DNO EMPLOYEE.SALARY EMPLOYEE.SEX ----------------------------------- EMPLOYE.BIRTH EMPLOYE.JOIN_DATE EMPLOYEE.STATUS ----------------------------------- 1 SWNO CEO 019562365 M R 2 HJNO DESIGNER 013654540 C02 150 F 1219 1999/11/18 00:00:00 H . . . iSQL> SET TERM ON; -> 스크립트 실행 결과를 출력한다. iSQL> @schema.sql iSQL> DROP TABLE dual; Drop success. elapsed time : 0.01 iSQL> DROP TABLE orders; Drop success. elapsed time : 0.00 . . 실행 계획 트리 출력 SQL 튜닝을 위하여 iSQL 상에서 실행 계획 트리(plan tree)를 출력하는 기능이다. SQL 문의 실행 계획 트리는 SELECT, INSERT, UPDATE, DELETE 등의 DML 문에 대해서 확인이 가능하다. 이를 위해서 SELECT 등의 구문을 수행하기 전에 다음 명령을 수행하여야 한다. ALTER SESSION SET EXPLAIN PLAN = option; 46 ALTIBASE5 iSQL User’s Manual 여기서 option 은 ON, OFF, ONLY 의 세 가지 설정이 있으며, 기본 설정값은 OFF 이다. y ON: SELECT문 실행 후 결과 레코드와 함께 Execution Plan 정보를 보여준다. y ONLY: SELECT문에 대해 Prepare 과정만 수행한 후 Execution 과정을 수행하지 않고 실행 계획 정보만 보여준다. 주 언어 변수 바인딩이 존재하는 SELECT 문 또는 실행 수행 시간이 오래 걸리는 질의에 대해 단순히 실행 계획만 확인할 경 우 이 기능을 사용한다. y OFF: SELECT문 실행 후 결과 레코드만 보여준다. 사용자가 기술한 WHERE 절에 존재하는 조건들의 처리 방법에 대한 정보 등의 보다 자세한 정보가 필요한 경우는 다음 명령을 사용한다. ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 1; 위의 구문처럼 해당 프로퍼티를 1 로 설정하여 ON 시키면, 실행 계획 정보에 WHERE 절의 조건들이 FIXED KEY RANGE, VARIABLE KEY RANGE, FILTER 등으로 자세하게 분류되어 표시된다. 따라서 WHERE 절을 복잡하게 사용한 경우 어떤 술어들이 인덱스 스캔을 통해 수행되는지 확인할 수 있다. 단, 특정 최적화 기법에 의해 질의가 변경된 경우는 이러한 정보가 출력되지 않을 수 있다. 다음은 해당 SQL 문을 사용한 출력 예이다. iSQL> alter system set trclog_detail_predicate = 1; Alter success. iSQL> alter sesion set explain plan = on; Alter success. iSQL> select * from t1 where i1 = 1; T1.I1 --------- 1 1 row selected. y TRCLOG_DETAIL_PREDICATE을 설정하고 EXPLAIN PLAN = ON으로 한 경우 PROJECT ( COLUMN_COUNT: 1, TUPLE_SIZE: 4 ) SCAN ( TABLE: T1, INDEX: IDX1, ACCES: 1, SELF_ID: 2 ) [ FIXED KEY ] OR I1 = 1 y TRCLOG_DETAIL_PREDICATE을 설정하지 않고, EXPLAIN PLAN = ON으로 한 경우 PROJECT ( COLUMN_COUNT: 1, TUPLE_SIZE: 4 ) SCAN ( TABLE: T1, INDEX: IDX1, ACCES: 1, SELF_ID: 2 ) y TRCLOG_DETAIL_PREDICATE을 설정하지 않고, EXPLAIN PLAN = ONLY로 한 경우 PROJECT ( COLUMN_COUNT: 1, TUPLE_SIZE: 4 ) iSQL 사용 예 47 SCAN ( TABLE: T1, INDEX: IDX1, ACCES: ??, SELF_ID: 2 ) EXPLAIN PLAN = ONLY 인 경우 질의 실행 없이 실행 계획만 생성하므로 ACCESS 항목과 같이 실제 실행 후 그 값이 결정되는 항목들은 ??로 표시된다. 결과 출력 방향 설정 iSQL 에서 SELECT 구문으로 조회할 경우, 결과를 세로로 보여줄 것인가 가로로 보여줄 것인가를 선택할 수 있다. 조회 결과가 행이 적고, 열이 많을 경우에 적합한 출력이다. 일반적으로 이러한 경우에 가로로 출력되면 해당하는 열을 맞춰 값을 보기가 어렵다. 하지만 출력 결과의 방향을 세로로 설정하면 보기가 편리하다. iSQL>SET VERTICAL ON; -> 출력 결과 모드를 세로 설정한다. iSQL>SELECT * FROM X$FLUSHER; ID : 0 ALIVE : 1 CURENT_JOB : 0 DOING_IO : 0 INIOB_COUNT : 0 REPLACE_FLUSH_JOBS : 0 REPLACE_FLUSH_PAGES : 0 REPLACE_SKIP_PAGES : 0 CHECKPOINT_FLUSH_JOBS : 209 CHECKPOINT_FLUSH_PAGES : 2 CHECKPOINT_SKIP_PAGES : 0 OBJECT_FLUSH_JOBS : 0 OBJECT_FLUSH_PAGES : 0 OBJECT_SKIP_PAGES : 0 LAST_SLEP_SEC : 10 TIMEOUT : 54 SIGNALED : 2 TOTAL_SLEP_SEC : 5380 ID : 1 ALIVE : 1 CURENT_JOB : 0 DOING_IO : 0 INIOB_COUNT : 0 REPLACE_FLUSH_JOBS : 0 REPLACE_FLUSH_PAGES : 0 REPLACE_SKIP_PAGES : 0 CHECKPOINT_FLUSH_JOBS : 214 CHECKPOINT_FLUSH_PAGES : 1 CHECKPOINT_SKIP_PAGES : 1 OBJECT_FLUSH_JOBS : 0 OBJECT_FLUSH_PAGES : 0 OBJECT_SKIP_PAGES : 0 LAST_SLEP_SEC : 10 TIMEOUT : 54 SIGNALED : 2 48 ALTIBASE5 iSQL User’s Manual TOTAL_SLEP_SEC : 5380 2 rows selected. . iSQL 사용 예 49 i SQL 환경변수 보기 iSQL 의 환경 변수는 다음과 같은 것들이 있다. y LINESIZE SELECT 문 결과 출력시 디스플레이되는 한 라인의 사이즈를 설정한다. 10에서 200 사이의 값이어야 한다. y PAGESIZE 결과 행들을 몇 개 단위로 보여줄 것인가를 결정한다. y PALNCOMMIT AUTOCOMMIT OFF 모드에서 명령어를 수행할 때 자동으로 커 밋되는 여부를 보여준다. y QUERYLOGGING DML 문이 실행될 때 $ALTIBASE_HOME/trc/isql_query.log 에 기록되는지 여부를 보여준다 y HEADING 결과에 헤더를 출력할지 결정한다. y TIMING SQL 문을 실행하는데 소요된 시간을 출력할지 결정한다. y TIMESCALE SQL문의 쿼리 수행 시간 단위가 무엇으로 출력될 것인지 보여 준다. y USER 현재의 사용자를 알 수 있다. y FOREIGNKEYS 테이블 구조를 볼 때 외래 키 정보를 출력할지 결정한다. y VERTICAL SELECT 결과를 세로로 출력할지 여부를 보여준다. 다음은 현재 세션에서 iSQL 환경변수 값을 보는 예를 보여준다. iSQL> SHOW LINESIZE Linesize : 100 iSQL> SHOW PAGESIZE Pagesize : 0 iSQL> SHOW TIMING Timing : Off iSQL> SHOW HEADING Heading : On iSQL> SHOW USER User : SYS iSQL> SHOW FOREIGNKEYS ForeignKeys : Off iSQL> SHOW ALL User : SYS LineSize : 100 PageSize : 0 Heading : On 50 ALTIBASE5 iSQL User’s Manual Timing : Off ForeignKeys : Off iSQL 사용 예 51 호스트 변수 호스트 변수를 선언하여 사용할 수 있다. 호스트 변수는 프로시저나 함수 실행 시 유용하다. 호스트 변수 선언하기 구문 VAR[IABLE] var_name var_type 타입 변수 선언 시 사용할 수 있는 타입은 다음과 같다. INTEGER, BYTE(n), NIBBLE(n), NUMBER, NUMBER(n), NUMBER(n,m), NUMERIC, NUMERIC(n), NUMERIC(n,m), CHAR(n), VARCHAR(n), NCHAR(n), NVARCHAR(n), DATE DECIMAL, DECIMAL(n), DECIMAL(n,m), FLOAT, FLOAT(n), DOUBLE, REAL BIGINT, SMALLINT 예제 아래는 변수를 선언하는 예를 보여준다. iSQL> VAR p1 INTEGER iSQL> VAR p2 CHAR(10) iSQL> VAR v_double DOUBLE iSQL> VAR v_real REAL 호스트 변수에 값 할당하기 구문 EXEC[UTE] :var_name := value; 예제 아래는 변수에 값을 할당하는 예를 보여준다. iSQL> EXECUTE :p1 := 100; Execute success iSQL> EXEC :p2 := ‘abc’; Execute success 호스트 변수 보기 구문 52 ALTIBASE5 iSQL User’s Manual PRINT VAR[IABLE] -> 선언된 모든 변수를 보여준다. PRINT var_name -> var_name 의 타입과 값을 보여준다. 예제 다음은 선언된 모든 변수값을 보여준다. iSQL> PRINT VAR [ HOST VARIABLE ] ---------------------------------- NAME TYPE VALUE ---------------------------------- P1 INTEGER 10 P2 CHAR ( 10 ) abc iSQL> PRINT p2 -> 변수 p2 에 관한 정보만 출력한다. NAME TYPE VALUE ---------------------------------- P2 CHAR ( 10 ) abc iSQL 사용 예 53 PREPARE SQL 문 수행 Prepared SQL 문 수행과 Direct SQL 문 수행의 차이 iSQL 상에서 SQL 문을 수행하면 기본적으로 Direct EXECUTION 방법으로 수행된다. Direct EXECUTION 이란 질의에 대한 구문 분석, 정당성 검사, 최적화 및 수행을 한번에 수행하는 것을 의미한다. 이에 반해 Prepared EXECUTION 방법은 질의에 대한 구문 분석, 정당성 검사, 최적화까지만을 수행해 질의에 대한 실행 계획을 수립해 두고 실제 수행 후 이후에 클라이언트로부터 실행 요구 메시지를 받으면 수행하는 방법이다. ODBC 를 사용한 응용프로그램 작성의 경우 Prepared EXECUTION 방법이 일반적이며 호스트 변수 바인딩을 통해 한 SQL 문에 대한 반복적인 수행이 필요한 경우 속도의 이점이 있다. iSQL 상에서 이 두 방법의 차이는 변수 사용 여부의 차이만 존재하며 속도의 이점은 존재하지 않는다. Prepared SQL 문 구문 PREPARE SQL_statement; 예제 다음은 PREPARE 명령어를 사용한 SQL 문 수행 예제이다. iSQL> VAR T1 INTEGER; iSQL> EXEC :T1 := 21; Execute success. iSQL> PREPARE SELECT ENO, NAME, SEX FROM EMPLOYEE WHERE ENO=:T1; ENO NAME SEX --------------------------- 21 BETHY F 1 row selected. 54 ALTIBASE5 iSQL User’s Manual 프로시저 생성과 실행 및 삭제 프로시저 생성 프로시저를 생성하는 기능을 제공한다. 프로시저 생성시 반드시 END; / 구문으로 끝나야 한다. 생성된 프로시저는 sys_procedures_ 테이블을 참조하여 확인할 수 있다. 프로시저 실행 프로시저를 실행하는 기능을 제공한다. 프로시저를 실행함으로써 다양한 쿼리를 한꺼번에 수행할 수 있다. 실행할 프로시저에 파라미터가 있는 경우 반드시 프로시저 실행전에 파라미터 개수만큼 변수가 선언되어 있어야 한다. 예제 1 다음은 INSERT 문을 수행하는 프로시저 emp_proc 를 생성하는 예를 보여준다. (parameter in 이용) iSQL> CREATE OR REPLACE PROCEDURE emp_proc(p1 IN INTEGER, p2 IN CHAR(20), p3 IN CHAR(1)) AS BEGIN INSERT INTO employee(eno, ename, sex) VALUES(p1, p2, p3); END; / Create success. iSQL> SELECT * FROM system_.sys_procedures_; SYS_PROCEDURES_.USER_ID SYS_PROCEDURES_.PROC_OID ----------------------------------- SYS_PROCEDURES_.PROC_NAME SYS_PROCEDURES_.OBJECT_TYPE ----------------------------------- SYS_PROCEDURES_.STATUS SYS_PROCEDURES_.PARA_NUM SYS_PROCEDURES_.RETURN_DATA_TYPE ----------------------------------- SYS_PROCEDURES_.RETURN_LANG_ID SYS_PROCEDURES_.RETURN_SIZE SYS_PROCEDURES_.RETURN_PRECISION ----------------------------------- iSQL 사용 예 55 SYS_PROCEDURES_.RETURN_SCALE SYS_PROCEDURES_.PARSE_NO SYS_PROCEDURES_.PARSE_LEN ----------------------------------- 1 941504 PRINT 0 0 1 4 353 1 943216 PRINTLN 0 0 1 4 363 2 2592128 EMP_PROC 0 0 3 2 15 3 rows selected. 아래는 emp_proc 를 실행하는 예를 보여준다. iSQL> VAR eno INTEGER iSQL> VAR ename CHAR(20) iSQL> VAR sex CHAR(1) iSQL> EXECUTE :eno := 21; Execute success. iSQL> EXECUTE :ename := 'msjung'; Execute success. iSQL> EXECUTE :sex := 'F'; Execute success. iSQL> EXECUTE emp_proc(:eno, :ename, :sex); Execute success. iSQL> SELECT eno, ename, sex FROM employee WHERE eno = 21; ENO ENAME SEX ---------------------------------- 21 msjung F 1 row selected. 예제 2 다음은 SELECT 문을 수행하는 프로시저 outProc 를 생성하는 예를 보여준다. iSQL> CREATE TABLE outTbl(i1 INTEGER, i2 INTEGER); Create success. iSQL> INSERT INTO outTbl VALUES(1,1); 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> SELECT * FROM outTbl; OUTTBL.I1 OUTTBL.I2 --------------------- 1 1 56 ALTIBASE5 iSQL User’s Manual 1 1 1 1 1 1 1 1 5 rows selected. iSQL> CREATE OR REPLACE PROCEDURE outProc(a1 OUT INTEGER, a2 IN OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO a1 FROM outTbl WHERE i2 = a2; END; / Create success. 아래는 outProc 를 실행하는 예를 보여준다. iSQL> VAR t3 INTEGER iSQL> VAR t4 INTEGER iSQL> EXEC :t4 := 1; Execute success. iSQL> EXEC outProc (:t3, :t4); Execute success. iSQL> PRINT t3; NAME TYPE VALUE ----------------------------------- T3 INTEGER 5 예제 3 다음은 프로시저 outProc1 을 생성하는 예를 보여준다. iSQL> CREATE OR REPLACE PROCEDURE outProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1; p3 := p1 + 10; END; / Create success. iSQL> VAR v1 INTEGER iSQL> VAR v2 INTEGER iSQL> VAR v3 INTEGER iSQL> EXEC :v1 := 3; Execute success. iSQL> EXEC outProc1(:v1, :v2, :v3); Execute success. iSQL> PRINT VAR; [ HOST VARIABLE ] ----------------------------------- NAME TYPE VALUE ----------------------------------- V1 INTEGER 3 V2 INTEGER 3 V3 INTEGER 103 예제 4 다음은 SELECT 문을 수행하는 프로시저 inoutProc 를 생성하는 예를 보여준다. iSQL 사용 예 57 iSQL> CREATE TABLE inoutTbl(i1 INTEGER); Create success. iSQL> INSERT INTO inoutTbl VALUES(1); 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> SELECT * FROM inoutTbl; INOUTTBL.I1 --------- 1 1 1 3 rows selected. iSQL> CREATE OR REPLACE PROCEDURE inoutProc (a1 IN OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO a1 FROM inoutTbl WHERE i1 = a1; END; / Create success. iSQL> VAR t3 INTEGER iSQL> EXEC :t3 := 1; Execute success. iSQL> EXEC inoutProc(:t3); Execute success. iSQL> PRINT t3; NAME TYPE VALUE ----------------------------------- T3 INTEGER 3 예제 5 다음은 프로시저 inoutProc1 을 생성하는 예를 보여준다. iSQL> CREATE OR REPLACE PROCEDURE inoutProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1 + p2; p3 := p1 + 10; END; / Create success. 아래는 inoutProc1 을 실행하는 예를 보여준다. iSQL> VAR v1 INTEGER iSQL> VAR v2 INTEGER iSQL> VAR v3 INTEGER iSQL> EXEC :v1 := 3; Execute success. iSQL> EXEC :v2 := 5; Execute success. iSQL> EXEC inoutProc1(:v1, :v2, :v3); Execute success. iSQL> PRINT VAR; [ HOST VARIABLE ] 58 ALTIBASE5 iSQL User’s Manual ----------------------------------- NAME TYPE VALUE ----------------------------------- V1 INTEGER 3 V2 INTEGER 8 V3 INTEGER 103 프로시저 삭제 프로시저를 삭제하는 기능을 제공한다. 다음은 emp_proc 를 삭제하는 예를 보여준다. iSQL> DROP PROCEDURE emp_proc; Drop success iSQL 사용 예 59 함수 생성과 실행 및 삭제 함수 생성 함수를 생성하는 기능을 제공한다. 함수 생성시 반드시 END; / 구문으로 끝나야 하며 리턴 타입이 정의되어 있어야 한다. 생성된 함수는 sys_procedures_ 테이블을 참조하여 확인할 수 있다. 다음은 UPDATE 문과 SELECT 문을 수행하는 함수 emp_func 를 생성하는 예를 보여준다. iSQL> CREATE OR REPLACE FUNCTION emp_func(f1 IN INTEGER) RETURN NUMBER AS f2 NUMBER; BEGIN UPDATE employee SET salary = 100000 WHERE eno = f1; SELECT salary INTO f2 FROM employee WHERE eno = f1; RETURN f2; END; / Create success. iSQL> SELECT * FROM system_.sys_procedures_; SYS_PROCEDURES_.USER_ID SYS_PROCEDURES_.PROC_OID ----------------------------------- SYS_PROCEDURES_.PROC_NAME SYS_PROCEDURES_.OBJECT_TYPE ----------------------------------- SYS_PROCEDURES_.STATUS SYS_PROCEDURES_.PARA_NUM SYS_PROCEDURES_.RETURN_DATA_TYPE ----------------------------------- SYS_PROCEDURES_.RETURN_LANG_ID SYS_PROCEDURES_.RETURN_SIZE SYS_PROCEDURES_.RETURN_PRECISION ----------------------------------- SYS_PROCEDURES_.RETURN_SCALE SYS_PROCEDURES_.PARSE_NO SYS_PROCEDURES_.PARSE_LEN ----------------------------------- . . . INOUTPROC1 0 0 3 2 134 2 1980 EMP_FUNC 1 0 1 6 60 ALTIBASE5 iSQL User’s Manual -1 2 38 0 3 213 7 rows selected. 함수 실행 함수를 실행하는 기능을 제공한다. 함수를 실행함으로써 다양한 쿼리를 한꺼번에 수행할 수 있다. 실행할 함수에 파라미터가 있는 경우 반드시 함수 실행전에 파라미터 개수만큼 변수가 선언되어 있어야 한다. 또한, 함수의 실행 결과를 저장할 변수도 정의되어 있어야 한다. 다음은 emp_func 를 실행하는 예를 보여준다. iSQL> VAR eno INTEGER iSQL> VAR ret NUMBER iSQL> EXEC :eno := 1; Execute success. iSQL> EXEC :ret := emp_func(:eno); Execute success. iSQL> SELECT eno, salary FROM employee WHERE eno = 11; ENO SALARY --------------------- 11 1000000 1 row selected. 함수 삭제 함수를 삭제하는 기능을 제공한다. 다음은 emp_func 를 삭제하는 예를 보여준다. iSQL> DROP FUNCTION emp_func; Drop success iSQL 사용 예 61 사용자 편의 기능 히스토리 이전에 수행했던 명령들의 리스트를 보여 준다. 해당 번호를 사용하여 이전에 수행했던 명령을 간단하게 실행할 수 있다. iSQL> HISTORY; -> history 목록보기 또는 iSQL> H; 1 : SELECT * FROM tab; 2 : SELECT * FROM book; 3 : HISTORY; iSQL> / -> 가장 마지막 명령(HISTORY;)을 재수행 iSQL> 2/ -> history 목록의 2 번에 해당하는 명령(SELECT * FROM book;)실행 쉘 명령 iSQL 에서 !다음에 바로 쉘 명령을 수행할 수 있는 편리한 기능이다. iSQL> !ls -al total 3417 -rw-r---- 1 wlgml337 section 198 Nov 1 13:30 .aliases -rw------- 1 wlgml337 section 5353 Oct 18 21:17 .bash_history -rw-r---- 1 wlgml337 section 1436 Nov 2 15:42 .bashrc -rw-r---- 1 wlgml337 section 1549 Dec 13 17:36 .profile drwxr-x--- 2 wlgml337 section 512 Nov 2 02:00 TEMP drwxr-xr-x 2 rot rot 512 Oct 16 1:29 T_DB -rw------ 1 wlgml337 section 3446548 Dec 18 13:19 core drwxr-x--- 2 wlgml337 section 512 Nov 11 16:3 cron drwxr-x--- 2 wlgml337 section 512 Nov 15 10:52 test drwxr-xr-x 6 wlgml337 section 512 Nov 11 1:45 work 도움말 iSQL 이 제공하는 명령에 대한 도움말을 제공한다. HELP 명령은 도움말 사용법을 보여 주며 특정 명령에 대한 도움말은 HELP 명령 다음에 정보를 알고자 하는 명령을 입력하면 된다. iSQL> HELP; Use 'help [comand]' 62 ALTIBASE5 iSQL User’s Manual Enter 'help index' for a list of command iSQL> HELP INDEX; @ EDIT QUIT / EXIT ROLLBACK ALTER HEADING SAVE AUTOCOMMIT H[ISTORY] SELECT COMMIT INSERT SPOOL CREATE LINESIZE START DELETE LOAD TIMING DESC LOBOFFSET UPDATE DROP LOBSIZE VAR[IABLE] EXECUTE MOVE TERM EXPLANINPLAN PAGESIZE VERTICAL iSQL> HELP EXIT; exit; or quit; - exit iSQL iSQL 사용 예 63 내셔널 캐릭터 사용법 NCHAR 및 NVARCHAR 타입의 내셔널 캐릭터에서 상수 문자를 사용하기 위해서 아래와 같은 방법으로 환경변수 등을 설정해야 데이터의 손실 염려가 없다. y 환경변수 ALTIBASE_NLS_NCHAR_LITERAL_REPLACE의 값을 1로 설정한다. shell> export ALTIBASE_NLS_NCHAR_LITERAL_REPLACE =1 y SQL 구문에서 NCHAR 타입 상수 문자열을 사용하기 위해 해당 문자열 바로 앞에 ‘N’을 붙여 사용한다. iSQL> create table t1 (c1 nvarchar(10)); Create success. iSQL> insert into t1 values (N'AB가나'); 1 row inserted. iSQL> select * from t1; C1 --------------- AB가나 1 row selected. 찾아보기 65 찾아보기 ! ! 명령어......................................................... 13 / / 명령어 ................................................ 13, 65 @ @ 명령어 ................................................ 9, 34 @@ ................................................................... 9 @@ 명령어 ................................................. 35 ㄱ 결과 출력 방향 .......................................... 51 ㄴ 내셔널 캐릭터 사용법............................. 67 ㄷ 도움말 .................................................... 13, 65 ㄹ 로그인 .................................................... 22, 24 ㅂ 반복 실행 ..................................................... 65 반복실행 ........................................................ 13 ㅅ 쉘 명령 .................................................. 13, 65 스크립트 실행 ............................................ 34 스크립트 실행 결과 출력 ...................... 49 시퀀스 정보 ............................................ 9, 31 실행 계획 트리 출력 ............................... 50 실행 시간 ..................................................... 46 실행 시간 출력 단위 .............................. 46 실행시간 ....................................................... 11 ㅇ 외래 키 정보 .............................................. 47 ㅈ 작업 결과 저장 ......................................... 34 접속연결 (CONNECT) ............................. 26 정지 ................................................................... 8 주석 ................................................................ 13 질의문 편집 ......................................... 10, 37 ㅋ 커맨드 라인 옵션 ........................................ 5 ㅌ 테이블 구조 ........................................... 9, 30 테이블 목록 ........................................... 8, 29 트랜잭션 모드 ....................................... 9, 33 ㅍ 프로시저 삭제 ............................................ 62 프로시저 생성 ............................................ 58 프로시저 실행 ............................................ 58 ㅎ 함수 삭제 ..................................................... 64 함수 생성 ..................................................... 63 함수 실행 ..................................................... 64 호스트 변수 ......................................... 12, 55 환경변수 ....................................................... 14 66 ALTIBASE5 iSQL User’s Manual 히스토리 ....................................................... 65 A ALTIBASE_DATE_FORMAT ..................... 16 ALTIBASE_HOME ....................................... 14 ALTIBASE_IPC_FILEPATH ........................ 16 ALTIBASE_NLS_NCHAR_LITERAL_REPLA CE ............................................................... 15 ALTIBASE_NLS_USE .................................. 14 ALTIBASE_PORT_NO ................................ 14 AUTOCOMMIT OFF ................................. 33 AUTOCOMMIT ON .................................. 33 C comment ...................................................... 13 current user ................................................ 53 D DESC .............................................................. 30 disconnect ...................................................... 8 E ed 명령어 ..................................... 10, 37, 39 exit ..................................................................... 8 F foreignkeys .................................................. 53 G glogin.sql ..................................................... 17 H heading ................................................. 40, 53 help ...............................................
-
- [Altibase 7.1] iSQL User's Manual ㅣ 2017-07-06
- Altibase® Tools iSQL User’s Manual Release 7.1 (August 28, 2018) ----------------------------------------------------------- Altibase Tools iSQL User's Manual Release 7.1 Copyright ⓒ 2001~2018 Altibase Corp. All Rights Reserved. 본 문
-
미리보기
Altibase® Tools iSQL User’s Manual Release 7.1 (August 28, 2018) ----------------------------------------------------------- Altibase Tools iSQL User's Manual Release 7.1 Copyright ⓒ 2001~2018 Altibase Corp. All Rights Reserved. 본 문서의 저작권은 ㈜알티베이스에 있습니다. 이 문서에 대하여 당사의 동의 없이 무단으로 복제 또는 전용할 수 없습니다. ㈜알티베이스 08378 서울시 구로구 디지털로 306 대륭포스트타워Ⅱ 10층 전화: 02-2082-1114 팩스: 02-2082-1099 고객서비스포털: http://support.altibase.com homepage: http://www.altibase.com ----------------------------------------------------------- 서문 3 목 차 서문 ........................................................................................................................................ 5 이 매뉴얼에 대하여 ............................................................................................................................. 6 1. ISQL 이용방법 ............................................................................................................. 11 iSQL의 개요 ........................................................................................................................................... 12 iSQL 설정 ............................................................................................................................................... 13 iSQL 커맨드 라인 옵션 .................................................................................................................... 15 iSQL 명령어 ........................................................................................................................................... 20 iSQL 관련 환경변수........................................................................................................................... 28 개인별 iSQL 환경 설정 .................................................................................................................... 32 2. ISQL 사용 예 ............................................................................................................... 35 로그인....................................................................................................................................................... 36 Altibase의 구동 및 종료 ................................................................................................................. 38 접속 연결 및 해제 ............................................................................................................................. 40 데이터베이스와 객체 정보 조회 ................................................................................................. 44 트랜잭션 제어 ...................................................................................................................................... 47 파일 관리 ................................................................................................................................................ 48 SELECT 결과 포맷팅 .......................................................................................................................... 56 출력 옵션 ................................................................................................................................................ 64 iSQL 화면 설정 보기 ........................................................................................................................ 74 호스트 변수 ........................................................................................................................................... 75 PREPARE SQL문 수행 ....................................................................................................................... 77 프로시저 생성과 실행 및 삭제 .................................................................................................... 78 함수 생성과 실행 및 삭제 ............................................................................................................. 83 사용자 편의 기능 ............................................................................................................................... 85 내셔널 캐릭터 사용법 ...................................................................................................................... 88 찾아보기............................................................................................................................... 89 4 iSQL User's Manual 서문 5 서문 6 iSQL User's Manual 이 매뉴얼에 대하여 이 매뉴얼은 데이터베이스에 접속해 데이터베이스 정보와 서버의 정보를 조회하고 제어할 수 있는 도구인 iSQL의 사용법에 대해 설명한다. 대상 사용자 이 매뉴얼은 다음과 같은 Altibase 사용자를 대상으로 작성되었다. 데이터베이스 관리자 성능 관리자 데이터베이스 사용자 응용 프로그램 개발자 기술지원부 다음과 같은 배경 지식을 가지고 이 매뉴얼을 읽는 것이 좋다. 컴퓨터, 운영 체제 및 운영 체제 유틸리티 운용에 필요한 기본 지식 관계형 데이터베이스 사용 경험 또는 데이터베이스 개념에 대한 이해 컴퓨터 프로그래밍 경험 데이터베이스 서버 관리, 운영 체제 관리 또는 네트워크 관리 경험 소프트웨어 환경 이 매뉴얼은 데이터베이스 서버로 Altibase 버전 7.1을 사용한다는 가정 하에 작성되었다. 이 매뉴얼의 구성 이 매뉴얼은 다음과 같이 구성되어 있다. 제 1장 iSQL 이용방법 이 장은 iSQL의 개요와 제공하는 명령어 및 사용방법에 대해 설명한다. 제 2장 iSQL 사용 예 서문 7 이 장은 iSQL이 제공하는 각각의 명령어 대해 자세한 사용 예를 들어 설명한다. 문서화 규칙 이 절에서는 이 매뉴얼에서 사용하는 규칙에 대해 설명한다. 이 규칙을 이해하면 이 매뉴얼과 설명서 세트의 다른 매뉴얼에서 정보를 쉽게 찾을 수 있다. 여기서 설명하는 규칙은 다음과 같다. 구문 다이어그램 샘플 코드 규칙 구문 다이어그램 이 매뉴얼에서는 다음 구성 요소로 구축된 다이어그램을 사용하여, 명령문의 구문을 설명한다. 구성 요소 의미 예약어 명령문이 시작한다. 완전한 명령문이 아닌 구문 요 소는 화살표로 시작한다. 명령문이 다음 라인에 계속된다. 완전한 명령문이 아닌 구문 요소는 이 기호로 종료한다. 명령문이 이전 라인으로부터 계속된다. 완전한 명령 문이 아닌 구문 요소는 이 기호로 시작한다. ; 명령문이 종료한다. SELECT 필수 항목 NOT 선택적 항목 ADD DROP 선택사항이 있는 필수 항목. 한 항목만 제공해야 한 다. ASC DESC 선택사항이 있는 선택적 항목 8 iSQL User's Manual , ASC DESC 선택적 항목. 여러 항목이 허용된다. 각 반복 앞부 분에 콤마가 와야 한다. 샘플 코드 규칙 코드 예제는 SQL, Stored Procedure, iSQL 또는 다른 명령 라인 구문들을 예를 들어 설명한다. 아래 테이블은 코드 예제에서 사용된 인쇄 규칙에 대해 설명한다. 규칙 의미 예제 [ ] 선택 항목을 표시 VARCHAR [(size)] [[FIXED |] VARIABLE] { } 필수 항목 표시. 반드시 하나 이 상을 선택해야 되는 표시 { ENABLE | DISABLE | COMPILE } | 선택 또는 필수 항목 표시의 인 자 구분 표시 { ENABLE | DISABLE | COMPILE } [ ENABLE | DISABLE | COMPILE ] . . . 그 이전 인자의 반복 표시 예제 코드들의 생략되는 것을 표 시 SQL> SELECT ename FROM employee; ENAME ----------------------- SWNO HJNO HSCHOI . . . 20 rows selected. 그 밖에 기 호 위에서 보여진 기호 이 외에 기 호들 EXEC :p1 := 1; acc NUMBER(11,2); 기울임 꼴 구문 요소에서 사용자가 지정해 야 하는 변수, 특수한 값을 제공 해야만 하는 위치 지정자 SELECT * FROM table_name; CONNECT userID/password; 소문자 사용자가 제공하는 프로그램의 요소들, 예를 들어 테이블 이름, 칼럼 이름, 파일 이름 등 SELECT ename FROM employee; 서문 9 대문자 시스템에서 제공하는 요소들 또 는 구문에 나타나는 키워드 DESC SYSTEM_.SYS_INDICES_; 관련 자료 자세한 정보를 위하여 다음 문서 목록을 참조하기 바란다. Installation Guide Getting Started Guide Administrator’s Manual Replication Manual SQL Reference Stored Procedures Manual Error Message Reference 온라인 매뉴얼 Altibase 고객서비스포털(http://support.altibase.com)에서 국문 매뉴얼(PDF, HTML)을 받을 수 있다. Altibase는 여러분의 의견을 환영합니다. 이 매뉴얼에 대한 여러분의 의견을 보내주시기 바랍니다. 사용자의 의견은 다음 버전의 매뉴얼을 작성하는데 많은 도움이 됩니다. 보내실 때에는 아래 내용과 함께 고객서비스포털(http://support.altibase.com/kr/)로 보내주시기 바랍니다. 사용 중인 매뉴얼의 이름과 버전 매뉴얼에 대한 의견 사용자의 성함, 주소, 전화번호 이 외에도 Altibase 기술지원 설명서의 오류와 누락된 부분 및 기타 기술적인 문제들에 대해서 이 주소로 보내주시면 정성껏 처리하겠습니다. 또한, 기술적인 부분과 관련하여 즉각적인 도움이 필요한 경우에도 고객서비스포털을 통해 서비스를 요청하시기 바랍니다. 여러분의 의견에 항상 감사드립니다. iSQL 이용방법 11 1. iSQL 이용방법 12 iSQL User's Manual iSQL의 개요 iSQL은 Altibase에 접속하여 SQL 문과 부가적인 여러 명령어를 통해 서버에 저장되어 있는 자료를 얻고, 수정하는 작업을 수행할 수 있는 사용자 도구이다. iSQL의 주요 기능 Altibase의 구동 및 종료 기능 Altibase 서버의 구동 및 종료 등의 데이터 베이스 관리를 하기 위해서 여러 개의 커맨드라인 명령어를 사용하는 대신에, iSQL 하나의 도구만을 사용하면 된다. 데이터베이스 접속 및 해제 기능 Altibase 구동 이후 데이터베이스 접속 시 다양한 사용자명으로의 접속 및 해제가 가능하다. 데이터베이스 객체 정보 조회 기능 iSQL에서는 데이터베이스 객체에 대한 모든 정보를 SQL문으로 조회할 수 있으며, 주요 객체에 대해서는 간편한 조회 명령어를 지원한다. SQL문 수행을 통한 데이터베이스 관리 기능 iSQL을 사용해 모든 SQL문을 수행할 수 있도록 지원하므로 트랜잭션 제어, 데이터베이스 변경 등을 빠르고 간편하게 수행할 수 있다. 사용자 편의 기능 위의 기능을 쉽고 편리하게 수행할 수 있도록 파일 처리 기능, 에디터 기능, iSQL상에서의 쉘 명령어 수행 기능, HISTORY 기능 등을 지원한다. iSQL 이용방법 13 iSQL 설정 iSQL은 서버에 접속하기 위해서 다음과 같은 정보가 필요하다. ALTIBASE_HOME 서버 혹은 클라이언트가 설치된 경로 server_name Altibase 서버가 구동되어 있는 컴퓨터 서버의 이름(또는 IP 주소) port_no TCP, IPC 또는 IPCDA로 접속할 때 사용할 포트 번호 user_id 데이터베이스에 등록된 사용자 ID password 사용자 ID와 일치하는 암호 NLS_USE 데이터 검색 시, 사용자에게 보여주는 문자 집합 ALTIBASE_HOME은 환경 변수로 설정하도록 되어있으며, 나머지는 커맨드 라인 옵션을 통해서 설정할 수 있도록 되어 있다. (자세한 내용은 “iSQL 커맨드 라인 옵션”을 참고한다.) ALTIBASE_HOME은 iSQL을 사용하기 위해서 반드시 설정해야 하는 환경 변수이다. 일반적으로 서버가 설치될 때 자동으로 설정되지만, 클라이언트의 경우에는 사용자가 직접 설정해야 한다. 설정되지 않았을 경우에는 올바르게 동작하지 않을 수 있으므로 실행 전에 올바르게 설정되어 있는지 확인할 것을 권한다. port_no와 NLS_USE는 환경 변수 또는 서버 설정 파일(altibase.properties)을 이용해서 설정할 수도 있다. 세 가지 방법으로 모두 설정되어 있을 경우 적용 우선 순위는 다음과 같다. 1. 커맨드 라인 옵션 2. 환경 변수(ALTIBASE_PORT_NO, ALTIBASE_NLS_USE) 3. 서버 설정 파일(altibase.properties) 그러므로 이미 설정된 값과 다른 옵션으로 연결하고자 할 경우, 커맨드 라인 옵션을 사용하면 서버 설정 파일이나 환경 변수를 변경하지 않아도 된다. 옵션이 설정되어 있지 않을 경우에는 iSQL이 처음 실행될 때 옵션 입력 프롬프트를 띄우고 사용자에게서 해당 값을 입력 받는다. 이 때 바르지 않은 형식이나 유효하지 않은 값을 입력할 경우, iSQL은 14 iSQL User's Manual 올바르게 동작하지 않을 수도 있다. 특히 NLS_USE 옵션은 사용자가 설정하지 않았더라도 실행 시에 입력 프롬프트가 나타나지 않는다. 만약 사용자가 NLS_USE 옵션을 설정하지 않았다면 기본값인 US7ASCII를 이용해 접속을 시도한다. 이 때 데이터베이스의 캐릭터 셋이 US7ASCII이 아닐 경우에는 바르게 실행되지 않거나 사용자 데이터가 일부 깨질 수 있으므로 반드시 NLS_USE를 사용 환경에 맞는 값으로 설정해야 한다. 원활한 iSQL 사용을 위해 다음 환경 변수를 설정할 것을 권장한다. ALTIBASE_HOME : 서버 혹은 클라이언트가 설치된 경로 ALTIBASE_PORT_NO : 서버에 접속할 때 사용할 포트 번호 ALTIBASE_NLS_USE : 데이터 검색 시, 사용자에게 보여주는 문자 집합 PATH : 실행 파일이 있는 경로인 $ALTIBASE_HOME/bin 추가 iSQL 이용방법 15 iSQL 커맨드 라인 옵션 iSQL을 실행하기 위해서는 반드시 Altibase 서버를 먼저 구동 시켜야 한다. 옵션은 대문자 또는 소문자 모두 사용할 수 있다. isql [-H] [-S server_name] [-PORT port_no] [-U user_id] [-P password] [/NOLOG] [-SYSDBA] [-UNIXDOMAIN-FILEPATH filepath] [-IPC-FILEPATH filepath] [-SILENT] [-F infile_name [param1 [param2]...]] [-O outfile_name] [-NLS_USE nls_name] [-NLS_NCHAR_LITERAL_REPLACE 0|1] [-prefer_ipv6] [-TIME_ZONE timezone] [-ssl_ca CA_file_path | -ssl_capath CA_dir_path] [-ssl_cert certificate_file_path] [-ssl_key key_file_path] [-ssl_verify] [-ssl_cipher cipher_list] -S server_name Altibase 서버가 구동되어 있는 컴퓨터 서버의 이름(또는 IP 주소)을 명시한다. 만약 ISQL_CONNECTION 환경 변수가 IPC 또는 UNIX로 설정되어 있을 때, 이 옵션에 원격 서버를 명시해서 접속을 시도하면, iSQL은 ISQL_CONNECTION의 설정을 무시하고 TCP로 원격 서버에 접속할 것이다. 이 때, ISQL_CONNECTION 설정이 무시되었다는 경고 메시지가 출력된다. IPv4 주소 또는 IPv6 주소를 사용할 수 있다. IPv6 주소는 “[“과 “]”로 에워싸여야 한다. 예를 들어, localhost 를 명시하고자 할 때, 가능한 값은 다음과 같다. localhost (호스트 이름), 127.0.0.1 (IPv4주소), [::1] (IPv6주소) IPv6 주소 표기법에 대한 자세한 내용은 Administrator’s Manual을 참고하기 바란다. -PORT port_no TCP, IPC 또는 IPCDA로 접속할 때 해당 포트 번호를 명시한다. 단 유닉스 환경에서 IPC로 접속시 이 옵션은 명시하지 않아야 한다. 만약 명시하면 경고 메시지가 출력된 후, 서버에 16 iSQL User's Manual 접속한다. TCP로 접속하려면 먼저 클라이언트에서 환경 변수 ‘ISQL_CONNECTION=TCP’를 설정하고, 옵션에 PORT_NO를 입력한다. ISQL_CONNECTION 환경 변수의 값이 IPC가 아니고 -PORT 옵션을 생략한다면, ALTIBASE_PORT_NO와 PORT_NO 프로퍼티를 차례로 참조하고 모두 설정되어 있지 않다면, 포트 번호 입력 프롬프트가 출력된다. -U user_id 데이터베이스에 등록된 사용자 ID를 명시한다. -P password 사용자 ID와 일치하는 암호를 명시한다. /NOLOG 데이터베이스에 접속하지 않고 iSQL을 실행한다. -SYSDBA SYS 사용자가 관리자 모드로 iSQL 유틸리티를 사용하기 위해서 -SYSDBA 옵션을 사용할 수 있다. 서버가 구동되어 있지 않다면, iSQL은 idle 인스턴스로 접속할 것이며, 그 상태에서 서버를 구동할 수 있다. -UNIXDOMAIN-FILEPATH filepath 유닉스 환경에서 서버와 클라이언트가 유닉스 도메인 소켓으로 접속할 때 (ISQL_CONNECTION=UNIX), ALTIBASE_HOME이 서로 다르다면 유닉스 도메인의 소켓 경로가 다르게 되어 접속이 불가능하다. 이 때 서버와 클라이언트가 같은 파일 (e.g. ALTIBASE_HOME/trc/cm-unix)을 사용하도록 하면, 유닉스 도메인 통신이 가능해진다. -IPC-FILEPATH filepath 유닉스 환경에서 서버와 클라이언트가 IPC로 접속 (ISQL_CONNECTION=IPC)할 때, ALTIBASE_HOME이 서로 다르다면 유닉스 도메인의 소켓 경로가 다르게 되어 접속이 불가능하다. 이 때 ALTIBASE_HOME/trc/cm- ipc 파일을 이용하면, 유닉스 도메인 통신이 가능해져 공유 메모리의 정보를 가져올 수 있다. 그러나 이 옵션은 환경변수 iSQL 이용방법 17 ALTIBASE_IPC_FILEPATH를 설정하였다면, 생략해도 된다. -IPCDA-FILEPATH filepath 유닉스 환경에서 서버와 클라이언트가 IPCDA로 접속 (ISQL_CONNECTION=IPCDA)할 때, ALTIBASE_HOME이 서로 다르다면 유닉스 도메인의 소켓 경로가 다르게 되어 접속이 불가능하다. 이 때 ALTIBASE_HOME/trc/cm- ipcda 파일을 이용하면, 유닉스 도메인 통신이 가능해져 공유 메모리의 정보를 가져올 수 있다. 그러나 이 옵션은 환경변수 IPCDA_FILEPATH를 설정하였다면 생략해도 된다. -F infile_name [param1 [param2]...] iSQL 실행 후 바로 실행할 스크립트 파일을 명시한다. 파일 이름에 특수 문자 또는 공백이 포함된 경우 큰따옴표를 사용해야 한다. 예) -F \" file name\" 스크립트 파일의 치환 변수에 대입할 값을 파라미터로 지정할 수 있다. 치환 변수에 대한 설명은 'START 명령에 파라미터 전달'을 참조하기 바란다. -O outfile_name iSQL 실행 후 실행한 명령들에 대한 결과들을 저장할 파일을 명시한다. 이 파일은 현재 디렉터리에 생성된다. 파일이 기존에 존재할 경우, 기존 내용 위에 겹쳐 쓴다. 파일 이름에 특수 문자 또는 공백이 포함된 경우 큰따옴표를 사용해야 한다. 예) -O \" file name\" -H iSQL의 실행 방법을 보여준다. -SILENT silent 모드를 켜는 옵션이다. silent 모드를 켜면 Copyright 등의 부가적인 설명들을 보여주지 않는다. -NLS_USE 데이터 검색 시, 사용자에게 보여주는 문자 집합(Character Set)이다. iSQL을 실행하는 터미널의 encoding을 명시하여 준다. 18 iSQL User's Manual US7ASCII KO16KSC5601 MS949 BIG5 GB231280 MS936 UTF8 SHIFTJIS MS932 EUCJP 생략 시 환경변수 ALTIBASE_NLS_USE, altibase.properties를 차례로 참조하며, 설정되지 않았을 경우에는 기본 문자 집합 (US7ASCII)을 사용한다. -NLS_NCHAR_LITERAL_REPLACE 0 : “N” 문자가 있는지 검사하지 않고 쿼리 문 전체를 데이터베이스 문자 셋으로 변환한다. 1 : “N” 문자가 붙어있는 NCHAR 리터럴은 데이터베이스 문자 셋으로 변환하지 않는다. -prefer_ipv6 -S 옵션으로 호스트 이름을 입력했을 때, 접속할 IP 주소의 버전을 결정하는 옵션이다. 이 옵션을 명시하면, 호스트 이름을 IPv6 주소로 바꾸어 접속한다. 이 옵션을 명시하지 않으면, isql은 IPv4 주소로 접속한다. 선호하는 버전의 IP 주소로의 접속이 실패하면, 다른 IP 버전 주소로 접속을 다시 시도한다. 예를 들어, -S 옵션에 “localhost”를 입력하고 이 옵션을 명시하면, isql 은 처음에 IPv6 주소인 [::1]로 접속하고, 이 접속이 실패하면 IPv4 주소인 127.0.0.1로 접속을 다시 시도한다. -TIME_ZONE timezone 클라이언트의 타임 존을 설정하는 옵션이다. 이 옵션에 DB_TZ를 지정하면 데이터베이스 서버와 동일한 타임 존이 사용된다. Asia/Seoul과 같은 타임 존의 이름이나 KST 같은 약어를 사용해서 지정할 수 있으며, iSQL 이용방법 19 +09:00 같은 UTC 오프셋 값을 지정할 수도 있다. 이 옵션을 생략하면 ALTIBASE_TIME_ZONE 환경 변수에 설정된 타임 존이 클라이언트의 타임 존으로 설정되며, 환경 변수도 설정되지 않았다면 데이터베이스 서버와 동일한 타임 존으로 설정된다. -ssl_ca CA_file_path 접속할 알티베이스 서버의 공개키(public key)가 포함된 CA(인증 기관, Certification Authority) 인증서 파일의 위치를 지정한다. -ssl_capath CA_dir_path 접속할 알티베이스 서버의 공개키가 포함된 CA 인증서 파일이 저장되어 있는 디렉토리를 지정한다. -ssl_cert certificate_file_path 클라이언트 인증서 파일의 위치를 지정한다. -ssl_key key_file_path 클라이언트 개인키 파일의 위치를 지정한다. -ssl_verify 이 옵션을 지정하면 클라이언트가 서버로부터 전달받은 인증서를 검증한다. -ssl_cipher cipher_list SSL 암호화를 위해 사용할 알고리즘의 이름 후보들을 지정한다. General Reference에서 SSL_CIPHER_LIST 프로퍼티를 참고한다. 위의 커맨드 라인 중 -S, -U, -P 옵션이 빠져 있는 경우에는 입력 프롬프트가 출력되어 사용자에게 그 옵션값을 받는다. 20 iSQL User's Manual iSQL 명령어 iSQL을 실행 시키면 iSQL 명령어 실행을 위한 프롬프트가 나오고, 이곳에 iSQL 명령어들을 입력하면 그 결과를 보여주는 형태로 프로그램이 동작한다. 아래의 표에 iSQL 각각의 명령에 대해 설명하였다. 분류 종류 명령어 설명 iSQL 구동 및 종료 구동 $ isql [option] 쉘 상에서 이 명령어를 수행하면 iSQL 이 구동된다. 사용 가능한 옵션에 대해 서는 iSQL 커맨드 라인 옵션 절의 내용 을 참조한다. 프롬프트 iSQL> iSQL 프롬프트로 명령어 입력 후 ENTER 키를 입력한다. 종료 EXIT; QUIT; iSQL을 종료한다. Altibase의 구동 및 종료 Altibase 구동 STARTUP PRE-PROCESS, PROCESS, CONTROL, META, SERVICE 중 하나의 옵션을 이 용하여 Altibase의 다단계 구동을 수행 한다. Altibase 종료 SHUTDOWN NORMAL, IMMEDIATE, ABORT 중 하 나의 옵션을 사용하여 Altibase를 종료 한다. 데이터베 이스 접속 및 해제 다른 사용 자로 서버 에 접속 CONNECT [logon] [nls] [AS sysdba]; logon: user1/pass1 nls: NLS=character_set iSQL에서 데이터베이스 접속 후 다른 사용자로 접속하기 위한 명령어로 패스 워드 pass1을 가진 user1이라는 사용자 로 접속한다. 접속이 성공하면 이전 세 션과 관련된 정보는 지워진다. AS 절은 SYS 사용자가 sysdba 관리자 모드로 서버에 접속하는 것을 허용한다. sysdba로 접속하는 것은 한 사용자만 허용된다. nls 옵션은 문자 집합을 설정한다. 문자 집합에 대한 자세한 설명은 위의 절 iSQL 커맨드 라인 옵션: -NLS_USE 옵 션을 참조하기 바란다. 접속해제 DISCONNECT; 현재 세션을 종료하고 서버와의 연결을 끊는다. iSQL 이용방법 21 분류 종류 명령어 설명 데이터베 이스 객체 정보 조회 성능 뷰 목 록 보기 SELECT * FROM V$TAB; 시스템이 제공하는 모든 성능 뷰 목록을 보여준다. 이 명령어는 iSQL에서만 사용 가능 하다. 테이블 목록 보기 SELECT * FROM TAB; 현재 생성된 테이블의 목록을 보여준다. 이 명령어는 iSQL에서만 사용가능 하다. 테이블 구조 보기 DESC samp; samp 테이블의 구조를 보여준다. 시퀀스 정보 보기 SELECT * FROM SEQ; SYS 계정으로 서버에 접속한 경우 모든 시퀀스 들의 정보를 보여준다. 일반 사용자로 서버에 접속한 경우는 그 사용자가 생성한 시퀀스들에 대한 정보 만 보여준다. 이 명령어는 iSQL에서만 사용가능 하다. 트랜잭션 제어 트랜잭션 모드 설정 AUTOCOMMIT ON; AUTOCOMMIT OFF; 트랜잭션 커밋을 자동으로 할 것인지를 결정한다. 기본값: ON 기타 SET 기능 SET PLANCOMMIT ON; SET PLANCOMMIT OFF; AUTOCOMMIT OFF 모드에서 EXPLAIN PLAN이 ON (또는 ONLY) 조 건일 때, DESC, SELECT * FROM TAB; 또는 SELECT * FROM seq_name; 등과 같은 명령어를 수행했을 때 자동으로 commit 할지를 결정한다. 기본값: OFF 파일 관리 파일에 결 과 저장 SPOOL filename; iSQL에서 실행한 명령의 결과를 filename에 기록하기 시작한다. SPOOL OFF; 스풀링을 중지한다. sql script 의 실행 START file_name; script 파일을 읽어, 파일 내의 SQL문들 을 순차적으로 수행한다. @ file_name; iSQL 프롬프트 상에서 수행 시 start와 동일한 기능을 갖는다. @@ file_name; 스크립트 파일 안에서 사용될 때 호출을 한 스크립트 파일이 위치하는 디렉터리 에서 파일을 찾아서 수행한다. 22 iSQL User's Manual 분류 종류 명령어 설명 SQL문 파 일 저장 SAVE abc.sql; 현재 iSQL 버퍼에 있는 명령어 중 가장 마지막 명령어가 파일로 저장된다. SQL문의 load LOAD abc.sql; 파일에 저장되어 있는 명령어 중 가장 첫 번째 명령어가 명령어 버퍼의 마지막 으로 로드된다. DML문을 파일로 저 장 SET QUERYLOGGING ON; SET QUERYLOGGING OFF: INSERT, UPDATE, DELTE, MOVE 등의 DML문 실행 시 이를 $ALTIBASE_HOME/trc/isql_query.log 에 기록한다. 질의문 편 집 ED[IT] 가장 최근에 실행된 질의문을 편집한다. ED[IT] filename[.sql] 기존 파일 또는 새로운 파일을 편집한 다. 2ED[IT] 또는 2 ED[IT] 히스토리 목록에 있는 번호가 2인 질의 문을 편집한다. 출력 옵션 제어 Select 결 과 포맷팅 SET LINESIZE 100; select 결과 출력 시 디스플레이 되는 한 라인의 사이즈를 설정한다. 10 에서 32767 사이의 값이어야 한다. 기본값: 80 SET LOBSIZE 10; CLOB 칼럼을 출력 시 디스플레이 되는 데이터의 길이를 설정한다. 기본값: 80 SET LOBOFFSET 3; CLOB 칼럼을 출력 시 디스플레이 되는 데이터의 오프셋을 설정한다. 기본값: 0 SET FEED[BACK] ON; SET FEED[BACK] OFF; SET FEED[BACK] n; 쿼리 실행결과 건수의 출력여부를 설정 한다. SET PAGESIZE 10; select 결과 레코드들을 몇 개 단위로 출력할지를 결정하는 명령어로 `0`으로 설정할 경우 결과 레코드 전체를 한꺼번 에 출력한다. 기본값: 0 iSQL 이용방법 23 분류 종류 명령어 설명 SET HEADING ON; SET HEADING OFF; select 결과 출력 시 헤더 출력 유무 기본값: ON SET COLSIZE N; CHAR, VARCHAR 타입 칼럼의 결과를 표시할 자릿수 설정 SET NUM[WIDTH] N; NUMERIC, DECIMAL, NUMBER, FLOAT 타입의 SELECT 결과를 표시할 자릿수 설정. 기본값: 11 CL[EAR] COL[UMNS] COLUMN으로 설정된 칼럼의 형식 해제 COL[UMN] [{column | expr} [option]] SELECT 대상(target)이 되는 칼럼의 표 시 형식 설정 및 확인 SET NUMF[ORMAT] format; NUMERIC, DECIMAL, NUMBER, FLOAT 타입의 SELECT 결과를 표시할 형식 설정 SQL문 실 행시간 SET TIMING ON; SET TIMING OFF; SQL 명령 실행에 걸린 시간 출력유무 기본값: OFF SQL문 실 행시간 출 력 단위 설 정 SET TIMESCALE SEC; SET TIMESCALE MILSEC; SET TIMESCALE MICSEC; SET TIMESCALE NANSEC; SQL문의 쿼리 수행 시간 단위를 초, 밀 리초, 마이크로초, 나노초 등으로 설정한 다. Check 제 약조건 정 보 출력의 유무 SET CHKCONSTRAINTS ON; SET CHKCONSTRAINTS OFF; 테이블 구조(DESC)를 볼 때 Check 제 약조건 정보 포함 출력 여부 설정. 기본값: OFF foreign key 정보 출력의 유 SET FOREIGNKEYS ON; 테이블 구조(DESC)를 볼 때 외래 키 정 보 포함 출력 여부 설정. 24 iSQL User's Manual 분류 종류 명령어 설명 무 SET FOREIGNKEYS OFF; 기본값: OFF 파티션 정 보 출력의 유무 SET PARTITIONS ON; SET PARTITIONS OFF; 테이블 구조(DESC)를 볼 때 파티션 정 보 포함 출력 여부 설정. 기본값: OFF 스크립트 실행 결과 의 출력 유 무 SET TERM ON; SET TERM OFF; 스크립트 파일 실행의 결과를 화면상에 보여줄지를 결정한다. 기본값: ON 스크립트 명령어 출 력 유무 SET ECHO ON; SET ECHO OFF; 스크립트 실행 결과를 출력하지 않을 때 (SET TERM OFF), @으로 실행된 스크립 트 파일 내의 명령어들의 출력 여부를 설정한다. 기본값 : OFF 치환 변수 대체 여부 SET DEFINE ON; SET DEFINE OFF; 치환 변수가 있는 스크립트 파일 수행 시, 사용자가 입력한 파라미터 값으로 치환 변수를 대체할지 여부를 지정한다. 기본값: OFF 치환 변수 교체 전후 내용 출력 SET VERIFY ON; SET VERIFY OFF; 치환 변수가 있는 스크립트 파일 수행 시, 치환 변수가 파라미터 값으로 교체 되기 전후의 SQL문을 출력할지 여부를 지정한다. 기본값: ON 실행 계획 트리 출력 ALTER SESSION SET EXPLAIN PLAN = ON; ALTER SESSION SET EXPLAIN PLAN = ONLY; ALTER SESSION SET EXPLAIN PLAN = OFF; SELECT문에 대한 실행 계획의 출력 여 부를 설정한다. 기본값: OFF SELECT 결과 출력 방향 SET VERTICAL ON; SET VERTICAL OFF; 레코드를 조회할 때 이 값을 ON으로 설 정하면, SELECT의 결과가 세로로 보여 진다. 기본값: OFF iSQL 이용방법 25 분류 종류 명령어 설명 iSQL 화면 설정 값 보기 SHOW LINESIZE 현재의 LINESIZE 값을 보여준다. SHOW COLSIZE 현재의 COLSIZE 값을 보여준다. SHOW LOBOFFSET 현재의 LOBOFFSET 값을 보여준다. SHOW LOBSIZE 현재의 LOBSIZE 값을 보여준다. SHOW PAGESIZE 현재의 PAGESIZE 값을 보여준다. SHOW PLANCOMMIT AUTOCOMMIT OFF 모드에서 명령어를 수행할 때 자동으로 커밋되는 여부를 보 여준다. SHOW QUERYLOGGING DML 문이 실행될 때 $ALTIBASE_HOME/trc/isql_query.log 에 기록되는지 여부를 보여준다. SHOW FEEDBACK 현재 설정된 FEEDBACK 값을 보여준 다. SHOW HEADING 현재의 HEADING 설정 여부를 보여준 다. SHOW TERM 현재 TERM 설정 여부를 보여준다. SHOW ECHO 현재 ECHO 설정 여부를 보여준다. SHOW TIMING 현재의 TIMING 설정 여부를 보여준다. SHOW TIMESCLAE 현재의 SQL문의 쿼리 수행 시간 단위가 무엇으로 설정되었는지를 보여준다. SHOW USER 현재 사용자를 보여준다. SHOW CHKCONSTRAINTS 현재의 Check 제약조건 설정 여부를 보 여준다. SHOW FOREIGNKEYS 현재의 외래 키 설정 여부를 보여준다. SHOW PARTITIONS 현재의 파티션 출력 여부 설정을 보여준 다. SHOW VERTICAL 현재의 SELECT 결과가 세로로 출력되는 지 여부를 보여준다. SHOW ALL 현재 세션의 화면 설정 값을 보여준다. 26 iSQL User's Manual 분류 종류 명령어 설명 변수 및 Prepared SQL문 변수 선언 VAR p1 INTEGER; INTEGER 타입의 변수 p1을 선언한다. VARIABLE p2 CHAR(10); CHAR 타입의 변수 p2를 선언한다. 변수에 값 할당 EXECUTE :p1 := 100; 변수 p1에 100을 할당한다. EXEC :p2 := 'abc'; 변수 p2에 ‘abc’를 할당한다. 변수 보기 PRINT VAR[IABLE]; 현재 선언된 변수들을 보여준다. PRINT p1; 변수 p1의 타입과 값을 보여준다. Prepared SQL문 수 행 PREPARE SQL문; Prepared SQL문으로 질의 최적화 과정 과 실행 과정을 나누어 수행하게 한다. iSQL에서의 SQL문 수행은 기본적으로 최적화와 실행을 한번에 수행하는 Direct Execution 방법이다. iSQL 상에서 두 가지 수행 방법에 대한 결과에는 차이가 없으며 Prepared SQL 문의 경우 변수를 사용해 값을 바인딩 하여 SQL문 수행이 가능하다. 사용자 편 의 기능 히스토리 목록 보기 HISTORY; H; 현재 iSQL buffer에 저장되어 있는 명령 어들의 목록을 보여준다. 반복 실행 / 현재 iSQL buffer의 명령어를 반복하여 실행한다. 가장 최근에 수행한 명령어가 다시 실행된다. 2/ HISTORY 명령에 의해 나타난 목록의 번호가 2인 명령어가 실행된다. 쉘 명령 실 행 ! shell command 느낌표 다음에 쉘 명령을 입력하면 iSQL에서 바로 쉘 명령이 실행된다. 명령 프롬 프트 변경 SET SQLP[ROMPT] {text} iSQL 명령 프롬프트를 설정한다. 주석 /* comment */ -- comment 여러 라인 주석 한 라인 주석 iSQL 이용방법 27 분류 종류 명령어 설명 도움말 HELP; HELP INDEX; HELP EXIT; 도움말 사용법 명령어 리스트 출력 EXIT 명령어에 대한 설명 28 iSQL User's Manual iSQL 관련 환경변수 ALTIBASE_HOME 패키지가 설치된 디렉터리의 위치이다. ALTIBASE_HOME은 iSQL을 사용하기 위해서 반드시 설정해야 하는 환경 변수이다. 일반적으로 서버가 설치될 때 자동으로 설정되지만 클라이언트의 경우에는 서버의 환경 변수와 충돌이 있을 수 있으므로 사용자가 직접 설정해야 한다. ALTIBASE_PORT_NO 접속할 서버의 포트 번호이다. -PORT 옵션 또는 altibase.properties 파일 내의 프로퍼티를 통해서 지정할 수도 있다. 포트 번호 설정의 우선 순위는 -PORT 옵션, 환경변수 ALTIBASE_PORT_NO, altibase.properties 파일 내의 프로퍼티 순이며 아무것도 설정되지 않았을 경우에는 포트 번호 입력 프롬프트가 출력된다. ALTIBASE_SSL_PORT_NO iSQL이 SSL/TLS 통신으로 접속할 서버의 포트 번호이다. SSL 포트 번호의 우선 순위는 -PORT 옵션, 환경변수, ALTIBASE_SSL_PORT_NO, altibase.properties 파일 내의 프로퍼티 순이다. 만약 아무것도 설정되지 않았을 경우에는 포트 번호 입력 프롬프트가 출력된다. ALTIBASE_NLS_USE 데이터 검색 시 사용자에게 보여주기 위해 사용되는 문자 집합이다. US7ASCII KO16KSC5601 MS949 iSQL 이용방법 29 BIG5 GB231280 MS936 UTF8 SHIFTJIS MS932 EUCJP -NLS_USE 옵션 또는 altibase.properties파일 내의 프로퍼티를 통해서 지정할 수도 있다. NLS_USE 설정의 우선 순위는 -NLS_USE 옵션, 환경 변수 ALTIBASE_NLS_USE, altibase.properties 파일 내의 프로퍼티 순이며 설정되지 않았을 경우에는 기본 문자 집합(US7ASCII)을 사용한다. ALTIBASE_NLS_NCHAR_LITERAL_REPLACE 기본적으로 클라이언트는 쿼리 문 전체를 데이터베이스 문자 셋으로 변환하여 전송한다. 그러나, 특정 리터럴에 대해 이런 동작을 막으려면, 이 환경 변수의 값을 1로 설정하고 그 리터럴 앞에 “N” 문자를 덧붙이면 된다. 즉, NCHAR 리터럴로 만드는 것이다. 이 환경 변수의 값이 1일 때, 클라이언트는 쿼리 문 내의 모든 리터럴 앞에 “N” 문자가 있는지 찾는다. 만약 찾게 되면 클라이언트는 그 리터럴을 데이터베이스 문자 셋으로 변환하지 않고 그대로 전송하며 서버가 직접 내셔널 문자 셋으로 변환한다. 이것은 데이터베이스 문자 셋과는 다른 인코딩이 필요한 NCHAR 타입 데이터를 사용하고자 할 때 유용하다. 0: “N” 문자가 있는지 검사하지 않고 쿼리 문 전체를 데이터베이스 문자 셋으로 변환한다. 1: “N” 문자가 붙어있는 NCHAR 리터럴은 데이터베이스 문자 셋으로 변환하지 않는다. 이 값을 1로 설정하는 것은 클라이언트의 비용이 크게 발생하므로, 사용시 주의가 필요하다. ISQL_CONNECTION Altibase를 클라이언트-서버 구조로 운영할 때, 사용자는 응용 30 iSQL User's Manual 시스템의 구성에 적합한 클라이언트-서버 프로토콜을 선택하여 환경 변수를 설정할 수 있다. Altibase는 TCP/IP, IPC, IPCDA와 UNIX DOMAIN 소켓, SSL/TLS 프로토콜을 제공한다. Altibase 서버와 통신하기 위한 기본값은 TCP/IP 프로토콜이다. 단, IPC 또는 IPCDA 프로토콜을 이용할 경우엔 Altibase 프로퍼티들 중에서 IPC 채널과 관련된 프로퍼티들의 값(IPC_CHANNEL_COUNT 또는 IPCDA_CHANNEL_COUNT)도 함께 고려해야 한다. 예) IPC 사용시 환경 변수 설정 CSH: setenv ISQL_CONNECTION IPC SH: ISQL_CONNECTION=IPC; export ISQL_CONNECTION 주의: ISQL_CONNECTION 환경 변수의 설정 값이 UNIX 또는 IPC인 경우, -s 옵션에 원격 서버를 명시해서 iSQL을 실행하면 ISQL_CONNECTION 설정이 무시되었다는 경고 메시지와 함께 TCP로 원격 서버에 접속한다. ISQL_BUFFER_SIZE 쿼리를 저장할 버퍼의 크기를 환경변수를 이용하여 지정할 수 있다. 예) CSH: setenv ISQL_BUFFER_SIZE 128000 SH: ISQL_BUFFER_SIZE = 128000; export ISQL_BUFFER_SIZE ALTIBASE_DATE_FORMAT Date 데이터 타입인 data를 select 시 기본 날짜 형식인 YYYY/MM/DD HH:MI:SS을 환경변수 ALTIBASE_DATE_FORMAT을 설정하여 새로운 날짜 형식으로 나타낼 수 있다. 예) Born, Korn, 또는 Bash Shell의 경우 export ALTIBASE_DATE_FORMAT=’DD-MON-YYYY’ ISQL_EDITOR 기본 편집기(예: /bin/vi )를 바꾸기 위한 환경변수를 설정할 수 있다. 예) CSH: setenv ISQL_EDITOR /usr/bin/ed SH: ISQL_EDITOR=/usr/bin/ed; export ISQL_EDITOR iSQL 이용방법 31 ALTIBASE_IPC_FILEPATH 유닉스 환경에서 서버와 클라이언트가 IPC로 접속할 때 ALTIBASE_HOME이 다른 경우, 유닉스 도메인의 소켓 경로가 일치하지 않아 접속할 수 없다. 이 때 클라이언트 측의 ALTIBASE_IPC_FILEPATH 환경 변수 또는 iSQL 옵션인 -IPC- FILEPATH를 서버의 $ALTIBASE_HOME/trc/cm-ipc파일로 설정하여 서버와 클라이언트가 같은 소켓 파일을 사용하도록 하면, IPC 접속이 가능하다. IPCDA_FILEPATH 유닉스 환경에서 서버와 클라이언트가 IPCDA로 접속할 때 ALTIBASE_HOME이 다른 경우, 유닉스 도메인의 소켓 경로가 일치하지 않아 접속할 수 없다. 이 때 클라이언트 측의 IPCDA_FILEPATH 환경 변수 또는 iSQL 옵션인 -IPCDA - FILEPATH를 서버의 $ALTIBASE_HOME/trc/cm-ipcda파일로 설정하여 서버와 클라이언트가 같은 소켓 파일을 사용하도록 하면, IPCDA 접속이 가능하다. ALTIBASE_TIME_ZONE 클라이언트의 타임 존을 설정하는 환경 변수이다. 이 환경 변수에 DB_TZ를 지정하면 데이터베이스 서버와 동일한 타임 존이 사용된다. 이 환경 변수는 Asia/Seoul과 같은 타임 존의 이름이나 KST 같은 약어를 사용해서 설정할 수 있다. 또는 +09:00 같은 UTC 오프셋 값을 사용해서 설정할 수도 있다. 32 iSQL User's Manual 개인별 iSQL 환경 설정 iSQL 사용자들은 특별한 방법으로 iSQL 환경을 설정하고 각 세션에서 그러한 설정을 다시 사용할 수 있다. 예를 들어, OS 파일을 통하여 질의 결과마다 현재 시간을 출력할 수 있도록 사용자가 원하는 출력 서식 형태로 만들 수 있다. 이러한 파일은 다음과 같이 두 가지로 나눌 수 있다. glogin.sql iSQL 시작 시의 초기화 작업을 위하여 DB 관리자에 의해 생성된 전역 스크립트 파일인 glogin.sql의 사용을 지원한다. iSQL은 임의의 사용자가 iSQL을 기동할 때 마다 이 스크립트를 실행한다. 전역 파일은 DB 관리자가 모든 사용자들에게 특별한 사이트에서 iSQL 환경을 설정할 수 있도록 한다. 전역 스크립트 파일은 $ALTIBASE_HOME/conf 밑에 위치한다. login.sql iSQL은 또한 glogin.sql 후에 실행되는 login.sql 파일도 지원한다. 만약, glogin.sql 파일과 login.sql 파일이 모두 존재하는 경우 iSQL 구동 시 glogin.sql이 실행된 후 login.sql이 실행되므로 login.sql에 있는 명령어들로 우선수행 (override) 된다. 하나의 유닉스 계정을 여러 명이 사용할 경우에는 glogin.sql 파일을 개인적인 용도로 수정하기가 불가능할 수도 있다. 이런 경우 일반 사용자는 SQL 명령어들, 저장 프로시저, 또는 iSQL 명령어들을 각자의 개인용 작업 디렉터리 내에 login.sql 파일에 첨가할 수 있다. 사용자가 iSQL을 구동할 때, iSQL은 자동적으로 현재 디렉토리에서 login.sql 파일을 찾고, 그 안에 명령어들을 수행한다. login.sql 파일은 iSQL 초기 설정이나 각각의 세션에 대한 동작을 조정할 수 없다. LOGIN 파일 변경 사용자는 임의의 다른 스크립트들처럼 LOGIN 파일을 변경할 수 있다. 다음은 임의의 사용자(user1)가 autocommit mode를 off로 iSQL 이용방법 33 변경하고 SQL 문들을 실행하기 위하여 LOGIN 파일을 작성한 예이다. $ vi glogin.sql AUTOCOMMIT ON SET HEADING OFF SELECT sysdate FROM dual; $ vi login.sql AUTOCOMMIT OFF; SET HEADING ON DROP TABLE savept; CREATE TABLE savept(num INTEGER); INSERT INTO savept VALUES(1); SAVEPOINT sp1; INSERT INTO savept VALUES(2); SELECT * FROM savept; ROLLBACK TO SAVEPOINT sp1; SELECT * FROM savept; COMMIT; $ isql ------------------------------------------------------- Altibase Client Query utility. Release Version 7.1.0.1 Copyright 2000, Altibase Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : user1 Write Password : ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 Set autocommit on success. -> 먼저 glogin.sql을 실행 28-DEC-2004 -> heading off 1 row selected. Set autocommit off success. -> glogin.sql이 실행된 후 사용자의 현재 작업 디렉터리에서 login.sql을 실행 Drop success. Create success. 1 row inserted. Savepoint success. -> autocommit mode off 에서만 실행 가능 1 row inserted. SAVEPT.NUM -> heading on -------------- 1 2 2 rows selected. Rollback success. SAVEPT.NUM -------------- 1 1 row selected. Commit success. 주의 사항 LOGIN 파일에는 보안상의 이유로 사용자 이름과 비밀번호를 함께 입력하는 CONNECT 명령어를 사용할 수 없다. 만약 LOGIN 파일에 34 iSQL User's Manual CONNECT 명령어가 포함된 경우 아래의 경고 메시지를 출력하고 해당 명령어는 실행되지 않는다. WARNING: CONNECT command in glogin.sql file ignored iSQL 사용 예 35 2. iSQL 사용 예 이 장은 iSQL을 이용하여 데이터베이스를 다루는 몇 가지 예를 설명한다. 36 iSQL User's Manual 로그인 iSQL 유틸리티를 사용하기 위해서는 먼저 로그인 과정을 거쳐야 하는데, 커맨드 라인 상에서 직접 연결 정보를 입력하는 방법과 입력 프롬프트 상에서 입력하는 방법이 있다. isql -U userID -P password [-SYSDBA] 또는 isql [-SYSDBA] 서버와 연결하기 위한 부가 정보로는 서버 이름(-S), 사용자 ID(-U), 패스워드(-P)가 있다. 사용자 ID와 패스워드는 대소문자를 구별하지 않는다. SYS 사용자가 관리자 모드로 iSQL 유틸리티를 사용하기 위해서는 - SYSDBA 옵션을 사용한다. SYSDBA 옵션으로 원격에서도 접속이 가능하다. 사용자 ID에 특수 문자 또는 공백이 포함된 경우 큰따옴표를 사용해야 한다. $ isql -U \"user name\" 제한 사항 SYSDBA 모드로 접속하는 것은 한 명의 사용자만 허용된다. 2명 이상의 사용자가 동시에 SYSDBA 모드로 접속할 수 없다. 원격에서 SYSDBA 모드로 접속할 수 있지만, DBMS를 구동할 수는 없다. 시스템 권한에 대한 자세한 정보는 SQL Reference 을 참조하기 바란다. iSQL 사용 중 발생하는 에러에 대한 자세한 정보는 Error Message Reference를 참조하기 바란다. $ isql -U sys -P manager [-SYSDBA] 또는 $ isql [-sysdba] ------------------------------------------------------- Altibase Client Query utility. Release Version 7.1.0.1 Copyright 2000, Altibase Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- Write Server Name (default:127.0.0.1) : iSQL 사용 예 37 Write UserID : sys Write Password : manager -> 화면에는 암호가 나타나지 않는다. ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL(sysdba)> -> iSQL이 서버와 연결된 상태이며, 여기에서 SQL, iSQL, PSM 명령등을 입력하여 실행할 수 있다. 38 iSQL User's Manual Altibase의 구동 및 종료 Altibase의 구동 및 종료는 iSQL을 사용해 수행한다. Altibase 구동 Altibase를 구동시키기 위해서는 데이터베이스 생성 시와 마찬가지로 우선 isql을 -sysdba 옵션으로 띄워야 한다. * Altibase의 startup 명령어는 Altibase(isql 포함)를 설치한 유닉스 계정으로만 수행이 가능하다. 다음은 iSQL를 이용한 Altibase 구동 예제이며 Altibase 구동에 대한 자세한 설명은 Administrator’s Manual 제2장 Altibase 구동 및 종료의 내용을 참조한다. $ isql -s 127.0.0.1 -u sys -p manager -sysdba ------------------------------------------------------- Altibase Client Query utility. Release Version 7.1.0.1 Copyright 2000, Altibase Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 [Connected to idle instance] iSQL(sysdba)> startup service Connecting to the DB server... Connected. TRANSITION TO PHASE : PROCESS TRANSITION TO PHASE : CONTROL TRANSITION TO PHASE : META [SM] Recovery Phase - 1 : Preparing Database : Dynamic Memory Version => Parallel Loading [SM] Recovery Phase - 2 : Loading Database [SM] Recovery Phase - 3 : Skipping Recovery Threads... Refining Disk Table [SM] Refine Memory Table : ................................................... ..... [SUCCESS] [SM] Rebuilding Indices [Total Count:100] .................................. [SUCCESS] TRANSITION TO PHASE : SERVICE [CM] Listener started : TCP on port 20300 [CM] Listener started : UNIX [RP] Initialization : [PASS] --- STARTUP Process SUCCESS --- Command execute success. iSQL 사용 예 39 Altibase 종료 현재 구동중인 Altibase 서버를 종료하려면 SHUTDOWN 명령어를 사용한다. 다음은 iSQL를 이용한 Altibase 종료 예제이며 Altibase 종료에 대한 자세한 설명은 Administrator’s Manual 제2장 Altibase 구동 및 종료의 내용을 참조한다. iSQL(sysdba)> shutdown normal Ok..Shutdown Proceeding.... TRANSITION TO PHASE : Shutdown Altibase [RP] Finalization : PASS shutdown normal success. 40 iSQL User's Manual 접속 연결 및 해제 접속 연결(CONNECT) 명시된 사용자 ID로 Altibase에 연결한다. 첫 연결 실패 시 CONNECT 명령어는 사용자 ID나 패스워드를 다시 프롬프트(prompt) 하지 않는다. CONNECT [logon] [nls] [AS SYSDBA]; logon: userID[/password] nls: NLS=character_set userID/password Altibase에 연결하고자 하는 사용자의 id와 패스워드 NLS=character_set 문자집합 iSQL> CONNECT sys/manager NLS=US7ASCII Connect success. AS SYSDBA AS 절은 SYS 사용자가 sysdba 관리자 모드로 서버에 접속하는 것을 허용한다. CONNECT가 성공하면 현재의 세션을 종료하고 명시된 사용자 ID와 패스워드, altibase.properties 내의 프로퍼티 정보를 사용해서 서버에 접속한다. 따라서 이전의 세션 정보는 없어진다. 예를 들어 altibase.properties의 AUTOCOMMIT 모드가 TRUE였고, iSQL에서 AUTOCOMMIT 모드를 FALSE로 변경하여 쿼리를 수행하다가 이 CONNECT문을 수행하였다면 AUTOCOMMIT 모드는 altibase.properties 의 AUTOCOMMIT 프로퍼티에 의하여 TRUE로 변경된다. CONNECT가 실패한다면 이전의 세션은 종료되고 서버와의 연결이 끊어진 상태가 된다. 즉, 이후에 수행되는 SQL문의 결과는 모두 “Not connected.” 이다. 만약, 다시 서버와 연결을 시도할 때는 CONNECT userID/password [AS SYSDBA];를 수행한다. $ isql ------------------------------------------------------- Altibase Client Query utility. iSQL 사용 예 41 Release Version 7.1.0.1 Copyright 2000, Altibase Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : SYS Write Password : ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL> SHOW USER; User : SYS iSQL> CREATE USER altiadmin IDENTIFIED BY altiadmin1234; Create success. iSQL> CONNECT altiadmin/altiadmin1234; Connect success. iSQL> SHOW USER; User : ALTIADMIN iSQL> CREATE TABLE altitbl(i1 INTEGER, i2 CHAR(5)); Create success. iSQL> SELECT * FROM tab; TABLE NAME TYPE --------------------------------------------- ALTITBL TABLE . . . 33 row selected. iSQL> CONNECT sys/manager; Connect success. iSQL> SHOW USER; User : SYS iSQL> CREATE TABLE systbl(i1 INTEGER, i2 CHAR(5)); Create success. iSQL> SELECT * FROM tab; USER NAME TABLE NAME TYPE ----------------------------------------------- SYSTEM_ SYS_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINTS_ SYSTEM TABLE . . . ALTIADMIN ALTITBL TABLE. SYS SYSTBL TABLE . . . 93 rows selected. 주의사항 사용자 이름에 소문자, 특수 문자 또는 공백이 포함된 경우 큰따옴표를 사용해야 한다. iSQL> CONNECT "user name"; SSL 접속 서버 전용 모드 서버 전용 모드(SSL_CLIENT_AUTHENTICATION 프로퍼티 값이 42 iSQL User's Manual 0으로 설정)에서 개인 인증서를 사용하는 경우, 서버에서 클라이언트의 인증을 수행하지 않기 때문에 클라이언트 인증서와 개인키 파일의 위치를 지정할 필요가 없다. 서버에서 제공하는 인증서를 검증하기 위해서 -ssl_verify 옵션을 활성화시키고, 서버의 공개키(public key)가 포함된 CA 인증서 파일의 위치를 지정해야 한다. $ export ISQL_CONNECTION=SSL $ isql -s localhost -u sys -p MANAGER or $ isql -s localhost -u sys -p MANAGER -ssl_verify -ssl_ca ~/cert/ca-cert.pem 상호 인증 모드 상호 인증 모드(SSL_CLIENT_AUTHENTICATION 프로퍼티 값이 1로 설정)로 개인 인증서를 사용하는 경우, 서버에서 클라이언트 인증을 수행한다. 따라서 서버에 제공하는 클라이언트의 인증서와 개인키 파일의 위치를 지정해야 한다. 서버에서 제공하는 인증서를 검증하기 위해서는 -ssl_verify 옵션을 활성화시키고, 서버의 공개키가 포함된 CA 인증서 파일의 위치를 지정해야 한다. $ export ISQL_CONNECTION=SSL $ isql -s localhost -u sys -p MANAGER \ -ssl_cert ~/cert/client-cert.pem \ -ssl_key ~/cert/client-key.pem or $ isql -s localhost -u sys -p MANAGER \ -ssl_verify -ssl_ca ~/cert/ca-cert.pem \ -ssl_cert ~/cert/client-cert.pem \ -ssl_key ~/cert/client-key.pem 접속 해제 현재 세션을 종료하고 서버와의 연결을 끊는다. 이후에 수행되는 SQL문의 결과는 모두 “Not connected.”이며, 다시 서버와 연결을 시도할 때는 CONNECT userID/password;를 수행한다. DISCONNECT; iSQL> INSERT INTO systbl VALUES(1, 'A1'); 1 row inserted. iSQL> INSERT INTO systbl VALUES(2, 'A2'); 1 row inserted. iSQL> SELECT * FROM systbl; SYSTBL.I1 SYSTBL.I2 -------------------------- 1 A1 2 A2 2 rows selected. iSQL> DISCONNECT; Disconnect success. iSQL 사용 예 43 iSQL> INSERT INTO systbl VALUES(3, 'A3'); [ERR-91020 : No Connection State] iSQL> SELECT * FROM systbl; [ERR-91020 : No Connection State] iSQL> CONNECT sys/manager; Connect success. NOLOG 옵션으로 iSQL 실행 '/NOLOG' 옵션은 대상 데이터베이스에 접속하지 않고 iSQL을 실행하기 위해 제공된다. 이 옵션을 사용하려면, 서버에 접속하지 않더라도 서버 IP 주소와 포트 번호를 반드시 입력해야 한다 . isql -s localhost -port 20300 /NOLOG iSQL을 구동한 후 SQL 구문을 수행하려면, CONNECT 명령어로 대상 데이터베이스 사용자 계정과 비밀번호를 입력하여 데이터베이스에 접속한 이후 가능하다. 44 iSQL User's Manual 데이터베이스와 객체 정보 조회 성능 뷰 조회 성능 뷰는 서버의 상태 및 데이터베이스 정보를 조회할 수 있는 데이터 딕셔너리 테이블의 일종으로 Altibase가 제공하는 성능 뷰의 목록을 확인하기 위해서는 다음 명령어를 사용한다. iSQL> SELECT * FROM V$TAB; TABLE NAME TYPE --------------------------------------------- V$ALLCOLUMN PERFORMANCE VIEW V$ARCHIVE PERFORMANCE VIEW V$BUFFPOOL_STAT PERFORMANCE VIEW V$DATABASE PERFORMANCE VIEW V$DATAFILES PERFORMANCE VIEW V$DISKGC PERFORMANCE VIEW V$DISKTBL_INFO PERFORMANCE VIEW V$FLUSHINFO PERFORMANCE VIEW . Altibase가 제공하는 전체 성능 뷰의 목록과 칼럼의 의미 등은 General Reference 의 데이터 딕셔너리 설명을 참조한다. 각 성능 뷰의 데이터는 일반 테이블 조회와 동일한 SELECT문을 사용하여 조회할 수 있으며 조인 등을 사용해 다양한 형태로 결과를 출력할 수 있다. 테이블 목록 보기 데이터베이스에 존재하는 모든 테이블에 대한 정보를 알고 싶으면 아래와 같은 명령을 사용하면 된다. sys_tables_ 메타 테이블은 Altibase에서 제공하는 데이터베이스 카탈로그 정보를 수록하는 시스템 내부 테이블이다. iSQL> SELECT * FROM system_.sys_tables_; . . iSQL> SELECT * FROM tab; -> 이 명령어는 iSQL 에서만 사용가능. USER NAME TABLE NAME TYPE ----------------------------------------------- . .. iSQL 사용 예 45 테이블 구조 보기 사용자가 생성한 테이블에 관한 정보를 알고 싶으면 아래와 같은 명령을 사용한다. DESC table_name; CREATE TABLE department ( DNO SMALLINT PRIMARY KEY, DNAME CHAR(30) NOT NULL, DEP_LOCATION CHAR(9), MGR_NO INTEGER ); iSQL> DESC department; -> table_name: 테이블 정보(테이블 구조)를 알고 싶은 테이블명. [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ----------------------------------------------------------- NAME TYPE IS NULL ----------------------------------------------------------- DNO SMALLINT FIXED NOT NULL DNAME CHAR(30) FIXED NOT NULL DEP_LOCATION CHAR(9) FIXED MGR_NO INTEGER FIXED [ INDEX ] ----------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- __SYS_IDX_ID_122 BTREE UNIQUE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- DNO 테이블 이름에 소문자, 특수 문자 또는 공백이 포함된 경우 큰따옴표를 사용해야 한다. iSQL> DESC "table name"; iSQL> DESC "user name"."table name"; 시퀀스 정보 보기 데이터베이스에 존재하는 모든 시퀀스에 대한 정보를 알고 싶으면 아래와 같은 명령을 사용하면 된다. SELECT * FROM seq; iSQL> CONNECT sys/manager; Connect success. iSQL> CREATE USER user1 IDENTIFIED BY user1; Create success. iSQL> CONNECT user1/user1; Connect success. iSQL> CREATE SEQUENCE seq1 MAXVALUE 100 CYCLE; Create success. iSQL> CREATE SEQUENCE seq2; Create success. iSQL> CONNECT sys/manager; Connect success. 46 iSQL User's Manual iSQL> CREATE SEQUENCE seq2 START WITH 20 INCREMENT BY 30; Create success. iSQL> CREATE SEQUENCE seq3 CACHE 40; Create success. iSQL> SELECT * FROM seq; -> SYS 계정으로 데이터베이스에 접속한 경우 생성된 모든 sequence 들의 정보를 출력한다. USER_NAME -------------------------------------------- SEQUENCE_NAME CURRENT_VALUE INCREMENT_BY ------------------------------------------------ MIN_VALUE MAX_VALUE CYCLE CACHE_SIZE ------------------------------------------------ SYS SEQ2 20 30 1 9223372036854775806 NO 20 SYS SEQ3 1 1 1 9223372036854775806 NO 40 USER1 SEQ1 1 1 1 100 YES 20 USER1 SEQ2 1 1 1 9223372036854775806 NO 20 4 rows selected. iSQL> CONNECT user1/user1; Connect success. iSQL> SELECT * FROM seq; -> user1이 생성한 모든 sequence 들의 정보를 출력한다. SEQUENCE_NAME CURRENT_VALUE INCREMENT_BY ------------------------------------------------ MIN_VALUE MAX_VALUE CYCLE CACHE_SIZE ------------------------------------------------ SEQ1 1 1 1 100 YES 20 SEQ2 1 1 1 9223372036854775806 NO 20 2 rows selected. iSQL 사용 예 47 트랜잭션 제어 트랜잭션 모드 설정 한 번 명령어를 수행할 때마다 자동으로 commit 할 것인지 여부를 결정하는 기능이다. iSQL> AUTOCOMMIT OFF; -> 사용자가 commit 하기 전에는 commit 되지 않음 Set autocommit off success. iSQL> AUTOCOMMIT ON; -> 명령어를 수행할 때마다 자동으로 commit Set autocommit on success. PLANCOMMIT SET PLANCOMMIT ON/OFF; autocommit off (non-autocommit) 모드에서 explain plan이 on (또는 only) 조건일 때, desc, select * from tab; 또는 select * from seq; 등과 같은 명령어를 수행했을 때 자동으로 commit 할지를 결정하는 기능이다. 기본값은 OFF 이다. * 참고: 기본값이 OFF 이므로 autocommit off 세션에서 explain plan이 on (또는 only) 조건일 때 Altibase는 위의 명령어(desc, select * from tab; 또는 select * from seq;)를 자동 commit 하지 않고 오류 메시지를 발생한다. 이 값이 ON이면, iSQL은 이런 명령어들을 실행한 후 commit을 수행해서 에러가 발생하지 않도록 한다. 48 iSQL User's Manual 파일 관리 작업 결과 저장 iSQL을 통해 작업한 결과를 지정한 파일로 저장하는 기능을 제공한다. 다음과 같이 spool 명령을 이용하면 지정한 book.txt 파일에 작업한 결과가 저장된다. 이 기능을 해제하고 싶으면 SPOOL OFF 명령을 사용한다. iSQL> SPOOL book.txt Spool start. [book.txt] -> 이후의 모든 명령과 그 결과들이 book.txt 파일에 저장된다. 이 파일은 현재 디렉터리에 생성된다. iSQL> SPOOL OFF Spool Stop -> 더 이상 명령과 그 결과들을 파일에 저장하지 않는다. 스크립트 파일 실행 @ 명령어 @file_name[.sql] 또는 START file_name[.sql] file_name[.sql]: 수행 될 스크립트 파일, 확장자를 생략하면 iSQL은 기본 스크립트 파일 확장자(.sql)로 간주한다. iSQL 명령어와 SQL구문들이 저장된 스크립트 파일을 실행하면, 한번에 파일내의 명령어들을 순차적으로 실행한다. @ 명령어는 START와 같은 기능을 갖는다. 스크립트 파일내의 exit 또는 quit 명령어는 iSQL을 종료시킨다. 스크립트 파일내에는 일반적으로 SQL문, iSQL 명령어, 또는 Stored Procedure 블록 등이 포함될 수 있다. 다음은 $ALTIBASE_HOME/sample/APRE/schema 디렉터리에 있는 스크립트 schema.sql을 현재 디렉터리에서 수행하는 예이다. iSQL> START schema.sql <- 파일내의 sql 문이 실행된다. 또는 iSQL 사용 예 49 iSQL> @schema.sql 스크립트 파일을 명시할 때, 사용자 계정의 Altibase 홈 디렉터리($ALTIBASE_HOME)를 의미하는 물음표(“?”)를 사용할 수 있다. 다음은 $ALTIBASE_HOME/sample/APRE/schema 디렉터리에 있는 스크립트 schema.sql을 다른 디렉터리에서 수행하는 예이다. iSQL> @?/sample/schema.sql 물음표(“?”)는 다음 iSQL 명령어에서도 사용할 수 있다: edit, save, load, spool, start * 스크립트 파일 내에서 주석의 사용은 -- 또는 /* */으로 가능하다. --는 이 표시 다음부터 그 라인의 끝까지를 주석으로 처리하고 여러 라인을 주석으로 처리할 때는 주석부분을 /*와 */ 사이에 넣으면 된다. @@ 명령어 @@file_name[.sql] file_name[.sql]: 수행될 내포형 스크립트를 나타낸다. 확장자를 생략하면 iSQL은 기본 명령어 파일 확장자(.sql)로 간주한다. 명시된 스크립트를 수행한다. @@ 명령어는 @ 명령어와 유사한 기능을 갖는다. 이 명령어는 수행될 스크립트와 같은 경로에서 명시된 스크립트를 찾는 기능을 가지고 있기 때문에 내포형 스크립트를 수행하는데 유용하다. @@ 명령어는 다음과 같은 용도로 쓰일 수 있다. 사용자가 임의의 스크립트 파일 내에 @@file_name.sql을 입력하고 그 스크립트 파일을 실행하면, iSQL은 file_name.sql을 호출한 스크립트 파일과 동일한 디렉터리에서 file_name.sql을 찾아서 수행한다. file_name.sql 은 이를 호출한 스크립트 파일과 같은 디렉터리에 있어야 한다. 만일 그런 파일이 존재하지 않으면, iSQL은 오류 메시지를 보여준다. 사용자가 iSQL 프롬프트 상에서 @@file_name.sql을 입력하여 실행하는 것은 @file_name.sql을 실행하는 것과 동일하다. 스크립트에는 일반적으로 SQL문, iSQL 명령어, 또는 Stored Procedure 블록 등이 포함될 수 있다. 스크립트 내에 exit 또는 quit 명령어는 iSQL을 종료시킨다. 다음은 $ALTIBASE_HOME 디렉터리에서 a.sql 스크립트 파일을 50 iSQL User's Manual 실행하는 예제로, 이 파일 내에서 schema.sql 스크립트 파일을 실행한다. 이 예제가 에러 없이 제대로 수행되려면, a.sql은 schema.sql파일이 위치하는 $ALTIBASE_HOME/sample/APRE/schema 디렉터리에 같이 있어야 한다. iSQL> @sample/APRE/schema/a.sql $ cat a.sql @@schema.sql * 참고: 이 후의 예제는 위의 스크립트를 실행해서 생성된 테이블들을 (부록 Schema 참고) 가지고 iSQL 환경에서 질의에 따른 결과를 편집한 것이다. START 명령에 파라미터 전달 START file_name[.sql] [param1 [param2] ...] @file_name[.sql] [param1 [param2] ...] @@file_name[.sql] [param1 [param2] ...] [param1 [param2] ...] : 스크립트 파일에 파라미터로 전달할 값 스크립트 파일 내 SQL문의 특정 값을 고정하지 않고 사용자가 수행할 때마다 설정하고자 할 때 치환 변수를 사용한다. START, @ 또는 @@ 명령어로 스크립트 파일 수행 시, 치환 변수 자리에 대체하고자 하는 값을 입력하여 파라미터로 전달할 수 있다. 스크립트 파일 내의 치환 변수는 대체하고자 하는 자리에 붙여서 사용하며, 숫자는 순서를 의미한다. 단, 이 기능은 SET DEFINE ON이 설정된 경우에만 동작한다. 자세한 설명은 SET DEFINE을 참조하기 바란다. 예를 들어 아래와 같이 emp.sql 파일에 치환 변수가 사용된 경우 SELECT ENO, E_LASTNAME FROM EMPLOYEES WHERE EMP_JOB = ' LARY > START 명령어 수행 시에 programmer, 2000을 파라미터로 같이 입력하면 mmer, だ대체되어 수행된다. 즉 직업이 programmer이고, 월급이 2000을 초과하는 직원이 조회된다. iSQL> SET DEFINE ON; -- ON으로 설정해야 치환변수를 파라미터 값으로 대체 iSQL> START emp.sql programmer 2000 old 2: WHERE EMP_JOB = ' WHERE EMP_JOB = 'programmer' old 3: AND SALARY > new 3: AND SALARY > 2000; ENO E_LASTNAME ------------------------------------- iSQL 사용 예 51 10 Bae iSQL은 치환 변수를 포함하고 있는 라인에 대하여 파라미터 값이 치환되기 전후의 SQL 명령을 함께 출력한다. SET VERIFY OFF를 설정하면 대입 후의 SQL명령은 출력되지 않는다. 치환 변수는 하나의 스크립트에서 여러 번 사용될 수 있으며, 반드시 순서대로 사용하지 않아도 된다. 치환 변수는 아래와 같이 대화식으로도 스크립트의 변수를 파라미터로 치환할 수 있다. START emp.sql ... Enter value for 1: programmer old 2: WHERE EMP_JOB = ' WHERE EMP_JOB = 'programmer' Enter value for 2: 2000 old 3: AND SALARY > new 3: AND SALARY > 2000; 또한 특정 문자를 치환 변수 뒤에 바로 연결하여 사용하려면, 마침표(.)를 사용하여 치환 변수와 문자를 구분해야 한다. SELECT E_LASTNAME FROM EMPLOYEES WHERE ENO=' Enter value for 1: 2 old 1: SELECT E_LASTNAME FROM EMPLOYEES WHERE ENO=' new 1: SELECT E_LASTNAME FROM EMPLOYEES WHERE ENO='20'; SET DEFINE {ON|OFF} 치환 변수가 포함된 스크립트 파일을 START, @ 또는 @@ 명령어로 수행 시, 치환 변수를 사용자가 입력한 파라미터 값으로 대체할지 여부를 지정한다. 기본값은 OFF로 사용자가 입력한 파라미터 값으로 치환 변수를 대체하지 않는다. 즉, 치환 변수가 포함된 스크립트 파일 수행 시에는 반드시 ON으로 지정해야 한다. SET VERIFY {ON|OFF} 치환 변수가 포함된 스크립트 파일을 START, @ 또는 @@ 명령어로 수행 시, 파라미터 값으로 교체되기 전후의 SQL문을 출력할지 여부를 지정한다. 기본값은 ON으로 전후 SQL문을 출력한다. $cat Param1.sql SELECT * FROM T1 WHERE I1 = iSQL> SET DEFINE ON; iSQL> SHOW VERIFY; Verify : On iSQL> START Param1.sql 5; iSQL> SELECT * FROM T1 WHERE I1 = old 2: WHERE I1 = 52 iSQL User's Manual ne w 2: W HE RE I 1 = 5; T1 .I 1 T1 .I 2 --------------------------- 5 Hyacinth 1 row selected. iSQL> SET VERIFY OFF; iSQL> SHOW VERIFY; Verify : Off iSQL> START Param1.sql 5; iSQL> SELECT * FROM T1 WHERE I1 = T1.I1 T1.I2 --------------------------- 5 Hyacinth 1 row selected. SQL문의 저장 현재 iSQLbuffer에 있는 명령어 중 가장 최근에 수행한 명령어를 파일로 저장하는 기능이다. 이 파일은 현재 디렉터리에 생성된다. iSQL> SELECT * FROM book; iSQL> SAVE book.sql; -> book.sql 파일에 ‘SELECT * FROM book;’가 저장된다. Save completed. SQL문의 로드 지정한 파일의 첫 번째 명령어를 iSQL버퍼의 마지막 위치에 로드시키는 기능이다. iSQL> LOAD book.sql iSQL> SELECT * FROM book; Load completed. iSQL> / -> SELECT * FROM book; 문이 실행된 것을 볼 수 있다. DML문 저장 INSERT, UPDATE, DELETE, MOVE 등의 DML문 실행시 이를 $ALTIBASE_HOME/trc/isql_query.log에 기록한다. 이 기능을 설정하려면 SET QUERYLOGGING을 ON으로 하고, 해제하려면 OFF하면 된다. iSQL> SET QUERYLOGGING ON; -> 이후의 모든 DML 문이 $ALTIBASE_HOME/trc/isql_query.log에 저장된다. iSQL 사용 예 53 iSQL> CREATE TABLE T1 ( I1 INTEGER ); Create success. iSQL> INSERT INTO T1 VALUES ( 1 ); 1 row inserted. iSQL> UPDATE T1 SET I1 = 2; 1 row updated. iSQL> SELECT * FROM T1; I1 -------------- 2 1 row selected. iSQL> DELETE FROM T1; 1 row deleted. iSQL> DROP TABLE T1; Drop success. iSQL> EXIT % cat $ALTIBASE_HOME/trc/isql_query.log -> SET QUERYLOGGING ON으로 실행한 후의 DML을 확인할 수 있다. [2009/09/16 10:36:14] [127.0.0.1:25310 SYS] INSERT INTO T1 VALUES ( 1 ) [2009/09/16 10:36:31] [127.0.0.1:25310 SYS] UPDATE T1 SET I1 = 2 [2009/09/16 10:36:37] [127.0.0.1:25310 SYS] DELETE FROM T1 질의문 편집 최근 질의문 편집 iSQL 상에서 파일을 생성하고 편집할 수 있도록 명령어 edit를 제공한다. 인수 없이 ed를 실행하면 가장 최근 실행된 질의문이 iSQL.buf 라는 임시 파일로 생성되며 다음과 같은 화면을 볼 수 있다. (지면을 절약하기 위해 몇 줄만 화면으로 표시한다.) iSQL> SELECT sysdate FROM dual; SYSDATE --------------- 01-JAN-2000 1 row selected. iSQL> ed SELECT sysdate FROM dual; ~ ~ ~ "iSQL.buf" 1L, 26C 기존 파일 편집 54 iSQL User's Manual 존재하는 파일을 편집하기 위해서는 iSQL 상에서 ed 실행 시 그 파일 이름을 뒤에 넣으면 된다. 화면이 초기화 되어 있을 때 빈 줄 표시는 ~(tilde) 문자로 표시된다. iSQL> ed myquery.sql "myquery.sql" INSERT INTO employee(ENO, E_FIRSTNAME, E_LASTNAME, SEX) VALUES(21, 'MSJUNG', 'F'); INSERT INTO employee(ENO, E_FIRSTNAME, E_LASTNAME, SEX, JOIN_DATE) VALUES(22, 'Joshua', 'Baldwin', 'M', TO_DATE('2001-11-19 00:00:00', 'YYYY-MM-DD HH:MI:SS')); ~ ~"myquery.sql" 히스토리 목록에 있는 질의문 편집 히스토리 목록에서 해당 번호를 사용하여 이전에 수행했던 명령을 편집할 수 있다. 즉, 해당 번호의 질의문이 iSQL.buf 임시 파일로 생성되어 편집을 할 수 있으며, 편집 결과는 히스토리의 마지막에 등록되어 가장 마지막 명령을 재수행하는 ‘/’ 으로도 실행이 가능하다. iSQL> h 1 : SELECT * FROM customers; 2 : SELECT * FROM employees; iSQL> 2ed or iSQL> 2 ed SELECT * FROM employees; ~ ~ "iSQL.buf" * 파일을 편집하기 위해서 명령 줄에 인수 2라는 파일 이름을 넣은 (iSQL> ed 2) 명령어와 구분된다. 편집 후 (employees를 orders로 변경) iSQL> h <- 현재 isql buffer에 있는 히스토리 목록 1 : SELECT * FROM customers; 2 : SELECT * FROM employees; : SELECT * FROM orders; <- 2 ed 명령어에 의해 편집된 질의문이 히스토리 목록에 가장 마지막 명령어로 저장된다. iSQL> / <- 가장 최근에 수행한 명령어가 실행된다. ORDERS.ONO ORDERS.ORDER_DATE ORDERS.ENO ORDERS.CNO ----------------------------------------------- ORDERS.GNO ORDERS.QTY ORDERS.ARRIVAL_DATE ORDERS.PROCESSING ----------------------------------------------- 0011290007 2000/11/29 00:00:00 12 7111111431202 A111100002 70 2000/12/02 00:00:00 C 0011290011 2000/11/29 00:00:00 12 7610011000001 iSQL 사용 예 55 E111100001 1000 2000/12/05 00:00:00 D … 0012310012 2000/12/31 00:00:00 19 7308281201145 C111100001 250 2001/01/03 00:00:00 O 30 rows selected. 주의사항 파일 이름에 특수 문자 또는 공백이 포함된 경우 큰따옴표를 사용해야 한다. iSQL> SPOOL "file name.txt"; iSQL> START "file name.sql"; iSQL> EDIT "file name.sql"; 56 iSQL User's Manual SELECT 결과 포맷팅 SELECT 문에 대한 결과들을 사용자가 보기 좋게 포맷팅하는 기능이다. SET LINESIZE SELECT 문 결과 출력시 디스플레이되는 한 라인의 사이즈를 설정한다. 10 에서 200 사이의 값이어야 한다. iSQL> SET LINESIZE 100; -> 한 라인의 디스플레이 크기를 100으로 설정한다. SET LOBSIZE CLOB 칼럼을 SELECT 문으로 조회 시 디스플레이 되는 데이터의 길이를 설정한다. CLOB 칼럼의 데이터를 SELECT 문으로 조회하기 위해서 우선 트랜잭션 모드를 AUTOCOMMIT OFF로 설정해야 한다. CREATE TABLE C1(I1 INTEGER, I2 CLOB); INSERT INTO C1 VALUES(1, 'A123456789'); INSERT INTO C1 VALUES(2, 'A1234'); INSERT INTO C1 VALUES(3, 'A12345'); INSERT INTO C1 VALUES(4, 'A1234567890123'); iSQL> autocommit off; -> CLOB 칼럼 조회를 위해 트랜잭션 모드를 OFF로 설정한다. Set autocommit off success. iSQL> select * from c1; C1.I1 C1.I2 --------------------------- 1 A123456789 2 A1234 3 A12345 4 A1234567890123 4 rows selected. iSQL> set lobsize 10; -> CLOB 칼럼의 데이터를 select 문으로 조회할 때 화면에 나타나는 데이터 길이를 설정한다. iSQL> select * from c1; C1.I1 C1.I2 -------------------------- 1 A123456789 2 A1234 3 A12345 4 A123456789 4 rows selected. iSQL 사용 예 57 SET LOBOFFSET CLOB 칼럼을 SELECT 문으로 조회할 때 디스플레이 되는 Clob 데이터의 시작 위치를 설정한다. CLOB 칼럼의 데이터를 SELECT 문으로 조회하기 위해서 우선 트랜잭션 모드를 AUTOCOMMIT OFF로 설정해야 한다. CREATE TABLE C1(I1 INTEGER, I2 CLOB); INSERT INTO C1 VALUES(1, 'A123456789'); INSERT INTO C1 VALUES(2, 'A1234'); INSERT INTO C1 VALUES(3, 'A12345'); INSERT INTO C1 VALUES(4, 'A1234567890123'); iSQL> autocommit off; Set autocommit off success. iSQL> set loboffset 4; -> CLOB 칼럼의 데이터를 select 문으로 조회할 때 화면에 나타나는 데이터의 시작 위치를 설정한다. iSQL> select * from c1; C1.I1 C1.I2 -------------------------- 1 456789 2 4 3 45 4 4567890123 4 rows selected. SET FEEDBACK SELECT 문 결과 출력시 선택된 결과 건수를 출력한다. SET FEEDBACK ON|OFF|n ON: SELECT문 수행 후 결과 데이터 건수를 출력한다. OFF: SELECT문 수행 후 결과 데이터 건수를 출력하지 않는다. n: 결과 건수가 n이상일 경우에만 출력한다. iSQL> SET FEEDBACK ON; iSQL> SELECT * FROM employees WHERE ENO < 3; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 2 rows selected. 58 iSQL User's Manual SET PAGESIZE 결과 row들을 몇 개 단위로 보여줄 것인지 결정한다. iSQL> SET PAGESIZE 2; -> 결과 row를 2개 단위로 보여준다. iSQL> SELECT * FROM employees; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 3 Kobain Ken engineer 0162581369 1001 2000 M 650226 11-JAN-2010 H 4 Foster Aaron PL 0182563984 3001 1800 M 820730 H ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 5 Ghorbani Farhad PL 01145582310 3002 2500 M 20-DEC-2009 H 6 Momoi Ryu programmer 0197853222 1002 1700 M 790822 09-SEP-2010 H . . . 20 rows selected. iSQL> SET PAGESIZE 0; -> 결과 전체를 한 단위로 보여준다. iSQL> SELECT * FROM employees; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 3 Kobain Ken engineer 0162581369 1001 2000 M 650226 11-JAN-2010 H . . iSQL 사용 예 59 . 20 rows selected. SET HEADING 결과에 헤더를 출력할지 결정한다. iSQL> SET HEADING OFF; -> 결과에 헤더를 출력하지 않는다. iSQL> SELECT * FROM employees; 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 3 Kobain Ken engineer 0162581369 1001 2000 M 650226 11-JAN-2010 H . . . 20 rows selected. iSQL> SET HEADING ON; -> 결과에 헤더를 출력한다. iSQL> SELECT * FROM employee; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 3 Kobain Ken engineer 0162581369 1001 2000 M 650226 11-JAN-2010 H . . . 20 rows selected. SET COLSIZE SELECT 문 결과 출력시 디스플레이되는 CHAR, VARCHAR 타입 칼럼의 사이즈를 설정하여, 길이가 긴 문자열을 포함하는 칼럼이 존재할 경우 인식을 용이하게 한다. iSQL> CREATE TABLE LOCATION( ID INTEGER, NAME CHAR(20), ADDRESS VARCHAR(500), PHONE CHAR(20)); Create success. 60 iSQL User's Manual iSQL> INSERT INTO LOCATION VALUES(1, 'ALTIBASE', 'Inyoung Bldg, 5fl 44-11 Youido-dong Youngdungpo-qu seoul, 150-890. Korea', '82-2-769-7500'); 1 row inserted. 아래는 CHAR 또는 VARCHAR 타입 칼럼의 디스플레이 사이즈를 7로 설정하여 조회하는 예제이다. iSQL> SET COLSIZE 7; iSQL> SELECT ID,NAME,ADDRESS,PHONE FROM LOCATION; ID NAME ADDRESS PHONE -------------------------------------------- 1 ALTIBAS 10Fl., 82-2-20 E Daerung 82-1000 post-to wer II, Guro-d ong, Gu ro-qu, Seoul 1 52-790. Korea 1 row selected. SET NUM[WIDTH] NUMERIC, DECIMAL, NUMBER, FLOAT 타입의 SELECT 결과를 표시할 자리수를 설정한다. 유효숫자의 개수가 많은 데이터는 이 값을 크게 설정하면 읽기가 쉽다. 아래는 NUMWIDTH를 30으로 설정한 후 NUMERIC, DECIMAL, NUMBER, FLOAT 칼럼을 조회하는 예제이다. iSQL> CREATE TABLE t1 ( c_numeric NUMERIC(38, 0), c_decimal DECIMAL(38, 0), c_number NUMBER(38, 0), c_float FLOAT(38) ); Create success. iSQL> INSERT INTO t1 VALUES(12345678901234567890, 12345678901234567890, 12345678901234567890, 12345678901234567890); 1 row inserted. iSQL> SET NUMWIDTH 30 iSQL> SELECT c_numeric, c_decimal, c_number, c_float FROM t1; C_NUMERIC C_DECIMAL ----------------------------------------------------------- C_NUMBER C_FLOAT ----------------------------------------------------------- 12345678901234567890 12345678901234567890 12345678901234567890 12345678901234567890 1 row selected. iSQL 사용 예 61 SET NUMF[ORMAT] 구문 SET NUMF[ORMAT] format; NUMERIC, DECIMAL, NUMBER, FLOAT 타입의 SELECT 결과를 표시할 수 있는 형식을 설정한다. 이 설정은 SET NUMWIDTH 설정보다 우선한다. format에 설정할 수 있는 형식은 "General Reference> 자료형 > 숫자형 데이터 타입 > 숫자형 데이타 형식"을 참고한다. 아래는 지수 형식으로 조회하는 예제이다. iSQL> create table t1(i1 float(30)); Create success. iSQL> insert into t1 values (123456789012); 1 row inserted. iSQL> SET NUMFORMAT 9.99EEEE iSQL> select * from t1; T1.I1 ------------- 1.23E+11 1 rows selected. CL[EAR] COL[UMNMS] COLUMN 명령어로 설정된 모든 칼럼의 표시 형식을 해제한다. 구문 CL[EAR] COL[UMNS] COLUMN SELECT 대상(target)이 되는 칼럼의 표시 형식을 설정하거나 확인할 수 있다. 아래의 데이터 타입일 경우에만 설정이 적용된다. 문자형 데이터 타입의 길이 숫자형 데이터 타입의 표시 형식 구문 COL[UMN] [{column | expr} [option]] column 또는 expr은 SELECT 대상이 되는 칼럼 또는 식을 가리키며, 62 iSQL User's Manual select 문에 사용한 것과 동일하게 기술해야 한다. COL[UMN] [{column | expr}] 명령어만 사용하면 설정한 모든 칼럼 또는 지정한 칼럼에 설정된 형식을 확인할 수 있다. option에서 설정할 수 있는 기능은 아래와 같다. 옵션 설명 CLE[AR] 지정된 칼럼의 설정을 해제 FOR[MAT] format 지정된 칼럼의 표시 형식을 설정한다. 문자형 칼럼: CHAR, VARCHAR 타입의 표시 길이 설정. format은 A10과 같은 텍스트 상수로 지정할 수 있다. SET COLSIZE 설정보다 우선한다. 숫자형 칼럼 : NUMBER, DECIMAL, FLOAT, NUMERIC 타입의 표시 형식 설정 format에 설정할 수 있는 형식은 "General Reference> 자료형 > 숫자형 데이터 타입 > 숫자형 데이타 형식"을 참고한다. SET NUMFORMAT 설정보다 우선한다. ON | OFF 설정한 표시 형식의 적용 여부 OFF: 칼럼에 대한 설정은 그대로 둔 채, 출력에는 적용하지 않 는다. ON : 설정을 적용한다. 설명 SELECT 구문의 대상 칼럼에 대한 표시 형식을 설정할 수 있다. 동일한 칼럼을 여러 개의 표시 형식으로 설정하면 마지막 형식이 적용된다. 설정한 표시 형식을 적용하지 않으려면 CLEAR 또는 OFF 옵션을 사용할 수 있다. CLEAR 옵션은 설정을 완전히 해제하는 것이며, OFF는 출력만 적용되지 않는 차이가 있다. 예제 아래는 VARCHAR(60)의 address 칼럼의 길이를 20으로 표시하려는 예를 보여준다. iSQL> @schema.sql iSQL> COLUMN address FORMAT A20 iSQL> select cno, address from customers; CNO ADDRESS ---------------------------------------------- 1 2100 Exposition Boul evard Los Angeles US A ... iSQL 사용 예 63 설정을 삭제하려면 아래와 같이 실행한다. iSQL> COLUMN address CLE 64 iSQL User's Manual 출력 옵션 수행시간 출력 SQL 문을 실행하는데 걸린 시간을 알려주는 기능이다. iSQL> SET TIMING ON; -> 명령 실행 후 마지막 라인에 실행시간을 출력한다. iSQL> SELECT * FROM employees; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H . . . 20 rows selected. elapsed time : 0.01 iSQL> SET TIMING OFF; -> 실행시간을 출력하지 않는다. 수행시간 단위 설정 SQL문의 쿼리 수행 시간 단위를 설정하는 기능이다. 설정할 수 있는 단위는 다음과 같다. 초 밀리초 마이크로초 나노초 iSQL> SET TIMING ON iSQL> SET TIMESCALE SEC; iSQL> SELECT * FROM employees; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R ... 20 rows selected. elapsed time : 0.00 iSQL 사용 예 65 iSQL> SET TIMESCALE MILSEC; iSQL> SELECT * FROM employee; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R ... ... 20 rows selected. elapsed time : 0.72 iSQL> SET TIMESCALE MICSEC; iSQL> SELECT * FROM employee; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R ... 20 rows selected. elapsed time : 966.00 iSQL> SET TIMESCALE NANSEC; iSQL> SELECT * FROM employee; NO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R ... 20 rows selected. elapsed time : 681000.00 외래키 출력 DESC 명령어를 사용하여 테이블 구조를 볼 때 외래 키에 대한 정보를 보여주는 기능이다. iSQL> SET FOREIGNKEYS ON; -> 외래 키에 대한 정보를 출력한다. iSQL> DESC employees; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ----------------------------------------------------------- ------------------- NAME TYPE IS NULL ----------------------------------------------------------- ------------------- 66 iSQL User's Manual EN O IN TE GE R FI X ED NOT NULL E_LASTNAME CHAR(20) FIXED NOT NULL E_FIRSTNAME CHAR(20) FIXED NOT NULL EMP_JOB VARCHAR(15) FIXED EMP_TEL CHAR(15) FIXED DNO SMALLINT FIXED SALARY NUMERIC(10, 2) FIXED SEX CHAR(1) FIXED BIRTH CHAR(6) FIXED JOIN_DATE DATE FIXED STATUS CHAR(1) FIXED [ INDEX ] ----------------------------------------------------------- ------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- ------------------- __SYS_IDX_ID_238 BTREE UNIQUE ENO ASC EMP_IDX1 BTREE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- ------------------- ENO [ FOREIGN KEYS ] ----------------------------------------------------------- ----------- iSQL> SET FOREIGNKEYS OFF; -> 외래 키에 대한 정보를 출력하지 않는다. iSQL> DESC employees; [ ATTRIBUTE ] ----------------------------------------------------------- ------------------- NAME TYPE IS NULL ----------------------------------------------------------- ------------------- ENO INTEGER FIXED NOT NULL E_LASTNAME CHAR(20) FIXED NOT NULL E_FIRSTNAME CHAR(20) FIXED NOT NULL EMP_JOB VARCHAR(15) FIXED EMP_TEL CHAR(15) FIXED DNO SMALLINT FIXED SALARY NUMERIC(10, 2) FIXED SEX CHAR(1) FIXED BIRTH CHAR(6) FIXED JOIN_DATE DATE FIXED STATUS CHAR(1) FIXED [ INDEX ] ----------------------------------------------------------- ------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- ------------------- __SYS_IDX_ID_238 BTREE UNIQUE ENO ASC iSQL 사용 예 67 EMP_IDX1 BTREE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- ----------- ENO Check 제약조건 출력 DESC 명령어를 사용하여 테이블 구조를 볼 때 Check 제약조건에 대한 정보를 보여주는 기능이다. iSQL> SET CHKCONSTRAINTS ON; -> Check Constraint에 대한 정보를 출력한다. iSQL> DESC employees; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ----------------------------------------------------------- ------------------- NAME TYPE IS NULL ----------------------------------------------------------- ------------------- ENO INTEGER FIXED NOT NULL E_LASTNAME CHAR(20) FIXED NOT NULL E_FIRSTNAME CHAR(20) FIXED NOT NULL EMP_JOB VARCHAR(15) FIXED EMP_TEL CHAR(15) FIXED DNO SMALLINT FIXED SALARY NUMERIC(10, 2) FIXED SEX CHAR(1) FIXED BIRTH CHAR(6) FIXED JOIN_DATE DATE FIXED STATUS CHAR(1) FIXED [ INDEX ] ----------------------------------------------------------- ------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- ------------------- __SYS_IDX_ID_238 BTREE UNIQUE ENO ASC EMP_IDX1 BTREE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- ------------------- ENO [ CHECK CONSTRAINTS ] ----------------------------------------------------------- ------------------- NAME : EMP_CHECK_SEX1 CONDITION : SEX in ('M', 'F') 68 iSQL User's Manual iSQL> SET CHKCONSTRAINTS OFF; -> Check Constraint에 대한 정보를 출력하지 않는다. iSQL> DESC employees; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ----------------------------------------------------------- ------------------- NAME TYPE IS NULL ----------------------------------------------------------- ------------------- ENO INTEGER FIXED NOT NULL E_LASTNAME CHAR(20) FIXED NOT NULL E_FIRSTNAME CHAR(20) FIXED NOT NULL EMP_JOB VARCHAR(15) FIXED EMP_TEL CHAR(15) FIXED DNO SMALLINT FIXED SALARY NUMERIC(10, 2) FIXED SEX CHAR(1) FIXED BIRTH CHAR(6) FIXED JOIN_DATE DATE FIXED STATUS CHAR(1) FIXED [ INDEX ] ----------------------------------------------------------- ------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- ------------------- __SYS_IDX_ID_238 BTREE UNIQUE ENO ASC EMP_IDX1 BTREE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- ------------------- ENO 파티션 출력 DESC 명령어를 사용하여 테이블 구조를 볼 때 파티션에 대한 정보도 함께 보여주는 기능이다. iSQL> create table t1_range( c1 integer, c2 integer, c3 varchar(4)) PARTITION BY RANGE(c3) ( PARTITION P_2000 VALUES LESS THAN ('2001') TABLESPACE sys_tbs_disk_data, PARTITION P_2001 VALUES LESS THAN ('2002') TABLESPACE sys_tbs_mem_data, PARTITION P_DEFAULT VALUES DEFAULT ) tablespace SYS_TBS_DISK_DATA; iSQL> SET PARTITIONS ON; -> 파티션에 대한 정보를 출력한다. iSQL> DESC t1_range [ TABLESPACE : SYS_TBS_DISK_DATA ] iSQL 사용 예 69 [ ATTRIBUTE ] ---------------------------------------------------- NAME TYPE IS NULL --------- ------------------------------------------- C1 INTEGER C2 INTEGER C3 VARCHAR(4) T1_RANGE has no index T1_RANGE has no primary key [ PARTITIONS ] ---------------------------------------------------- Method: Range Key column(s) ---------------------------------------- NAME ---------------------------------------- C3 Values ---------------------------------------------------- PARTITION NAME MIN VALUE MAX VALUE ---------------------------------------------------- P_2000 '2001' P_2001 '2001' '2002' P_DEFAULT '2002' Tablespace --------------------------------------------------- PARTITION NAME TABLESPACE NAME --------------------------------------------------- P_2000 SYS_TBS_DISK_DATA P_2001 SYS_TBS_MEM_DATA P_DEFAULT SYS_TBS_DISK_DATA iSQL> SET PARTITIONS OFF; -> 파티션에 대한 정보를 출력하지 않는다. iSQL> DESC t1_range [ TABLESPACE : SYS_TBS_DISK_DATA ] [ ATTRIBUTE ] ---------------------------------------------------- NAME TYPE IS NULL ---------------------------------------------------- C1 INTEGER C2 INTEGER C3 VARCHAR(4) T1_RANGE has no index T1_RANGE has no primary key 스크립트 파일 실행결과 및 명령어 출력 SET TERM과 SET ECHO 명령어는 스크립트 파일 실행의 결과 및 명령어를 화면상에 보여줄지를 결정한다. 스크립트 파일의 실행 결과는 출력(TERM ON)을 기본으로 한다. TERM 옵션을 OFF로 설정하면 iSQL 상에서 스크립트 파일이 실행될 때 스크립트 파일 내의 명령어와 실행 결과가 화면에 출력되지 않는다. 그러나, TERM 옵션이 OFF로 설정되어 있어도 질의를 직접 입력하는 경우(예: iSQL> select * from t1;) 질의 결과는 화면에 출력되며, 스크립트 명령을 이용하는 경우에만(예: iSQL> @t.sql ) 화면에 출력되지 않는다. 70 iSQL User's Manual 만약 TERM OFF로 설정했더라도 ECHO 명령어를 ON으로 설정하면 스크립트 내의 실행된 명령어를 출력할 수 있다. 다음은 스크립트 파일 실행 결과를 출력하는 예제이다. iSQL> SET TERM ON; -> 스크립트 실행 결과를 출력한다. iSQL> @schema.sql iSQL> ALTER SESSION SET AUTOCOMMIT = TRUE; ->결과 시작 Alter success. iSQL> DROP TABLE ORDERS; Drop success. elapsed time : 0.00 iSQL> DROP TABLE EMPLOYEES; Drop success. elapsed time : 0.00 . . . iSQL> CREATE INDEX ODR_IDX3 ON ORDERS (GNO ASC); Create success. elapsed time : 0.00 -> 결과 끝 아래는TERM OFF로 설정했더라도, ECHO를 ON 상태로 변경하면 @으로 실행된 스크립트 내의 명령어를 출력하는 예제이다. iSQL> SET TERM OFF; -> 스크립트 실행 결과를 출력하지 않는다. iSQL> @schema.sql iSQL> SELECT eno, e_firstname, e_lastname FROM employees; -> 질의를 직접 입력하는 경우 결과는 출력된다. ENO E_FIRSTNAME E_LASTNAME ----------------------------------------------------------- - 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani . . . iSQL> SET ECHO ON; -> @으로 실행된 스크립트 내의 명령어만 출력한다. iSQL> @schema.sql ALTER SESSION SET AUTOCOMMIT = TRUE; DROP TABLE ORDERS; DROP TABLE EMPLOYEES; . . . iSQL> CREATE INDEX ODR_IDX3 ON ORDERS (GNO ASC); Create success. elapsed time : 0.00 -> 결과 끝 실행 계획 출력 SQL 튜닝을 위하여 iSQL상에서 실행 계획 (Explain Plan)을 출력하는 기능이다. SQL 문의 실행 계획은 SELECT, INSERT, iSQL 사용 예 71 UPDATE, DELETE 등의 DML 문에 대해서 확인이 가능하다. 이를 위해서 SELECT 등의 구문을 수행하기 전에 다음 명령을 수행하여야 한다. ALTER SESSION SET EXPLAIN PLAN = option; 여기서 option은 ON, OFF, ONLY의 세 가지 설정이 있으며, 기본 설정값은 OFF이다. ON: SELECT문 실행 후 결과 레코드와 함께 Execution Plan 을 보여준다. ONLY: SELECT문에 대해 Prepare 과정만 수행한 후 Execution 과정을 수행하지 않고 실행 계획만 보여준다. 주 언어 변수 바인딩이 존재하는 SELECT 문 또는 실행 수행 시간이 오래 걸리는 질의에 대해 단순히 실행 계획만 확인할 경우 이 기능을 사용한다. OFF: SELECT문 실행 후 결과 레코드만 보여준다. 사용자가 기술한 WHERE절에 존재하는 조건들의 처리 방법 등의 보다 자세한 정보가 필요한 경우는 다음 명령을 사용한다. ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 1; 위의 구문처럼 해당 프로퍼티를 1로 설정하여 ON시키면, 실행 계획 정보에 WHERE절의 조건들이 FIXED KEY RANGE, VARIABLE KEY RANGE, FILTER 등으로 자세하게 분류되어 표시된다. 따라서 WHERE절을 복잡하게 사용한 경우 어떤 술어들이 인덱스 스캔을 통해 수행되는지 확인할 수 있다. 단, 특정 최적화 기법에 의해 질의가 변경된 경우는 이러한 정보가 출력되지 않을 수 있다. 다음은 해당 SQL문을 사용한 출력 예이다. TRCLOG_DETAIL_PREDICATE을 설정하고 EXPLAIN PLAN = ON으로 한 경우 iSQL> alter system set trclog_detail_predicate = 1; Alter success. iSQL> alter session set explain plan = on; Alter success. iSQL> SELECT eno, e_lastname, e_firstname FROM employees WHERE eno = 1; ENO E_LASTNAME E_FIRSTNAME ----------------------------------------------------------- - 1 Moon Chan-seung 1 row selected. ----------------------------------------------------------- - PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_238, ACCESS: 1, SELF_ID: 2 ) [ FIXED KEY ] AND 72 iSQL User's Manual OR ENO = 1 ----------------------------------------------------------- - TRCLOG_DETAIL_PREDICATE을 설정하지 않고, EXPLAIN PLAN = ON으로 한 경우 iSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. iSQL> ALTER SESSION SET EXPLAIN PLAN = ON; Alter success. iSQL> SELECT eno, e_lastname, e_firstname FROM employees WHERE eno = 1; ENO E_LASTNAME E_FIRSTNAME ----------------------------------------------------------- - 1 Moon Chan-seung 1 row selected. ----------------------------------------------------------- - PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_238, ACCESS: 1, SELF_ID: 2 ) ----------------------------------------------------------- - TRCLOG_DETAIL_PREDICATE을 설정하지 않고, EXPLAIN PLAN = ONLY로 한 경우 iSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. iSQL> ALTER SESSION SET EXPLAIN PLAN = ONLY; Alter success. iSQL> SELECT eno, e_lastname, e_firstname FROM employees WHERE eno = 1; ENO E_LASTNAME E_FIRSTNAME ----------------------------------------------------------- - No rows selected. ----------------------------------------------------------- - PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_238, ACCESS: ??, SELF_ID: 2 ) ----------------------------------------------------------- - EXPLAIN PLAN = ONLY인 경우 질의 실행 없이 실행 계획만 생성하므로 ACCESS 항목과 같이 실제 실행 후 그 값이 결정되는 항목들은 물음표 (“??”)로 표시된다. 결과 출력 방향 설정 iSQL에서 SELECT 구문으로 조회할 경우, 결과를 세로로 보여줄 것인가 가로로 보여줄 것인가를 선택할 수 있다. 조회 결과가 행이 적고, 열이 많을 경우에 적합한 출력이다. 일반적으로 이러한 경우에 가로로 출력되면 해당하는 열을 맞춰 값을 iSQL 사용 예 73 보기가 어렵다. 하지만 출력 결과의 방향을 세로로 설정하면 보기가 편리하다. iSQL>SET VERTICAL ON; -> 출력 결과 모드를 세로로 설정한다. iSQL> SELECT * FROM employees WHERE eno = 2; ENO : 2 E_LASTNAME : Davenport E_FIRSTNAME : Susan EMP_JOB : designer EMP_TEL : 0113654540 DNO : SALARY : 1500 SEX : F BIRTH : 721219 JOIN_DATE : 18-NOV-2009 STATUS : H 1 row selected. 74 iSQL User's Manual iSQL 화면 설정 보기 다음은 현재 세션에서 iSQL 화면 설정 값을 보는 예를 보여준다. iSQL> SHOW USER -> 현재 세션에 접속한 사용자 User : SYS iSQL> SHOW COLSIZE ColSize : 0 iSQL> SHOW LOBOFFSET LobOffset: 0 iSQL> SHOW LINESIZE Linesize : 100 iSQL> SHOW LOBSIZE LobSize : 80 iSQL> SHOW NUMWIDTH NumWidth : 11 iSQL> SHOW PAGESIZE Pagesize : 0 iSQL> SHOW TIMESCALE TimeScale : Second iSQL> SHOW HEADING Heading : On iSQL> SHOW TIMING Timing : Off iSQL> SHOW VERTICAL Vertical : Off iSQL> SHOW CHKCONSTRAINTS ChkConstraints : Off iSQL> SHOW FOREIGNKEYS ForeignKeys : Off iSQL> SHOW PLANCOMMIT PlanCommit : Off iSQL> SHOW QUERYLOGGING QueryLogging : Off iSQL> SHOW TERM Term : On iSQL> SHOW ECHO Echo : OFF iSQL> SHOW FEEDBACK Feedback : 1 iSQL> SHOW ALL User : SYS ColSize : 0 LobOffset : 0 LineSize : 80 LobSize : 80 NumWidth : 11 PageSize : 0 TimeScale : Second Heading : On Timing : Off Vertical : Off ChkConstraints : Off ForeignKeys : Off Partitions : Off PlanCommit : Off QueryLogging : Off Term : On Echo : Off Feedback : 1 Fullname : Off Sqlprompt : "iSQL> " Define : Off iSQL 사용 예 75 호스트 변수 호스트 변수를 선언하여 사용할 수 있다. 호스트 변수는 프로시저나 함수 실행 시 유용하다. 호스트 변수 선언하기 구문 VAR[IABLE] var_name[INPUT|OUTPUT|INOUTPUT] var_type INPUT 또는 OUTPUT 또는 INOUTPUT을 명시하지 않으면 기본값은 자동으로 부여된다. 타입 변수 선언 시 사용할 수 있는 타입은 다음과 같다. INTEGER, BYTE(n), NIBBLE(n), NUMBER, NUMBER(n), NUMBER(n,m), NUMERIC, NUMERIC(n), NUMERIC(n,m), CHAR(n), VARCHAR(n), NCHAR(n), NVARCHAR(n), DATE DECIMAL, DECIMAL(n), DECIMAL(n,m), FLOAT, FLOAT(n), DOUBLE, REAL BIGINT, SMALLINT 예제 아래는 변수를 선언하는 예를 보여준다. iSQL> VAR p1 INTEGER iSQL> VAR p2 CHAR(10) iSQL> VAR v_double DOUBLE iSQL> VAR v_real REAL 호스트 변수에 값 할당하기 구문 EXEC[UTE] :var_name := value; 예제 아래는 변수에 값을 할당하는 예를 보여준다. iSQL> EXECUTE :p1 := 100; 76 iSQL User's Manual Execute success iSQL> EXEC :p2 := ‘abc’; Execute success 호스트 변수 보기 구문 PRINT VAR[IABLE] -> 선언된 모든 변수를 보여준다. PRINT var_name -> var_name의 타입과 값을 보여준다. 예제 다음은 선언된 모든 변수값을 보여준다. iSQL> PRINT VAR [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- P1 INTEGER 100 P2 CHAR(10) abc V_REAL REAL V_DOUBLE DOUBLE iSQL> PRINT p2 -> 변수 p2에 관한 정보만 출력한다. NAME TYPE VALUE ------------------------------------------- P2 CHAR ( 10 ) abc iSQL 사용 예 77 PREPARE SQL문 수행 Prepared SQL문 수행과 Direct SQL문 수행의 차이 iSQL상에서 SQL문을 수행하면 기본적으로 Direct Execution 방법으로 수행된다. Direct Execution 이란 질의에 대한 구문 분석, 정당성 검사, 최적화 및 수행을 한번에 수행하는 것을 의미한다. Prepared Execution 방법은 prepare를 할 때 질의에 대한 구문 분석, 정당성 검사, 최적화까지만 수행하여 질의의 실행 계획을 미리 수립한다. 그 후 클라이언트로부터 실행을 요청받으면, 수행을 하는 것이다. ODBC를 사용한 응용프로그램 작성의 경우 Prepared Execution 방법이 일반적으로 사용되며, 호스트 변수 바인딩이 된 SQL문에 대한 반복적인 수행이 필요한 경우에 속도의 이점을 볼 수 있다. 두 가지 수행 방법의 차이는 iSQL 상에서 변수 사용 여부의 차이가 존재하지만, 속도의 차이는 없다. 단, Prepared Execution 방법으로 수행하는 경우, 출력되는 그래프 정보와 실행 계획 정보가 다를 수 있다. 그래프 정보는 최적화까지의 중간 계획을 나타내고, 실행 계획은 변수에 실제 값이 적용된 이후의 계획을 나타내기 때문이다. Prepared SQL문 구문 PREPARE SQL_statement; 예제 다음은 PREPARE 명령어를 사용한 SQL문 수행 예제이다. iSQL> VAR t1 INTEGER; iSQL> EXEC :t1 := 1; Execute success. iSQL> PREPARE SELECT eno, e_firstname, e_lastname, sex FROM employees WHERE eno=:t1; ENO E_FIRSTNAME E_LASTNAME SEX ----------------------------------------------------------- ------- 1 Chan-seung Moon M 1 row selected. 78 iSQL User's Manual 프로시저 생성과 실행 및 삭제 프로시저 생성 프로시저를 생성하는 기능을 제공한다. 프로시저 생성시 반드시 END; / 구문으로 끝나야 한다. 생성된 프로시저는 sys_procedures_ 메타 테이블을 참조하여 확인할 수 있다. 프로시저 실행 프로시저를 실행하는 기능을 제공한다. 프로시저를 실행함으로써 다양한 쿼리를 한꺼번에 수행할 수 있다. 실행할 프로시저에 파라미터가 있는 경우 반드시 프로시저 실행전에 파라미터 개수만큼 변수가 선언되어 있어야 한다. 예제1 다음은 INSERT 문을 수행하는 프로시저 emp_proc를 생성하는 예를 보여준다. (IN 파라미터 이용) iSQL> CREATE OR REPLACE PROCEDURE emp_proc(p1 IN INTEGER, p2 IN CHAR(20), p3 IN CHAR(20), p4 IN CHAR(1)) AS BEGIN INSERT INTO employees(eno, e_firstname, e_lastname, sex) VALUES(p1, p2, p3, p4); END; / Create success. iSQL> SELECT * FROM system_.sys_procedures_ order by created desc limit 1; USER_ID PROC_OID ------------------------------------ PROC_NAME OBJECT_TYPE STATUS ----------------------------------------------------------- ----------- PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID RETURN_SIZE ----------------------------------------------------------- -- RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN CREATED ----------------------------------------------------------- -------------- LAST_DDL_TIME iSQL 사용 예 79 ---------------- 2 3208680 EMP_PROC 0 0 4 2 192 29-FEB-2012 29-FEB-2012 1 row selected. 아래는 emp_proc를 실행하는 예를 보여준다. iSQL> VAR eno INTEGER iSQL> VAR first_name CHAR(20) iSQL> VAR last_name CHAR(20) iSQL> VAR sex CHAR(1) iSQL> EXECUTE :eno := 21; Execute success. iSQL> EXECUTE :first_name := 'Joel'; Execute success. iSQL> EXECUTE :last_name := 'Johnson'; Execute success. iSQL> EXECUTE :sex := 'M'; Execute success. iSQL> EXECUTE emp_proc(:eno, :first_name, :last_name, :sex); Execute success. iSQL> SELECT eno, e_firstname, e_lastname, sex FROM employees WHERE eno = 21; ENO E_FIRSTNAME E_LASTNAME SEX ----------------------------------------------------------- ------ 21 Joel Johnson M 1 row selected. 예제2 다음은 SELECT 문을 수행하는 프로시저 outProc를 생성하는 예를 보여준다. iSQL> CREATE TABLE outTbl(i1 INTEGER, i2 INTEGER); Create success. iSQL> INSERT INTO outTbl VALUES(1,1); 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> SELECT * FROM outTbl; OUTTBL.I1 OUTTBL.I2 --------------------------- 1 1 1 1 1 1 1 1 1 1 5 rows selected. iSQL> CREATE OR REPLACE PROCEDURE outProc(a1 OUT INTEGER, a2 IN OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO a1 FROM outTbl WHERE i2 = a2; END; / 80 iSQL User's Manual Create success. 아래는 outProc를 실행하는 예를 보여준다. iSQL> VAR t3 INTEGER iSQL> VAR t4 INTEGER iSQL> EXEC :t4 := 1; Execute success. iSQL> EXEC outProc (:t3, :t4); Execute success. iSQL> PRINT t3; NAME TYPE VALUE ----------------------------------------------- T3 INTEGER 5 예제3 다음은 프로시저 outProc1을 생성하는 예를 보여준다. iSQL> CREATE OR REPLACE PROCEDURE outProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1; p3 := p1 + 100; END; / Create success. iSQL> VAR v1 INTEGER iSQL> VAR v2 INTEGER iSQL> VAR v3 INTEGER iSQL> EXEC :v1 := 3; Execute success. iSQL> EXEC outProc1(:v1, :v2, :v3); Execute success. iSQL> PRINT VAR; [ HOST VARIABLE ] ----------------------------------------------- NAME TYPE VALUE ----------------------------------------------- .. V1 INTEGER 3 V2 INTEGER 3 V3 INTEGER 103 .. 예제4 다음은 SELECT 문을 수행하는 프로시저 inoutProc를 생성하는 예를 보여준다. iSQL> CREATE TABLE inoutTbl(i1 INTEGER); Create success. iSQL> INSERT INTO inoutTbl VALUES(1); 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> SELECT * FROM inoutTbl; INOUTTBL.I1 -------------- 1 1 iSQL 사용 예 81 1 3 rows selected. iSQL> CREATE OR REPLACE PROCEDURE inoutProc (a1 IN OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO a1 FROM inoutTbl WHERE i1 = a1; END; / Create success. iSQL> VAR t3 INTEGER iSQL> EXEC :t3 := 1; Execute success. iSQL> EXEC inoutProc(:t3); Execute success. iSQL> PRINT t3; NAME TYPE VALUE ----------------------------------------------- T3 INTEGER 3 예제5 다음은 프로시저 inoutProc1을 생성하는 예를 보여준다. iSQL> CREATE OR REPLACE PROCEDURE inoutProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1 + p2; p3 := p1 + 100; END; / Create success. 아래는 inoutProc1을 실행하는 예를 보여준다. iSQL> VAR v1 INTEGER iSQL> VAR v2 INTEGER iSQL> VAR v3 INTEGER iSQL> EXEC :v1 := 3; Execute success. iSQL> EXEC :v2 := 5; Execute success. iSQL> EXEC inoutProc1(:v1, :v2, :v3); Execute success. iSQL> PRINT VAR; [ HOST VARIABLE ] ----------------------------------------------- NAME TYPE VALUE ----------------------------------------------- .. V1 INTEGER 3 V2 INTEGER 8 V3 INTEGER 103 .. 프로시저 삭제 프로시저를 삭제하는 기능을 제공한다. 다음은 emp_proc를 삭제하는 예를 보여준다. 82 iSQL User's Manual iSQL> DROP PROCEDURE emp_proc; Drop success iSQL 사용 예 83 함수 생성과 실행 및 삭제 함수 생성 함수를 생성하는 기능을 제공한다. 함수 생성시 반드시 END; / 구문으로 끝나야 하며 리턴 타입이 정의되어 있어야 한다. 생성된 함수는 sys_procedures_ 메타 테이블을 참조하여 확인할 수 있다. 다음은 UPDATE 문과 SELECT 문을 수행하는 함수 emp_func를 생성하는 예를 보여준다. iSQL> CREATE OR REPLACE FUNCTION emp_func(f1 IN INTEGER) RETURN NUMBER AS f2 NUMBER; BEGIN UPDATE employees SET salary = 1000000 WHERE eno = f1; SELECT salary INTO f2 FROM employees WHERE eno = f1; RETURN f2; END; / Create success. iSQL> SELECT * FROM system_.sys_procedures_; USER_ID PROC_OID PROC_NAME ----------------------------------------------------------- -------------------- OBJECT_TYPE STATUS PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID ----------------------------------------------------------- --------------- RETURN_SIZE RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN ----------------------------------------------------------- ------------- CREATED LAST_DDL_TIME ------------------------------ . . . 2 3300024 INOUTPROC1 0 0 3 2 132 15-SEP-2010 15-SEP-2010 2 3302344 EMP_FUNC 1 0 1 6 30000 23 38 0 3 209 15-SEP-2010 15-SEP-2010 36 rows selected. 84 iSQL User's Manual 함수 실행 함수를 실행하는 기능을 제공한다. 함수를 실행함으로써 다양한 쿼리를 한꺼번에 수행할 수 있다. 실행할 함수에 파라미터가 있는 경우 반드시 함수 실행전에 파라미터 개수만큼 변수가 선언되어 있어야 한다. 또한, 함수의 실행 결과를 저장할 변수도 정의되어 있어야 한다. 다음은 emp_func를 실행하는 예를 보여준다. iSQL> VAR eno INTEGER iSQL> VAR ret NUMBER iSQL> EXEC :eno := 11; Execute success. iSQL> EXEC :ret := emp_func(:eno); Execute success. iSQL> SELECT eno, salary FROM employees WHERE eno = 11; ENO SALARY --------------------------- 11 1000000 1 row selected. 함수 삭제 함수를 삭제하는 기능을 제공한다. 다음은 emp_func를 삭제하는 예를 보여준다. iSQL> DROP FUNCTION emp_func; Drop success iSQL 사용 예 85 사용자 편의 기능 히스토리 이전에 수행했던 명령들의 리스트를 보여 준다. 해당 번호를 사용하여 이전에 수행했던 명령을 간단하게 실행할 수 있다. iSQL> HISTORY; -> history 목록보기 또는 iSQL> H; 1 : SELECT * FROM tab; 2 : SELECT * FROM book; 3 : HISTORY; iSQL> / -> 가장 마지막 명령(HISTORY;)을 재수행 iSQL> 2/ -> history 목록의 2번에 해당하는 명령(SELECT * FROM book;)실행 쉘 명령 iSQL에서 !다음에 바로 쉘 명령을 수행할 수 있는 편리한 기능이다. iSQL> !ls -al total 3417 -rw-r----- 1 wlgml337 section 1198 Nov 1 13:30 .aliases -rw------- 1 wlgml337 section 5353 Oct 18 21:17 .bash_history -rw-r----- 1 wlgml337 section 1436 Nov 2 15:42 .bashrc -rw-r----- 1 wlgml337 section 1549 Dec 13 17:36 .profile drwxr-x--- 2 wlgml337 section 512 Nov 2 02:00 TEMP drwxr-xr-x 2 root root 512 Oct 16 11:29 TT_DB -rw------- 1 wlgml337 section 3446548 Dec 18 13:19 core drwxr-x--- 2 wlgml337 section 512 Nov 11 16:33 cron drwxr-x--- 2 wlgml337 section 512 Nov 15 10:52 test drwxr-xr-x 6 wlgml337 section 512 Nov 11 11:45 work 명령 프롬프트 기본 명령 프롬프트인 'iSQL>' 대신 다른 값을 설정하여 프롬프트를 변경할 수 있다. 현재 접속한 사용자, 현재 시간 등의 런타임 변수가 포함된 경우 SET SQLPROMPT는 동적으로 변수를 치환한다. 86 iSQL User's Manual SET SQLP[ROMPT] {text} 사용 가능한 치환 변수는 아래와 같다. 변수 설명 _CONNECT_IDENTIFIER 접속한 서버. "host:port_no"로 표현된다. _DATE 현재 시간. DATE_FORMAT에 설정된 형식으로 표 현된다. _PRIVILEGE iSQL 접속 권한을 보여준다. sysdba로 접속한 경우 '(sysdba)'로 치 환된다. _USER 현재 접속한 사용자 이름. 예제 iSQL>SET SQLPROMPT "_CONNECT_IDENTIFIER> " iSQL>SET SQLP "_USER> " iSQL>SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER > " iSQL>SET SQLPROMPT "_USER on _DATE from _CONNECT_IDENTIFIER> " 도움말 iSQL이 제공하는 명령에 대한 도움말을 제공한다. HELP 명령은 도움말 사용법을 보여 주며 특정 명령에 대한 도움말은 HELP 명령 다음에 정보를 알고자 하는 명령을 입력하면 된다. iSQL> HELP; Use 'help [command]' Enter 'help index' for a list of command iSQL> HELP INDEX; / EXIT PARTITIONS @ EXPLAINPLAN QUERYLOGGING ALTER FEEDBACK QUIT AUTOCOMMIT FOREIGNKEYS ROLLBACK CHKCONSTRAINTS FULLNAME SAVE CL[EAR] H[ISTORY] SELECT COL[UMN] HEADING SPOOL COLSIZE INSERT SQLP[ROMPT] COMMIT LINESIZE START CREATE LOAD TERM DEFINE LOBOFFSET TIMESCALE DELETE LOBSIZE TIMING DESC MERGE UPDATE DROP MOVE USER ECHO NUM[WIDTH] VAR[IABLE] EDIT NUMF[ORMAT] VERTICAL EXECUTE PAGESIZE iSQL 사용 예 87 iSQL> HELP EXIT; exit; or quit; - exit iSQL 88 iSQL User's Manual 내셔널 캐릭터 사용법 NCHAR 및 NVARCHAR 타입의 내셔널 캐릭터 상수 문자를 사용하기 위해서 아래와 같은 방법으로 환경변수 등을 설정해야 데이터의 손실 염려가 없다. 환경변수 ALTIBASE_NLS_NCHAR_LITERAL_REPLACE의 값을 1로 설정한다. $ export ALTIBASE_NLS_NCHAR_LITERAL_REPLACE =1 SQL 구문에서 NCHAR 타입 상수 문자열을 사용하기 위해 해당 문자열 바로 앞에 “N”을 붙여 사용한다. iSQL> create table t1 (c1 nvarchar(10)); Create success. iSQL> insert into t1 values (N'AB가나'); 1 row inserted. iSQL> select * from t1; C1 ------------------------ AB가나 1 row selected. 찾아보기 89 찾아보기 ! ! 명령어 ............................................... 26 / / 명령어 ......................................... 26, 85 @ @ 명령어 ................................. 21, 48, 50 @@ ..................................................... 21 @@ 명령어 .................................... 49, 50 A ALTIBASE_DATE_FORMAT ................... 30 ALTIBASE_HOME ................................. 28 ALTIBASE_IPC_FILEPATH ...................... 31 ALTIBASE_NLS_NCHAR_LITERAL_REPLAC E ..................................................... 29 ALTIBASE_NLS_USE ............................. 28 ALTIBASE_PORT_NO ............................ 28 ALTIBASE_SSL_PORT_NO ..................... 28 ALTIBASE_TIME_ZONE ......................... 31 AUTOCOMMIT OFF ............................. 47 AUTOCOMMIT ON .............................. 47 C Check 제약조건 출력 ............................ 67 CL COL(CLEAR COLUMNS) .................. 61 COLUMN command ............................ 61 comment ............................................ 26 D DESC ................................................... 45 disconnect ........................................... 20 E ed 명령어 ...................................... 22, 55 edit 명령어 .......................................... 22 exit ..................................................... 20 G glogin.sql ............................................ 32 H help .................................................... 27 history ........................................... 26, 85 host variable ........................................ 75 I IPCDA_FILEPATH ................................. 31 iSQL 구성 ............................................. 32 iSQL 명령어.......................................... 20 iSQL 설정 ............................................. 13 iSQL 화면 설정 ..................................... 74 iSQL 환경변수 ...................................... 25 ISQL_BUFFER_SIZE ............................... 30 ISQL_CONNECTION ............................. 29 ISQL_EDITOR ....................................... 30 L LOBOFFSET .......................................... 22 LOBSIZE ............................................... 22 login.sql .............................................. 32 N NOLOG 옵션 ........................................ 43 P PAGESIZE ............................................ 58 PREPARE SQL문 ................................... 77 PROMPT ........................................ 26, 85 Q quit ..................................................... 20 S SELECT 결과 포맷팅 ............................. 56 SET COLSIZE ........................................ 59 90 iSQL User's Manual SET D EFIN E .................................... 24, 51 SET ECHO ...................................... 24, 69 SET FEEDBACK .................................... 57 set foreignkeys..................................... 23 SET HEADING ...................................... 59 set linesize ........................................... 22 SET LINESIZE ........................................ 56 SET LOBOFFSET ................................... 57 SET LOBSIZE ........................................ 56 SET NUM[WIDTH] ................................ 60 SET NUMF[ORMAT] ............................. 61 set pagesize ......................................... 22 SET PAGESIZE ...................................... 58 set term ............................................... 24 SET TERM ............................................ 69 SET VERIFY .................................... 24, 51 shell command .................................... 85 show all ..................
-
- [Altibase 5.5.1] iSQL User's Manual ㅣ 2012-12-10
- Altibase Tools iSQL User ’s Manual Release 5.5.1 May 11, 2012 Altibase Tools iSQL User ’s Manual Release 5.5.1 Copyright 2001~2010 Altibase Corporation. All rights reserved. This manual contains proprietary information of Altibase® Corporation
-
미리보기
Altibase Tools iSQL User ’s Manual Release 5.5.1 May 11, 2012 Altibase Tools iSQL User ’s Manual Release 5.5.1 Copyright 2001~2010 Altibase Corporation. All rights reserved. This manual contains proprietary information of Altibase® Corporation; it is provided under a license agreement containing restric- tions on use and disclosure and is also protected by copyright patent and other intellectual property law. Reverse engineering of the software is prohibited. All trademarks, registered or otherwise, are the property of their respective owners Altibase Corporation 10F, Daerung PostTower II, 182-13, Guro-dong Guro-gu Seoul, 152-847, Korea Telephone: +82-2-2082-1000 Fax: 82-2-2082-1099 E-mail: support@altibase.com www: http://www.altibase.com iii Contents Preface ............................................................................................................................................................................. i About This Manual .................................................................................................................................................................................... ii Intended Audience .................................................................................................................................................................... ii Software Environment .............................................................................................................................................................. ii Organization................................................................................................................................................................................. ii Documentation Conventions ................................................................................................................................................ ii Related Documents ................................................................................................................................................................... v On-line Manuals .......................................................................................................................................................................... v Altibase Welcomes Your Comments ................................................................................................................................... v 1. Using iSQL ................................................................................................................................................................... 1 1.1 iSQL Overview ......................................................................................................................................................................................2 1.1.1 iSQL Main Functionality .................................................................................................................................................2 1.2 Setting Up iSQL ...................................................................................................................................................................................3 1.3 iSQL Command-Line Options ........................................................................................................................................................5 1.4 iSQL Commands ..................................................................................................................................................................................8 1.5 iSQL Environment Variables ........................................................................................................................................................ 14 1.5.1 ALTIBASE_HOME ........................................................................................................................................................... 14 1.5.2 ALTIBASE_PORT_NO .................................................................................................................................................... 14 1.5.3 ALTIBASE_NLS_USE...................................................................................................................................................... 14 1.5.4 ALTIBASE_NLS_NCHAR_LITERAL_REPLACE ........................................................................................................ 15 1.5.5 ISQL_CONNECTION ...................................................................................................................................................... 15 1.5.6 ISQL_BUFFER_SIZE ....................................................................................................................................................... 15 1.5.7 ALTIBASE_DATE_FORMAT ......................................................................................................................................... 15 1.5.8 ISQL_EDITOR .................................................................................................................................................................. 16 1.5.9 ALTIBASE_IPC_FILEPATH............................................................................................................................................ 16 1.6 Personalizing iSQL ........................................................................................................................................................................... 17 1.6.1 glogin.sql ......................................................................................................................................................................... 17 1.6.2 login.sql ............................................................................................................................................................................ 17 1.6.3 Editing the LOGIN file .................................................................................................................................................. 17 2. Examples of iSQL in Use........................................................................................................................................... 19 2.1 Logging In to iSQL ........................................................................................................................................................................... 20 2.1.1 Login Restrictions ......................................................................................................................................................... 20 2.2 Starting Up and Shutting Down ALTIBASE HDB................................................................................................................... 21 2.2.1 Starting Up ALTIBASE HDB ........................................................................................................................................ 21 2.2.2 Shutting Down ALTIBASE HDB................................................................................................................................. 21 2.3 Connecting and Disconnecting.................................................................................................................................................. 23 2.3.1 Connecting to a Database ......................................................................................................................................... 23 2.3.2 Disconnecting from a Database .............................................................................................................................. 26 2.4 Retrieving Information Related to the Database and Database Objects .................................................................... 28 2.4.1 Performance Views ....................................................................................................................................................... 28 2.4.2 Viewing the List of Tables .......................................................................................................................................... 28 2.4.3 Viewing a Table Structure .......................................................................................................................................... 30 2.4.4 Viewing Sequence Information ............................................................................................................................... 31 2.5 Controlling Transactions ............................................................................................................................................................... 33 2.5.1 Defining Transaction Modes ..................................................................................................................................... 33 2.5.2 PLANCOMMIT ................................................................................................................................................................. 33 2.6 File Management ............................................................................................................................................................................. 34 2.6.1 Saving Results ................................................................................................................................................................ 34 2.6.2 Running Scripts.............................................................................................................................................................. 34 2.6.3 Saving SQL Statements ............................................................................................................................................... 36 2.6.4 Loading SQL Statements ............................................................................................................................................ 36 2.6.5 Saving DML Statements ............................................................................................................................................. 36 2.6.6 Editing Query Statements .......................................................................................................................................... 37 2.7 Formatting SELECT Query Results ............................................................................................................................................. 39 2.7.1 SET LINESIZE ................................................................................................................................................................... 39 iv 2.7.2 SET LOBSIZE .................................................................................................................................................................... 39 2.7.3 SET LOBOFFSET .............................................................................................................................................................. 40 2.7.4 SET FEEDBACK ................................................................................................................................................................ 40 2.7.5 SET PAGESIZE ................................................................................................................................................................. 41 2.7.6 SET HEADING .................................................................................................................................................................. 41 2.7.7 SET COLSIZE .................................................................................................................................................................... 42 2.8 Setting Output Options ................................................................................................................................................................. 43 2.8.1 Getting the Elapsed Time........................................................................................................................................... 43 2.8.2 Setting Execution Time Units for Output ............................................................................................................. 43 2.8.3 Describing Foreign Key Information ...................................................................................................................... 44 2.8.4 Outputting Script Execution Results ...................................................................................................................... 45 2.8.5 Outputting an Execution Plan .................................................................................................................................. 46 2.8.6 Setting Result Output Orientation.......................................................................................................................... 48 2.9 Viewing iSQL Display Settings .................................................................................................................................................... 49 2.10 Host Variables ................................................................................................................................................................................. 51 2.10.1 Declaring a Host Variable ........................................................................................................................................ 51 2.10.2 Assigning a Value to a Host Variable ................................................................................................................... 51 2.10.3 Viewing Host Variables ............................................................................................................................................. 52 2.11 Executing Prepared SQL Statements ..................................................................................................................................... 53 2.11.1 Prepared SQL versus Dynamic SQL Statements .............................................................................................. 53 2.11.2 Prepared SQL Statements ....................................................................................................................................... 53 2.12 Creating, Executing and Dropping Stored Procedures ................................................................................................... 54 2.12.1 Creating Procedures .................................................................................................................................................. 54 2.12.2 Executing Procedures ............................................................................................................................................... 54 2.12.3 Dropping Procedures ................................................................................................................................................ 58 2.13 Creating, Executing and Dropping Functions .................................................................................................................... 59 2.13.1 Creating Functions ..................................................................................................................................................... 59 2.13.2 Executing Functions .................................................................................................................................................. 59 2.13.3 Dropping Functions .................................................................................................................................................. 60 2.14 Convenient User Functions ....................................................................................................................................................... 61 2.14.1 History ............................................................................................................................................................................ 61 2.14.2 Shell Commands ......................................................................................................................................................... 61 2.14.3 Getting Help ................................................................................................................................................................. 61 2.15 Using National Character Sets .................................................................................................................................................. 63 iPreface Preface About This Manual iSQL User’s Manual ii About This Manual This manual describes how to use iSQL to access a database. Intended Audience The following users of ALTIBASE® HDB™ will find this manual useful: database administrators performance managers d a t ab ase admi n i st r a t o r s application developers t echn ica l sup p or t w o r k er s It is recommended that those reading this manual possess the following background knowledge: basic knowledge in the use of computers, operating systems, and operating system utilities experience in using relational databases and an understanding of database concepts computer programming experience experience in database ser ver, operating system or network administration Software Environment This manual has been prepared assuming that ALTIBASE HDB 5.5.1 is used as the database ser ver. Organization This manual is organized as follows: Chapter1: Using iSQL This chapter presents an over view of iSQL and explains the commands and how to use iSQL. Chapter2: Examples of iSQL in Use This chapter provides in-depth examples of each of the commands provided with iSQL. Documentation Conventions This section describes the conventions used in this manual. Understanding these conventions will make it easier to find information in this manual and other manuals in the series. There are two sets of conventions: About This Manual iii Preface syntax diagrams sample code conventions Sy n t a x D i a g ra m s This manual describes command syntax using diagrams composed of the following elements: Elements Meaning The star t of a command. If a syntactic element star ts with an arrow, it is not a complete command. The command continues to the next line. If a syntactic ele - ment ends with this symbol, it is not a complete command. The command continues from the previous line. If a syn- tactic element star ts with this symbol, it is not a complete command. The end of a statement. Indicates a mandator y element. Indicates an optional element. Indicates a mandator y element comprised of options. One, and only one, option must be specified. Indicates an optional element comprised of options. Reserved word ; SELECT NOT ADD DROP ASC DESC About This Manual iSQL User’s Manual iv Sample Code Conventions The code examples explain SQL, stored procedures, iSQL, and other command line statements. The following table describes the printing conventions used in the code examples. Indicates an optional element in which multiple elements may be specified. A comma must precede all but the first option. Elements Meaning , ASC DESC Rules Meaning Example [ ] Indicates an optional item. VARCHAR [(size)] [[FIXED |] VARIABLE] { } Indicates a mandator y field for which one or more items must be selected. { ENABLE | DISABLE | COMPILE } | A delimiter between optional or mandatory arguments. { ENABLE | DISABLE | COMPILE } [ ENABLE | DISABLE | COMPILE ] . . . Indicates that the previous argu- ment is repeated, or that sample code has been omitted. iSQL> select e_lastname from employees; E_LASTNAME ------------------------ Moon Davenport Kobain . . . 20 rows selected. Other Symbols Symbols other than those shown above are par t of the actual code. EXEC :p1 := 1; acc NUMBER(11,2); Italics Statement elements in italics indi- cate variables and special values specified by the user. SELECT * FROM table_name; CONNECT userID/password; Lower Case Char- acters Indicate program elements set by the user, such as table names, col- umn names, file names, etc. SELECT e_lastname FROM employ- ees; About This Manual vPreface Related Documents For more detailed information, please refer to the following documents: ALTIBASE HDB Installation Guide ALTIBASE HDB Getting Star ted Guide ALTIBASE HDB Administrators’ Manual ALTIBASE HDB Replication Manual ALTIBASE HDB Precompiler Users’ Manual ALTIBASE HDB ODBC Reference ALTIBASE HDB Application Program Inter face Users’ Manual ALTIBASE HDB iSQL Users’ Manual ALTIBASE HDB Utilities Manual ALTIBASE HDB Error Message Reference On-line Manuals Manuals are available at Altibase Technical Center (http://atc.altibase.com/). Altibase Welcomes Your Comments Please let us know what you like or dislike about our manuals. To help us with future versions of our manuals, please tell us about any corrections or classifications that you would find useful. Include the following information : The name and version of the manual that you are using Any comments that you have about the manual Your name, address, and phone number Write to us at the following electronic mail address : support@altibase.com When you need an immediate assistance regarding technical issues, please contact Altibase Techni- cal Center. Upper Case Char- acters Keywords and all elements pro- vided by the system appear in upper case. DESC SYSTEM_.SYS_INDICES_; Rules Meaning Example About This Manual iSQL User’s Manual vi Thank you. We appreciate your feedback and suggestions. 1Using iSQL 1 Using iSQL 1.1 iSQL Overview iSQL User’s Manual 2 1.1 iSQL Over view iSQL is a user tool for accessing an Altibase database and retrieving and modifying stored data using SQL statements and a number of additional commands. 1.1.1 iSQL Main Func tionality ALTIBASE HDB Star tup and Shutdown iSQL allows you to per form database management tasks, such as star ting up and shutting down the ser ver, and execute SQL statements using the same command prompt. Database Connection tion After ALTIBASE HDB starts up, you can use various user names to connect to and disconnect from the database. Database Object Information Inquiry iSQL allows you to use SQL statements to quer y all database object information, and suppor ts con- venient commands for inquiring about main objects. Database Management via SQL Statements Because iSQL can be used to execute any kind of SQL statement, you can control transactions and alter databases quickly and conveniently. Functions to Improve User Convenience The above tasks can be easily and conveniently accomplished using the file management and edit- ing functions, the ability to execute shell commands over iSQL, and the HISTORY function. 1.2 Setting Up iSQL 3Using iSQL 1.2 S e tting Up iSQL In order for iSQL to access a ser ver, the following information is necessar y. ALTIBASE_HOME A path to a ser ver or client installation server_name T h e na me ( o r IP a ddr ess) of a c o mput e r on wh ich AL TI BASE HDB Ser v e r is run n in g port_no T h e po r t number to be used wh en con n ec tin g via T C P or IP C user_id A User ID r e giste r ed in th e data ba se password The password corresponding to the User ID NLS_USE T h e cha r ac t e r se t w i th wh i c h t o display retrieved data to the user ALTIBASE_HOME can only be set using an environment variable, while the other settings may be made using command-line options. (For more information, please refer to 1.3 iSQL Command-Line Options.) The ALTIBASE_HOME environment variable must be set in order to use iSQL. In the case of Windows, this is set automatically when the ser ver is installed, but, in the case of the client, must be set manu- ally by the user. We strongly suggest that you verify that this setting has been properly made, as the application may not run properly if this setting is not made. por t_no and NLS_USE can be set using the environment variables or the ser ver settings file (alti- base.proper ties). If these settings are made via all three methods, they will take pr iorit y as follows, in descending order: 1. command-line options 2. environment variables (ALTIBASE_PORT_NO, ALTIBASE_NLS_USE) 3. ser ver settings file (altibase.proper ties) Therefore, when it is desired to connect using options other than those that have been previously set, the command-line options can be used, so that it is not necessar y to change the settings in the ser ver setting file or the environment variables. If any options have not been set, when iSQL is executed for the first time, the user will be prompted to enter the corresponding variables. At this time, it is essential to enter values that are valid and fol- low the proper format, other wise iSQL may not run properly. However, if the NLS_USE option in par ticular has not been set, no command prompt will appear at the time of execution. Instead, US7ASCII will be used, and a connection attempt will be made. In this case, if the character set of the database is not US7ASCII, the application will not execute properly, or some of the user ’s data may become corrupted. Thus it is paramount that NLS_USE be set to a suit- able value for the usage environment. In order to ensure stable iSQL operation, we recommend that the following environment variables 1.2 Setting Up iSQL iSQL User’s Manual 4 be set: ALTIBASE_HOME : the path to a ser ver or client installation ALTIBASE_PORT_NO : the por t number to use to connect to the ser ver ALTIBASE_NLS_USE : the character set to use to display retrieved data to the user PATH : the path containing the executable file, which must equal $ALTIBASE_HOME/bin 1.3 iSQL Command-Line Options 5Using iSQL 1.3 iSQL C o mmand-Line Options The ALTIBASE HDB ser ver must be star ted before iSQL is executed. The following options are case - insensitive. isql [-H] [-S server_name] [-U user_id] [-P password] [-PORT port_no] [-UNIXDOMAIN_FILEPATH filepath] [-IPC_FILEPATH filepath] [-SILENT] [-F infile_name] [-O outfile_name] [-NLS_USE] [-NLS_NCHAR_LITERAL_REPLACE] [-prefer_ipv6] -S ser v er_name Specifies the name (or IP address) of a computer on which ALTIBASE HDB Ser ver is running. When connecting in IPC, if this option is specified, it is ignored and no error is raised regardless of the operating system. It can be a host name, an IPv4 address, or an IPv6 address. An IPv6 address must be enclosed by a left square bracket([) and a right square bracket(]). For example, in the case of localhost (meaning this computer), localhost can be specified as the host name, 127.0.0.1 as the IPv4 address, or [::1] as the IPv6 address. For more information about the IPv6 address notation, please refer to the ALTIBASE HDB Administrator's Manual. -U us er_id Specifies a user ID registered in the database. -P passwor d Specifies the password corresponding to the user ID. -PORT p o r t _no Specifies the por t number for connecting via TCP/IP or IPC. However, when connecting in a Unix environment via IPC, this option can be omitted. If it is specified, it is ignored and no error is raised. To connect via TCP, first set 'ISQL_CONNEC TION=TCP' on the client and then enter the PORT_NO. To connect via IPC in a Windows environment, set the environment variable 'ISQL_CONNEC TION=IPC' and specify the port number using one of the following: the -PORT option the ALTIBASE_IPC_PORT_NO environment variable the IPC_PORT_NO property in altibase.properties If the environment variable ISQL_CONNEC TION is not set to IPC and the -PORT option is omit- ted, the por t number will be checked for first in the environment variable ALTIBASE_PORT_NO and then in the PORT_NO proper ty in altibase.proper ties, and if it is not set in either of those 1.3 iSQL Command-Line Options iSQL User’s Manual 6 places, a prompt to enter it will be raised. -UNIXDOMAIN_FILEPATH filepath When a ser ver and client connect using a Unix domain socket in a Unix environment (ISQL_CONNEC TION=UNIX), the connection will fail if the ser ver and client have different val- ues for ALTIBASE_HOME and also have different Unix domain socket paths. In this case, if the ser ver and client use corresponding files (e.g. ALTIBASE_HOME/trc/cm-unix), Unix domain communication is possible. -IPC_FILEPATH fil e pat h When the client and the ser ver are to connect via IPC (ISQL_CONNEC TION=IPC ) in a Unix envi- ronment, if ALTIBASE_HOME is set differently on them, they will not be able to connect if they have different socket paths. In this case, Unix domain communication can be achived using the ALTIBASE_HOME/trc/cm-ipc file, and then information about shared memory can be retrieved. However, this option can be omitted if ALTIBASE_IPC_FILEPATH is set. -F infi le_nam e Specifies a script file to be executed immediately after iSQL is launched. -O outfile_name Specifies a file in which to store the results of the excuted iSQL commands. This file will be cre - ated in the current director y. If the file already exists, it will be over written. -H Output s help inf o r m a t ion for iSQL execution. -SILENT T h is optio n tur n s o n sil e nt mo de . I f sil e nt mo de is on , non cr itica l me ssage s , such as th e c o p y - right notice, etc. will not be displayed. -NLS_USE Specifies the cha r a c ter set with which to display data to the user. The following character sets may be specified: US7ASCII K O16 K SC 56 01 MS949 BIG5 G B 231 28 0 UTF8 SHIFTJIS EUCJP I f omit t e d , the en vir onmen t v a riable AL TIB A SE_NLS_USE or altibase.proper ties will be used, in descending order of preference, and if it is still not specified, the basic character set (US7ASCII) will be used. -NLS_NCHAR_LITERAL_REPLACE 1.3 iSQL Command-Line Options 7Using iSQL 0 : c o n v er t all string s t o t h e da ta ba se cha r a c ter set without check i ng f o r t h e "N" charac t e r 1: do not conver t strings that are preceded by the "N" character to the database charac- ter set -prefer_ipv6 This option determines the IP address to be connected first when a host name is given for the - s option. If this option is specified and a host name is given for the -s option, this means that resolving the host name to the IPv6 address is prefered. If this option is omitted, isql connects to the IPv4 address by default. If it fails to connect to the prefered IP version address, an attempt is made to connect using the other IP version address. For example, when localhost is given for the -s option and this option is specified, isql first tries to connect to the [::1] IPv6 address. If this attempt fails, isql proceeds to connect to the 127.0.0.1 IPv4 address. If any of the -S, -U, or -P options are missing from the above command, the user will be prompted to input the option values. 1.4 iSQL Commands iSQL User’s Manual 8 1.4 iSQL Commands When iSQL is star ted, an iSQL command prompt will appear, and when iSQL commands are entered, the results of execution will be displayed. The iSQL commands are described individually in the fol- lowing table. Categor y Type Commands Description iSQL star tup and shut- down Star tup $ isql [option] If you execute this command in a shell, iSQL will star t up. For information on the available options, please refer to the 1.3 iSQL Command-Line Options sec tion. Prompt iSQL> Type a command at the iSQL prompt and press the ENTER key. Shutdown EXIT; QUIT; Used to shut down iSQL. ALTIBASE HDB startup and shutdown ALTIBASE HDB Star tup STARTUP Use the PRE-PROCESS, PROCESS, CON- TROL, META, or SERVICE option to start ALTIBASE HDB up to the corresponding stage. ALTIBASE HDB Shut- down SHUTDOWN Use one of the NORMAL, IMMEDIATE, or ABORT options to shut down ALTIBASE HDB. Database con- nection and disconnection Access the ser ver as another user CO NN E C T [logon] [nls] [AS sysdba]; where logon has the syn- tax: user1[/pass1] where nls has the syntax: NLS=character_set This command allows access to the data- base as user1 with password pass1 after having already accessed the database as another user in iSQL. If CONNEC T is suc- cessful, the information related to the previous session is cleared.The AS clause allows the SYS user to access the ser ver in sysdba manager mode. Only one user is allowed to connect as sysdba at a time. The nls option specifies the character set. For detailed information on character sets, please refer to the 1.3 iSQL Com- mand-Line Options: -NLS_USE option. Terminate a connection DISCONNEC T ; Ends the current session and terminates the connection with the ser ver. 1.4 iSQL Commands 9Using iSQL Database object infor- mation inquir y Display per- formance view list SELEC T * FROM V$TAB; Displays the list of all of the per formance views provided by the system.This com- mand is available only in iSQL. Display table list SELEC T * FROM TAB ; Displays the list of currently created tables.This command is only available in iSQL. Display table structure DESC samp ; Lists the column definitions for the table samp Display sequence Information SELEC T * FROM V$SEQ; If you accessed the ser ver with the SYS account, information on all sequences is displayed. If you accessed the ser ver as another user, only the information on the sequences generated by that user will be displayed. This command is available only in iSQL. Tr a n s a c t i o n control Setting transaction mode AUTOCOMMIT ON; AUTOCOMMIT OFF; Determines whether to commit com- mands automatically at the time that they are executed. Default: ON Other SET functions SET PLANCOMMIT ON; SET PLANCOMMIT OFF; Determines whether to automatically commit commands such as DESC, SELEC T * FROM TAB, or SELEC T * FROM seq_name when EXPLAIN PLAN is ON (or ONLY ) and AUTOCOMMIT is OFF. Default: OFF Categor y Type Commands Description 1.4 iSQL Commands iSQL User’s Manual 10 Fi l e m a n a g e - ment Output data to a file SPOOL file_name ; Star ts writing the results shown on the screen to the file file_name. SPOOL OFF; Stops writing the results shown on the screen to the file file_name. SQL script execution START file_name ; Reads a script file and executes the SQL statements in sequence. @ file_name; Per forms a function similar to that of star tup when executed via an iSQL prompt. @@ file_name; When used in a script, this command exe - cutes the file file_name in the same direc- tor y as the calling script. Save SQL statement to file SAVE abc.sql; Saves the last of the commands currently in the iSQL buffer to a file. Lo ad S QL statement LOAD abc.sql; Loads the first of the commands saved in a file at the end of the command buffer. Save DML statements to file SET QUERYLOGGING ON; SET QUERYLOGGING OFF; This writes executed DML statements, such as INSERT, UPDATE, DELETE and MOVE, in $ALTIBASE_HOME/trc/ isql_quer y.log. Edit quer y statements ED For creating and editing temporar y files. ED file_name[.sql] For editing existing files or creating new files. 2ED or 2 ED Edits quer y command number 2 in the histor y list. Categor y Type Commands Description 1.4 iSQL Commands 11 Using iSQL Control out- put option Fo r m a t SELEC T result col- umn SET LINESIZE 100; Sets the length of a display line for out- putting the result of a SELEC T quer y. Must be between 10 and 32767 inclusive. Default: 80 Fo r m a t SELEC T result col- umn of type CLOB SET LOBSIZE 10; Sets the number of characters to display when a CLOB column is output. Default : 80 SET LOBOFFSET 3; Sets the number of characters by which to offset the display when a CLOB column is output. Default : 0 Output SELEC T result count SET FEED[BACK ] ON; SET FEED[BACK ] OFF; SET FEED[BACK ] n; Determines whether to output the num- ber of rows in a quer y result. Fo r m a t r o w s of SELEC T result SE T PAGESIZE 10; Sets how many records of a SELEC T quer y result are output at one time. When set to 0, all resultant records are output. Default: 0 Show/hide SELEC T result header SE T HEADING ON; SE T HEADING OFF; Sets whether to output the header of a SELEC T result Default: ON Set SELEC T result out- put size. SET COLSIZE N ; Sets the number of characters to output when CHAR or VARCHAR type columns are output as a SELEC T quer y result. Show SQL statement execution time SET TIMING ON; SET TIMING OFF; Sets whether to output the amount of time taken to execute a SQL command. Default: OFF Set the SQL statement execution time units for output SET TIMESCALE SEC; SET TIMESCALE MILSEC; SET TIMESCALE MICSEC; SET TIMESCALE NANSEC; Sets the unit of time for executing SQL statements as seconds, milliseconds, microseconds or nanoseconds. Show/hide foreign key information SET FOREIGNKEYS ON; SET FOREIGNKEYS OFF; Determines whether to include foreign key information in the output when dis- playing the table structure (using DESC). Default: OFF Show/hide script execu- tion result SET TERM ON; SET TERM OFF; Determines whether to display the results of execution of a script file on the screen. Default: ON Categor y Type Commands Description 1.4 iSQL Commands iSQL User’s Manual 12 Control out- put option Output exe - cutionplan tree ALTER SESSION SET EXPLAIN PLAN = ON; ALTER SESSION SET EXPLAIN PLAN = ONLY; ALTER SESSION SET EXPLAIN PLAN = OFF; Determines whether to output an execu- tion plan for a SELEC T statement. Default: OFF SELEC T result out- put direction SET VERTICAL ON; SET VERTICAL OFF; Displays SELEC T results ver tically when set to ON. Default: OFF Show value of iSQL dis- play settings SHOW LINESIZE Displays the current LINESIZE value. SHOW COLSIZE Displays the current COLSIZE value. SHOW LOBOFFSET Displays the current LOBOFFSET value. SHOW LOBSIZE Displays the current LOBSIZE value. SHOW PAGESIZE Displays the current PAGESIZE value. SHOW PLANCOMMIT Shows whether PLANCOMMIT is ON or OFF. SHOW QUERYLOGGING Shows whether DML statements wil be written to ALTIBASE_HOME/trc/ isql_quer y.log when executed. SHOW FEEDBACK Shows the current FEEDBACK value. SHOW HEADING Shows the current HEADING setting. SHOW TERM Shows the current TERM setting. SHOW TIMING Shows the current TIMING setting. SHOW TIMESCALE This shows the current time units for the execution of SQL statements. SHOW USER Shows the current user. SHOW FOREIGNKEYS Shows the current foreign key display setting. SHOW VERTICAL Shows whether the results of a SELEC T quer y will be output ver tically. Control out- put option Show value of iSQL dis- play settings SHOW ALL Shows the set values of the display set- tings for the current session. Categor y Type Commands Description 1.4 iSQL Commands 13 Using iSQL Variable and Prepared SQL statements Va r i a b l e d e c - laration VA R p1 INTEGER; Declares the variable p1 as integer type. VA R I A B L E p2 CHAR(10); Declares the variable p2 as CHAR type. Assign val- ues to vari- ables EXECUTE :p1 := 100 ; Assigns the value 100 to variable p1. EXEC :p2 := ‘abc’ ; Assigns the text ‘a b c ’ to variable p2. Va r i a b l e d i s - play PRINT VAR[IABLE] ; Shows the currently declared variables. PRINT p1; Shows the type and value of variable p1. Prepared SQL state - ment execu- tion PREPARE SQL statement ; Separates the processes of quer y optimi- zation and execution, and executes the quer y as a prepared SQL statement.In iSQL, the default execution method for executing SQL statements is the Direct Execution method, in which optimization and execution are per formed at once.There is no difference between the two execution methods in iSQL in terms of the results obtained, however, pre - pared SQL statements can be used to bind variables to values and execute SQL statements based thereon. Functions for user conve - nience Histor ylist display HISTORY; H; Shows a list of the commands currently saved in the iSQL buffer. Repeat exe - cution / Repeats execution of the command cur- rently in the iSQL buffer.The most recently executed command will be exe - cuted again. 2/ Executes the second command in a list output using the HISTORY command. Shell com- mand execu- tion ! shell command A shell command that follows an excla- mation point will be immediately exe - cuted from within iSQL. Comment /* comment */ -- comment Indicate a multiple -line comment and a single -line comment, respectively. Help HELP; HELP INDEX; HELP EXIT; Provides information on how to use help, outputs a list of commands, and describes (e.g.) the EXIT command, respectively. Categor y Type Commands Description 1.5 iSQL Environment Variables iSQL User’s Manual 14 1.5 iSQL Environment Variables 1.5.1 ALTIBASE_HOME Sets the director y in which the package is installed. In the case of MS Windows, this is set automatically when the ser ver is installed, however, when the client is installed, this is not automatically set due to the danger of a conflict with the environment variables for the ser ver. When installing the client, the user must manually set this director y. This environmental variable must be set in order to use ISQL. Ex) Windows (Server): ‘set ALTIBASE_HOME=C:/Program Files/Altibase/ Altibase5_Server/altibase_home’, Windows (Client): ‘set ALTIBASE_HOME=C:/Program Files/Altibase/ Altibase5_Client/altibase_home_client’) 1.5.2 ALTIBASE_PORT_NO This is the por t number of the ser ver to connect to. This can be specified either by using the -PORT option or in altibase.proper ties. If no designated por t number can be found (in descending order of precedence) in the -PORT option, in the environment variable ALTIBASE_PORT_NO, or in altibase.proper ties, a prompt to enter the por t number will appear. 1.5.3 ALTIBASE_NLS_USE This is the character set used to display retrieved results to the user. US7ASCII K O16 K SC 56 01 MS949 BIG5 G B 231 28 0 UTF8 SHIFTJIS EUCJP T h is can be se t eith er usin g t h e -N LS_USE option or in altibase.proper ties. If NLS_USE is not specified using the -NLS_USE option, the environment variable ALTIBASE_NLS_USE, or altibase.proper ties (in descending order of precedence), US7ASCII is used as the default character set. 1.5 iSQL Environment Variables 15 Using iSQL 1.5.4 ALTIBASE_NLS_NCHAR_LITERAL_REPLACE By default, iSQL conver ts an entire quer y string to the database character set before sending the data to the database. This behavior can be prevented for a given string literal by setting this prop - er ty to 1 and placing the "N" character in front of the string literal. A proper ty setting of 1 instructs iSQL to search for the "N" character in front of ever y string literal. If the "N" character is found, iSQL sends the string to the database without conver ting it to the data- base character set. This is useful when it is desired to use NCHAR type data that are encoded differ- ently from the database character set. 0: conver t all strings to the database character set without checking for the "N" character 1: do not conver t strings that are preceded by the "N" character to the database character set Note: Setting this variable to 1 can be expensive in terms of usage of client resources. 1.5.5 ISQL_CONNECTION When ALTIBASE HDB is used in a client-server arrangement, the user can set environment variables to select the client-ser ver protocol that is suitable for the operating environment. ALTIBASE HDB suppor ts the TCP/IP, IPC and Unix domain socket protocols. The default protocol for communication with ALTIBASE HDB ser vers is TCP/IP. Note that when using the IPC protocol the value of ALTIBASE HDB proper ties related to the IPC chan- nel (IPC_CHANNEL_COUNT ) must be considered. The following example shows how to set the environment variable when using the IPC protocol: CSH: setenv ISQL_CONNECTION IPC SH: ISQL_CONNECTION=IPC; export ISQL_CONNECTION 1.5.6 ISQL_BUFFER_SIZE The size of the buffer in which to store queries can be set using this environment variable. Ex) CSH: ‘setenv ISQL_BUFFER_SIZE 128000’ SH: ‘ISQL_BUFFER_SIZE = 128000; export ISQL_BUFFER_SIZE’ 1.5.7 ALTIBASE_DATE_FORMAT When retrieving Date type data using a SELEC T statement, the environment variable A LT I B A S E _ D AT E _ F O R M AT c a n b e u s e d t o c h a n g e the default date format, which is YYYY/MM/DD HH:MI:SS, to some other date format. Ex) For Born, Korn, or Bash Shell export ALTIBASE_DATE_FORMAT=’DD-MON-YYYY’ 1.5 iSQL Environment Variables iSQL User’s Manual 16 1.5.8 ISQL_EDITOR This environment variable can be used to change the default editor (/usr/bin/vi ). Ex) CSH: ‘setenv ISQL_EDIT usr/bin/ed’ SH: ‘ISQL_EDIT=/usr/bin/ed; export ISQL_EDITOR’ 1.5.9 ALTIBASE_IPC_FILEPATH In a Unix environment, if a client and the ser ver have different values for ALTIBASE_HOME, they will not be able to connect via IPC if they have different Unix domain socket paths. In this case, in order to be able to connect via IPC, it will be necessar y to set the ALTIBASE_IPC_FILEPATH environment variable or the -IPC_FILEPATH iSQL option to the $ALTIBASE_HOME/trc/cm-ipc file used by the ser ver. 1.6 Personalizing iSQL 17 Using iSQL 1.6 Personalizing iSQL iSQL users can customize their iSQL environment and use the same settings for each session. For example, using the OS file, the user can specify a desired output format so that each quer y result dis- plays the current time whenever quer y results are output. These files can be categorized into the fol- lowing two types. 1.6.1 glogin.sql For initialization tasks that must be conducted when iSQL is star ted, iSQL supports the creation of a global script file, glogin.sql, by the DB administrator. iSQL executes this script whenever any user e xe c u t e s i S Q L o r a t t e m p t s t o c o n n e c t t o A LT I B A S E H D B fo r t h e f i r s t t i m e . T h e g l o b a l f i l e a l l o w s t h e D B administrator to make site -specific iSQL environment settings for all users. The global script file is located in $ALTIBASE_HOME/conf. 1.6.2 login.sql iSQL also suppor ts the login.sql file, which is executed after glogin.sql. If both the glogin.sql file and the login.sql file exist, login.sql is executed after glogin.sql during iSQL star tup, so the commands in login.sql will take precedence. If several people share one Unix account, it will be impossible for them to personalize the glogin.sql file. In this case, individual users may add SQL commands, stored procedures, or iSQL commands to their respective login.sql files in their personal work directories. When a user starts up iSQL, iSQL automatically searches the current director y for the login.sql file and executes the commands in it. The login.sql file cannot modify initial iSQL settings or individual session actions. 1.6.3 Editing the LOGIN file The user may change the LOGIN file, like any other script. The following is an example of user1 creat- ing a LOGIN file that turns off autocommit mode and executes SQL statements: $ vi glogin.sql AUTOCOMMIT ON SET HEADING OFF SELECT sysdate FROM dual; $ vi login.sql AUTOCOMMIT OFF SET HEADING ON DROP TABLE savept; CREATE TABLE savept(num INTEGER); INSERT INTO savept VALUES(1); SAVEPOINT sp1; INSERT INTO savept VALUES(2); SELECT * FROM savept; ROLLBACK TO SAVEPOINT sp1; SELECT * FROM savept; COMMIT; $ isql ----------------------------------------------- Altibase Client Query utility. 1.6 Personalizing iSQL iSQL User’s Manual 18 Release Version 5.5.1.1 Copyright 2000, Altibase Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------- Write Server Name (default: 127.0.0.1) : Write UserID : user1 Write Password : ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 Set autocommit on success. -> Executing glogin.sql first 01-JAN-2000 -> heading off 1 row selected. Set autocommit off success. -> Execute login.sql in the current work director y of the user after glogin.sql is executed. Drop success. Create success. 1 row inserted. Savepoint success. -> It is executable only when Autocommit mode is off 1 row inserted. NUM -> heading on -------------- 1 2 2 rows selected. Rollback success. NUM -------------- 1 1 row selected. Commit success. 19 Examples of iSQL in Use 2 Examples of iSQL in Use This chapter describes several examples of the use of iSQL to manipulate databases. 2.1 Logging In to iSQL iSQL User’s Manual 20 2.1 Logging In to iSQL To use iSQL, users must first be logged in. Connection information may be input directly via a com- mand line, or via the iSQL input prompt. isql -U userID -P password [-SYSDBA] or isql [-SYSDBA] Additional information necessar y for connection with the ser ver is the ser ver name (-S), user ID (-U), and password (-P). The user ID and password are not case -sensitive. In order for the SYS user to use iSQL as an administrator, the SYSDBA option is used. The SYSDBA option can be used for remote access. 2.1.1 Login Restric tions Only one user is permitted to connect in SYSDBA mode at one time. Two or more users cannot connect in SYSDBA mode at the same time. You can access the database remotely in SYSDBA mode, but can' t star t up the database. For detailed information on system privileges, please refer to the ALTIBASE HDB SQL Reference. For detailed information on errors that may arise during iSQL execution, please refer to the ALTIBASE HDB Error Message Reference. $ isql -S 127.0.0.1 -U sys -P manager [-SYSDBA] or $ isql [-sysdba] ----------------------------------------------- Altibase Client Query utility. Release Version 5.5.1.1 Copyright 2000, Altibase Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------- Write Server Name (default: 127.0.0.1) : Write UserID : sys Write Password : manager -> The password on the screen is not displayed. ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL(sysdba)> -> iSQL is connected to the ser ver, and SQL, iSQL, and PSM commands can be input and executed here. 2.2 Starting Up and Shutting Down ALTIBASE HDB 21 Examples of iSQL in Use 2.2 Star ting Up and Shutting Down ALTIBASE HDB iSQL can be used to star t up and shut down ALTIBASE HDB. 2.2.1 Star ting Up ALTIBASE HDB To star t up ALTIBASE HDB, iSQL must first be launched with the -sysdba option, in the same way as when a database is created. * Star tup commands of ALTIBASE HDB can be executed only with the UNIX account with which ALTI- BASE HDB (including iSQL) was installed. The following is an example of the use of iSQL to star t up ALTIBASE HDB. For more information on star ting up ALTIBASE HDB, please refer to the ALTIBASE HDB Administrators’ Manual Chapter 4: Star tup and Shutdown. $ isql -s 127.0.0.1 -u sys -p manager -sysdba ------------------------------------------------ Altibase Client Query utility. Release Version 5.5.1.1 Copyright 2000, Altibase Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------ ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1, PORT_NO = 20300 [ERR-910FB : Connected to idle instance] iSQL(sysdba)> startup service Connecting to the DB server... Connected. TRANSITION TO PHASE : PROCESS TRANSITION TO PHASE : CONTROL TRANSITION TO PHASE : META [SM] Recovery Phase - 1 : Preparing Database : Dynamic Memory Version => Parallel Loading [SM] Recovery Phase - 2 : Loading Database [SM] Recovery Phase - 3 : Skipping Recovery Threads... Refining Disk Table [SM] Refine Memory Table : ............................................................................ ........................ [SUCCESS] [SM] Rebuilding Indices [Total Count:101] ............................................................................ ......................... [SUCCESS] TRANSITION TO PHASE : SERVICE [CM] Listener started : TCP on port 20300 [CM] Listener started : UNIX [RP] Initialization : [PASS] --- STARTUP Process SUCCESS --- Command execute success. 2.2.2 Shutting Down ALTIBASE HDB Use the SHUTDOWN command to shut down a running ALTIBASE HDB ser ver. 2.2 Starting Up and Shutting Down ALTIBASE HDB iSQL User’s Manual 22 Th e foll ow i ng i s a n ex a m p l e of t h e u s e of i S Q L t o s hu t d own A LT IB A S E HD B. For m ore i nfor m a t i on on shutting down ALTIBASE HDB, please refer to the ALTIBASE HDB Administrators’ Manual Chapter 4: Star tup and Shutdown. iSQL(sysdba)> shutdown normal Ok..Shutdown Proceeding.... TRANSITION TO PHASE : Shutdown Altibase [RP] Finalization : PASS shutdown normal success. 2.3 Connecting and Disconnecting 23 Examples of iSQL in Use 2.3 Connec ting and Disconnec ting 2.3.1 Connec ting to a Database The CONNEC T command is used to connect to ALTIBASE HDB with a specified user ID. If the first con- nection attempt fails, the CONNECT command does not prompt again for the user ID or password. CONNECT [logon] [nls] [AS SYSDBA]; where longon has the syntax: userID[/password] and nls has the syntax: NLS=character_set 2.3.1.1 userID/password The user ID and password with which to establish a connection to ALTIBASE HDB. 2.3.1.2 NLS=character_set The NLS option specifies the character set. iSQL> CONNECT sys/manager NLS=US7ASCII Connect success. 2.3.1.3 AS SYSDBA The AS clause permits the SYS user to access the ser ver in sysdba manager mode. If CONNEC T is successful, the current session is terminated, and a connection is established to the ser ver using the specified user ID and password and the information in altibase.proper ties. Accord- ingly, the session information is cleared before connec ting. For instance, if AUTOCOMMIT mode is set to TRUE in altibase.proper ties and AUTOCOMMIT mode is changed to false in iSQL, when the CONNEC T statement is executed, AUTOCOMMIT mode will be changed to TRUE, because of the value in altibase.proper ties. If CONNEC T fails, the previous session is terminated and the connection with the ser ver is closed. In other words, the result of all SQL statements executed thereafter will be a “Not connected” message. Execute “CONNEC T userID/password [AS SYSDBA]” to attempt to re - establish a connection with the ser ver. CONNECT userID/password [AS SYSDBA]; $ isql ----------------------------------------------- Altibase Client Query utility. Release Version 5.5.1.1 Copyright 2000, Altibase Corporation or its subsidiaries. All Rights Reserved. 2.3 Connecting and Disconnecting iSQL User’s Manual 24 ----------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : SYS Write Password : ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL> SHOW USER; User : SYS iSQL> CREATE USER altiadmin IDENTIFIED BY altiadmin1234; Create success. iSQL> CONNECT altiadmin/altiadmin1234; Connect success. iSQL> SHOW USER; User : ALTIADMIN iSQL> CREATE TABLE altitbl(i1 INTEGER, i2 CHAR(5)); Create success. iSQL> SELECT * FROM tab; TABLE NAME TYPE --------------------------------------------- ALTITBL TABLE CLEAR_DP SYNONYM DUAL SYNONYM EXPORT_PARTITION_TO_FILE SYNONYM EXPORT_TO_FILE SYNONYM EXPORT_USER_TABLES SYNONYM FCLOSE SYNONYM FCLOSE_ALL SYNONYM FCOPY SYNONYM FFLUSH SYNONYM FOPEN SYNONYM FREMOVE SYNONYM FRENAME SYNONYM GET_LINE SYNONYM IMPORT_FROM_FILE SYNONYM IS_OPEN SYNONYM NEW_LINE SYNONYM PRINT SYNONYM PRINTLN SYNONYM PUT SYNONYM PUT_LINE SYNONYM RAISE_APPLICATION_ERROR SYNONYM REGISTER SYNONYM REMOVE SYNONYM REMOVEALL SYNONYM REMOVE_DP SYNONYM REMOVE_XID SYNONYM RESUME_DP SYNONYM SET_DEFAULTS SYNONYM SIGNAL SYNONYM SLEEP SYNONYM WAITANY SYNONYM WAITONE SYNONYM 33 rows selected. iSQL> CONNECT sys/manager; Connect success. iSQL> SHOW USER; User : SYS 2.3 Connecting and Disconnecting 25 Examples of iSQL in Use iSQL> CREATE TABLE systbl(i1 INTEGER, i2 CHAR(5)); Create success. iSQL> SELECT * FROM tab; USER NAME TABLE NAME TYPE -------------------------------------------------- SYSTEM_ STO_COLUMNS_ SYSTEM TABLE SYSTEM_ STO_DATUMS_ SYSTEM TABLE SYSTEM_ STO_ELLIPSOIDS_ SYSTEM TABLE SYSTEM_ STO_GEOCCS_ SYSTEM TABLE SYSTEM_ STO_GEOGCS_ SYSTEM TABLE SYSTEM_ STO_PRIMEMS_ SYSTEM TABLE SYSTEM_ STO_PROJCS_ SYSTEM TABLE SYSTEM_ STO_PROJECTIONS_ SYSTEM TABLE SYSTEM_ STO_SRS_ SYSTEM TABLE SYSTEM_ STO_USER_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_COMMENTS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINTS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINT_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_DATABASE_ SYSTEM TABLE SYSTEM_ SYS_DATABASE_LINKS_ SYSTEM TABLE SYSTEM_ SYS_DATA_PORTS_ SYSTEM TABLE SYSTEM_ SYS_DIRECTORIES_ SYSTEM TABLE SYSTEM_ SYS_DN_USERS_ SYSTEM TABLE SYSTEM_ SYS_DUMMY_ SYSTEM TABLE SYSTEM_ SYS_ENCRYPTED_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_GRANT_OBJECT_ SYSTEM TABLE SYSTEM_ SYS_GRANT_SYSTEM_ SYSTEM TABLE SYSTEM_ SYS_INDEX_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_INDEX_PARTITIONS_ SYSTEM TABLE SYSTEM_ SYS_INDICES_ SYSTEM TABLE SYSTEM_ SYS_LOBS_ SYSTEM TABLE SYSTEM_ SYS_PART_INDICES_ SYSTEM TABLE SYSTEM_ SYS_PART_KEY_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_PART_LOBS_ SYSTEM TABLE SYSTEM_ SYS_PART_TABLES_ SYSTEM TABLE SYSTEM_ SYS_PRIVILEGES_ SYSTEM TABLE SYSTEM_ SYS_PROCEDURES_ SYSTEM TABLE SYSTEM_ SYS_PROC_PARAS_ SYSTEM TABLE SYSTEM_ SYS_PROC_PARSE_ SYSTEM TABLE SYSTEM_ SYS_PROC_RELATED_ SYSTEM TABLE SYSTEM_ SYS_REPLICATIONS_ SYSTEM TABLE SYSTEM_ SYS_REPL_HOSTS_ SYSTEM TABLE SYSTEM_ SYS_REPL_ITEMS_ SYSTEM TABLE SYSTEM_ SYS_REPL_OFFLINE_DIR_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_INDEX_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_INDICES_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_ITEMS_ SYSTEM TABLE SYSTEM_ SYS_REPL_RECOVERY_INFOS_ SYSTEM TABLE SYSTEM_ SYS_SECURITY_ SYSTEM TABLE SYSTEM_ SYS_SYNONYMS_ SYSTEM TABLE SYSTEM_ SYS_TABLES_ SYSTEM TABLE SYSTEM_ SYS_TABLE_PARTITIONS_ SYSTEM TABLE SYSTEM_ SYS_TBS_USERS_ SYSTEM TABLE SYSTEM_ SYS_TRIGGERS_ SYSTEM TABLE SYSTEM_ SYS_TRIGGER_DML_TABLES_ SYSTEM TABLE SYSTEM_ SYS_TRIGGER_STRINGS_ SYSTEM TABLE SYSTEM_ SYS_TRIGGER_UPDATE_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_USERS_ SYSTEM TABLE SYSTEM_ SYS_VIEWS_ SYSTEM TABLE SYSTEM_ SYS_VIEW_PARSE_ SYSTEM TABLE SYSTEM_ SYS_VIEW_RELATED_ SYSTEM TABLE SYSTEM_ SYS_XA_HEURISTIC_TRANS_ SYSTEM TABLE 2.3 Connecting and Disconnecting iSQL User’s Manual 26 ALTIADMIN ALTITBL TABLE SYS SYSTBL TABLE CLEAR_DP SYNONYM DUAL SYNONYM EXPORT_PARTITION_TO_FILE SYNONYM EXPORT_TO_FILE SYNONYM EXPORT_USER_TABLES SYNONYM FCLOSE SYNONYM FCLOSE_ALL SYNONYM FCOPY SYNONYM FFLUSH SYNONYM FOPEN SYNONYM FREMOVE SYNONYM FRENAME SYNONYM GET_LINE SYNONYM IMPORT_FROM_FILE SYNONYM IS_OPEN SYNONYM NEW_LINE SYNONYM PRINT SYNONYM PRINTLN SYNONYM PUT SYNONYM PUT_LINE SYNONYM RAISE_APPLICATION_ERROR SYNONYM REGISTER SYNONYM REMOVE SYNONYM REMOVEALL SYNONYM REMOVE_DP SYNONYM REMOVE_XID SYNONYM RESUME_DP SYNONYM SET_DEFAULTS SYNONYM SIGNAL SYNONYM SLEEP SYNONYM WAITANY SYNONYM WAITONE SYNONYM 93 rows selected. 2.3.2 Disconnec ting from a Database DISCONNEC T is used to terminate the current session and disconnect from the ser ver. The result of all subsequently executed SQL statements will be a “Not connected” message, and “CONNEC T use - rID/password” must be executed in order to connect to the ser ver again. DISCONNECT; iSQL> INSERT INTO systbl VALUES(1, 'A1'); 1 row inserted. iSQL> INSERT INTO systbl VALUES(2, 'A2'); 1 row inserted. iSQL> SELECT * FROM systbl; I1 I2 ---------------------- 1 A1 2 A2 2 rows selected. iSQL> DISCONNECT; Disconnect success. iSQL> INSERT INTO systbl VALUES(3, 'A3'); [ERR-91020 : No Connection State] 2.3 Connecting and Disconnecting 27 Examples of iSQL in Use iSQL> SELECT * FROM systbl; [ERR-91020 : No Connection State] iSQL> CONNECT sys/manager; Connect success. 2.4 Retrieving Information Related to the Database and Database Objects iSQL User’s Manual 28 2.4 Retrieving Information Related to the Database and Database Objec ts 2.4.1 Per formance Views A per formance view is a type of data dictionar y table capable of inquiring about the ser ver status and database information. The following SELEC T statement can be used to view the list of per for- mance views provided by ALTIBASE HDB: iSQL> SELECT * FROM v$tab; TABLE NAME TYPE --------------------------------------------- V$ALLCOLUMN PERFORMANCE VIEW V$ARCHIVE PERFORMANCE VIEW V$BUFFPAGEINFO PERFORMANCE VIEW V$BUFFPOOL_STAT PERFORMANCE VIEW V$CATALOG PERFORMANCE VIEW V$DATABASE PERFORMANCE VIEW V$DATAFILES PERFORMANCE VIEW V$DATATYPE PERFORMANCE VIEW V$DBA_2PC_PENDING PERFORMANCE VIEW V$DBLINK_REMOTE_STATEMENT_INFO PERFORMANCE VIEW V$DBLINK_REMOTE_TRANSACTION_INFO PERFORMANCE VIEW V$DBLINK_TRANSACTION_INFO PERFORMANCE VIEW V$DB_FREEPAGELISTS PERFORMANCE VIEW V$DB_PROTOCOL PERFORMANCE VIEW V$DIRECT_PATH_INSERT PERFORMANCE VIEW V$DISKTBL_INFO PERFORMANCE VIEW V$DISK_BTREE_HEADER PERFORMANCE VIEW V$DISK_RTREE_HEADER PERFORMANCE VIEW V$EVENT_NAME PERFORMANCE VIEW V$FILESTAT PERFORMANCE VIEW V$FLUSHER PERFORMANCE VIEW V$FLUSHINFO PERFORMANCE VIEW . . For the complete list of the per formance views provided with ALTIBASE HDB and the meanings of the columns, please refer to the ALTIBASE HDB General Reference Chapter 3: Data Dictionary. Data in a particular per formance view can be queried in the same way as an ordinar y table using a SELEC T statement, and using JOIN, etc., results can be output in various forms. 2.4.2 Viewing the List of Tables Information on all of the tables that exist in the database can be retrieved using the following SELEC T statement. The SYS_TABLES_ meta table is an internal system table that contains informa- tion about the database catalog provided by ALTIBASE HDB. iSQL> SELECT * FROM system_.sys_tables_; iSQL> SELECT * FROM tab; -> This command is available in iSQL only. USER NAME TABLE NAME TYPE -------------------------------------------------- SYSTEM_ STO_COLUMNS_ SYSTEM TABLE SYSTEM_ STO_DATUMS_ SYSTEM TABLE 2.4 Retrieving Information Related to the Database and Database Objects 29 Examples of iSQL in Use SYSTEM_ STO_ELLIPSOIDS_ SYSTEM TABLE SYSTEM_ STO_GEOCCS_ SYSTEM TABLE SYSTEM_ STO_GEOGCS_ SYSTEM TABLE SYSTEM_ STO_PRIMEMS_ SYSTEM TABLE SYSTEM_ STO_PROJCS_ SYSTEM TABLE SYSTEM_ STO_PROJECTIONS_ SYSTEM TABLE SYSTEM_ STO_SRS_ SYSTEM TABLE SYSTEM_ STO_USER_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_COMMENTS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINTS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINT_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_DATABASE_ SYSTEM TABLE SYSTEM_ SYS_DATABASE_LINKS_ SYSTEM TABLE SYSTEM_ SYS_DATA_PORTS_ SYSTEM TABLE SYSTEM_ SYS_DIRECTORIES_ SYSTEM TABLE SYSTEM_ SYS_DN_USERS_ SYSTEM TABLE SYSTEM_ SYS_DUMMY_ SYSTEM TABLE SYSTEM_ SYS_ENCRYPTED_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_GRANT_OBJECT_ SYSTEM TABLE SYSTEM_ SYS_GRANT_SYSTEM_ SYSTEM TABLE SYSTEM_ SYS_INDEX_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_INDEX_PARTITIONS_ SYSTEM TABLE SYSTEM_ SYS_INDICES_ SYSTEM TABLE SYSTEM_ SYS_LOBS_ SYSTEM TABLE SYSTEM_ SYS_PART_INDICES_ SYSTEM TABLE SYSTEM_ SYS_PART_KEY_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_PART_LOBS_ SYSTEM TABLE SYSTEM_ SYS_PART_TABLES_ SYSTEM TABLE SYSTEM_ SYS_PRIVILEGES_ SYSTEM TABLE SYSTEM_ SYS_PROCEDURES_ SYSTEM TABLE SYSTEM_ SYS_PROC_PARAS_ SYSTEM TABLE SYSTEM_ SYS_PROC_PARSE_ SYSTEM TABLE SYSTEM_ SYS_PROC_RELATED_ SYSTEM TABLE SYSTEM_ SYS_REPLICATIONS_ SYSTEM TABLE SYSTEM_ SYS_REPL_HOSTS_ SYSTEM TABLE SYSTEM_ SYS_REPL_ITEMS_ SYSTEM TABLE SYSTEM_ SYS_REPL_OFFLINE_DIR_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_INDEX_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_INDICES_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_ITEMS_ SYSTEM TABLE SYSTEM_ SYS_REPL_RECOVERY_INFOS_ SYSTEM TABLE SYSTEM_ SYS_SECURITY_ SYSTEM TABLE SYSTEM_ SYS_SYNONYMS_ SYSTEM TABLE SYSTEM_ SYS_TABLES_ SYSTEM TABLE SYSTEM_ SYS_TABLE_PARTITIONS_ SYSTEM TABLE SYSTEM_ SYS_TBS_USERS_ SYSTEM TABLE SYSTEM_ SYS_TRIGGERS_ SYSTEM TABLE SYSTEM_ SYS_TRIGGER_DML_TABLES_ SYSTEM TABLE SYSTEM_ SYS_TRIGGER_STRINGS_ SYSTEM TABLE SYSTEM_ SYS_TRIGGER_UPDATE_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_USERS_ SYSTEM TABLE SYSTEM_ SYS_VIEWS_ SYSTEM TABLE SYSTEM_ SYS_VIEW_PARSE_ SYSTEM TABLE SYSTEM_ SYS_VIEW_RELATED_ SYSTEM TABLE SYSTEM_ SYS_XA_HEURISTIC_TRANS_ SYSTEM TABLE CLEAR_DP SYNONYM DUAL SYNONYM EXPORT_PARTITION_TO_FILE SYNONYM EXPORT_TO_FILE SYNONYM EXPORT_USER_TABLES SYNONYM FCLOSE SYNONYM FCLOSE_ALL SYNONYM FCOPY SYNONYM 2.4 Retrieving Information Related to the Database and Database Objects iSQL User’s Manual 30 FFLUSH SYNONYM FOPEN SYNONYM FREMOVE SYNONYM FRENAME SYNONYM GET_LINE SYNONYM IMPORT_FROM_FILE SYNONYM IS_OPEN SYNONYM NEW_LINE SYNONYM PRINT SYNONYM PRINTLN SYNONYM PUT SYNONYM PUT_LINE SYNONYM RAISE_APPLICATION_ERROR SYNONYM REGISTER SYNONYM REMOVE SYNONYM REMOVEALL SYNONYM REMOVE_DP SYNONYM REMOVE_XID SYNONYM RESUME_DP SYNONYM SET_DEFAULTS SYNONYM SIGNAL SYNONYM SLEEP SYNONYM WAITANY SYNONYM WAITONE SYNONYM 91 rows selected. 2.4.3 Viewing a Table Struc ture The following command is used to retrieve information on user-created tables: DESC table_name; iSQL> CREATE TABLE departments ( DNO SMALLINT PRIMARY KEY, DNAME CHAR(30) NOT NULL, DEP_LOCATION CHAR(9), MGR_NO INTEGER ); iSQL> DESC departments; -> table_name : The name of a table whose information (table structure) you want to k now. [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ----------------------------------------------------------- NAME TYPE IS NULL ----------------------------------------------------------- DNO SMALLINT FIXED NOT NULL DNAME CHAR(30) FIXED NOT NULL DEP_LOCATION CHAR(9) FIXED MGR_NO INTEGER FIXED [ INDEX ] ----------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- __SYS_IDX_ID_122 BTREE UNIQUE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- DNO 2.4 Retrieving Information Related to the Database and Database Objects 31 Examples of iSQL in Use 2.4.4 Viewing Sequence Information The following commands are used to obtain information on all sequences that exist in the database: SELECT * FROM seq; iSQL> CONNECT sys/manager; Connect success. iSQL> CREATE USER user1 IDENTIFIED BY user1; Create success. iSQL> CONNECT user1/user1; Connect success. iSQL> CREATE SEQUENCE seq1 MAXVALUE 100 CYCLE; Create success. iSQL> CREATE SEQUENCE seq2; Create success. iSQL> CONNECT sys/manager; Connect success. iSQL> CREATE SEQUENCE seq2 START WITH 20 INCREMENT BY 30; Create success. iSQL> CREATE SEQUENCE seq3 CACHE 40; Create success. iSQL> SELECT * FROM seq; -> When accessing the database using the SYS account, information of all sequences will be displayed. USER_NAME -------------------------------------------- SEQUENCE_NAME CURRENT_VALUE -------------------------------------------------------------------- INCREMENT_BY MIN_VALUE MAX_VALUE CYCLE ---------------------------------------------------------------------------- CACHE_SIZE ------------------------- SYS SEQ2 30 1 9223372036854775806 NO 20 SYS SEQ3 1 1 9223372036854775806 NO 40 USER1 SEQ1 1 1 100 YES 20 USER1 SEQ2 1 1 9223372036854775806 NO 20 4 rows selected. iSQL> CONNECT user1/user1; Connect success. iSQL> SELECT * FROM seq; -> Information of all sequences created by User 1 will be displayed. SEQUENCE_NAME CURRENT_VALUE 2.4 Retrieving Information Related to the Database and Database Objects iSQL User’s Manual 32 -------------------------------------------------------------------- INCREMENT_BY MIN_VALUE MAX_VALUE CYCLE ---------------------------------------------------------------------------- CACHE_SIZE ------------------------- SEQ1 1 1 100 YES 20 SEQ2 1 1 9223372036854775806 NO 20 2 rows selected. 2.5 Controlling Transactions 33 Examples of iSQL in Use 2.5 Controlling Transac tions 2.5.1 Defining Transac tion Modes AUTOCOMMIT determines whether to automatically commit the results of a command at the time of execution. iSQL> AUTOCOMMIT OFF; -> Commands are not automatically committed before being manually commit- ted by the user. Set autocommit off success. iSQL> AUTOCOMMIT ON; -> Commands are automatically committed at the time of execution. Set autocommit on success. 2.5.2 PLANCOMMIT SET PLANCOMMIT [ON/OFF]; When EXPLAIN PLAN has been set to ON or ONLY, there is the possibility that the iSQL commands DESC; SELEC T * FROM TAB; or SELEC T * FROM sequence_tblName; will be committed, even if AUTO- COMMIT has been set to OFF. This setting determines whether to commit them automatically. This setting has been provided to overcome the misunderstanding where the user believes that such a command has not been prepared, but the system prepares the command in order to gener- ate the execution plan. The command would then be committed, without the user knowing it, when a COMMIT command is executed later. When this value is OFF (which is the default) in a session for which EXPLAIN PLAN is ON (or ONLY ) and AUTOCOMMIT is OFF, ALTIBASE HDB does not autocommit the above commands (DESC, SELEC T * FROM tab; or SELEC T * FROM sequence_tblName;). When this value is ON, iSQL issues a special commit command to commit these commands. 2.6 File Management iSQL User’s Manual 34 2.6 File Management 2.6.1 Saving Results iSQL enables results returned through iSQL to be saved in a designated file. In the following exam- ple, results are stored in the designated file, book.txt, using the SPOOL command. To cancel this command, use the SPOOL OFF command. iSQL> SPOOL book.txt Spool start. [book.txt] -> All subsequently executed commands and their results will be written to book.txt. The file is created in the current director y. iSQL> SPOOL OFF Spool Stop -> From this point on, no more commands or results will be saved in the file. 2.6.2 Running Scripts 2.6.2.1 @ Command @ file_name[.sql] or START file_name[.sql] file_name[.sql]: The script file to be executed. If the filename extension is omitted, iSQL assumes the default command file extension (.sql). When this command is executed, , iSQL executes all of the commands in the specified script file in sequence. @command per forms the same function as START. An EXIT or QUIT command in the script file terminates iSQL. The script file may include general SQL statements, iSQL commands, references to stored pro- cedures, etc. The following is an example in which the schema.sql script, which can be found in the $ALTIBASE_HOME/sample/APRE/schema director y, which is the current director y, is executed. iSQL> START schema.sql -> The SQL statements in the file are executed. or iSQL> @schema.sql When specifying a script file, you can use a question mark (“?”) to indicate the ALTIBASE HDB home director y ($ALTIBASE_HOME) of the user account. The following is an example in which the schema.sql script, which can be found in the $ALTIBASE_HOME/sample/APRE/schema director y, is executed regardless of which director y is the 2.6 File Management 35 Examples of iSQL in Use current director y. iSQL> @?/sample/APRE/schema/schema.sql The question mark (“?”) can also be used with the following iSQL commands: EDIT, SAVE, LOAD, SPOOL, START The -- or /* */ charac ters can be used to inser t comments in script files. -- means that ever ything that follows until the end of the line will be handled as a comment, whereas comments that span several lines are placed between /* and */. 2.6.2.2 @@ Command @@ file_name[.sql] Executes the specified script. The functionality of the @@ command is similar to that of the @ com- mand. This command searches for script files in the same path as the script currently being executed, and is thus useful for executing embedded scripts. file_name[.sql]: This indicates the embedded script to be executed. If the extension is omitted, iSQL assumes the default command file extension(.sql). The @@ command can be used for the following purposes: If a script file that contains the text @@file_name.sql is executed, iSQL looks for the file speci- fied by file_name.sql, and executes its contents in sequence. file_name.sql must be located in the same director y as the script file that called it. If no such file exists, iSQL raises an error. If a user inputs @@ file_name . sq l at the iSQL prompt, the result will be the same as when using iSQL to execute @file_name.sql. The script typically may include SQL statements, iSQL commands, or stored procedures. An EXIT or QUIT command in the script terminates iSQL. The following is an example of the execution of a.sql, in which schema.sql is referenced, from the $ALTIBASE_HOME director y. In order for this example to be executed without error, a.sql must exist in the $ALTIBASE_HOME/sample/APRE/schema director y alongside schema.sql. iSQL> @sample/APRE/schema/a.sql $ cat a.sql @@schema.sql Note: The following chapter provides examples of editing the results of a query in an iSQL environment based on the tables created by execution of the above script (see appendix Schema). 2.6 File Management iSQL User’s Manual 36 2.6.3 Saving SQL Statements Of the commands currently in the iSQL buffer, the SAVE command saves the most recently executed one in a file. This file will be created in the current directory. iSQL> SELECT * FROM book; iSQL> SAVE book.sql -> ‘SELEC T * FROM book;’ is saved in the file book.sql. Save completed. 2.6.4 Loading SQL Statements This function loads the first command in the specified file to the last position in the iSQL buffer. iSQL> LOAD book.sql iSQL> SELECT * FROM book; Load completed. iSQL> / -> The results of execution of SELEC T * FROM book; can be seen. 2.6.5 Saving DML Statements Executed DML statements such as INSERT, UPDATE, DELE TE and MOVE are saved in $ALTIBASE_HOME/trc/isql_quer y.log. Specify SET QUERYLOGGING ON to use this functionality and OFF to disable it. iSQL> SET QUERYLOGGING ON; -> From this point on, all executed DML statements will be saved in $ALTIBASE_HOME/trc/isql_quer y.log. iSQL> CREATE TABLE t1 ( I1 INTEGER ); Create success. iSQL> INSERT INTO t1 VALUES ( 1 ); 1 row inserted. iSQL> UPDATE t1 SET i1 = 2; 1 row updated. iSQL> SELECT * FROM t1; I1 -------------- 2 1 row selected. iSQL> DELETE FROM t1; 1 row deleted. iSQL> DROP TABLE t1; Drop success. iSQL> EXIT $ cat $ALTIBASE_HOME/trc/isql_query.log -> All queries executed since SE T QUERYLOGGING ON was executed can be obser ved. [2009/09/16 10:36:14] [127.0.0.1:20300 SYS] INSERT INTO t1 VALUES ( 1 ) [2009/09/16 10:36:25] [127.0.0.1:20300 SYS] UPDATE t1 SET i1 = 2 [2009/09/16 10:36:31] [127.0.0.1:20300 SYS] DELETE FROM t1 2.6 File Management 37 Examples of iSQL in Use 2.6.6 Editing Quer y Statements 2.6.6.1 Editing the Most Recent Quer y Statement The command ed is provided for creating and editing files in iSQL. If you execute ed without parameters, a temporar y file named iSQL.buf containing the most recently executed quer y statements will be created, and the following screen will be visible. ( To save space, only a few of the blank lines that would be displayed on the screen are shown here.) iSQL> SELECT sysdate FROM dual; SYSDATE --------------- 01-JAN-2000 1 row selected. iSQL> ED SELECT sysdate FROM dual; ~ ~ ~ "iSQL.buf" 1L, 26C 2.6.6.2 Editing Existing Files If you want to edit an existing file, type the file name in iSQL as a parameter when launching the text editor using the “ed” command. When the screen is initialized, blank lines will be displayed as ~ (tilde) characters. iSQL> ED myquery.sql "myquery.sql" INSERT INTO employees(ENO, E_FIRSTNAME, E_LASTNAME, SEX) VALUES(21, 'Shiloh', 'Reynolds', 'F'); INSERT INTO employees(ENO, E_FIRSTNAME, E_LASTNAME, SEX, JOIN_DATE) VAL- UES(22, 'Joshua', 'Baldwin', 'M', TO_DATE('2001-11-19 00:00:00', 'YYYY-MM-DD HH:MI:SS')); ~ ~"myquery.sql" 2.6.6.3 Editing Quer y Statements in Histor y Lists You can use the number in the histor y list to edit previously executed commands. In detail, the query statements are stored in the temporary file iSQL.buf in association with numbers, and can be edited with reference to them. The edited quer y will be stored again as the most recent record in the histor y list, and can be executed by entering the ‘/’ (re -execute) character. iSQL> H 1 : SELECT * FROM customers; 2 : SELECT * FROM employees; iSQL> 2ed or iSQL> 2 ed SELECT * FROM orders; ~ ~ 2.6 File Management iSQL User’s Manual 38 "iSQL.buf" Note: The command-line parameter 2, which is the name of the file to be edited (iSQL> ed 2), must be dis- tinguished from the number indicating the line in the file to edit. After editing (employees was replaced with orders) iSQL> h -> The histor y list currently in the isql buffer 1 : SELECT * FROM customers; 2 : SELECT * FROM employees; 3 : SELECT * FROM orders; -> The query statement edited using the 2 ed command will be saved as the last command in the histor y list. iSQL> / -> The most recently executed command will be executed. ONO ORDER_DATE ENO CNO ------------------------------------------------------------------------ GNO QTY ARRIVAL_DATE PROCESSING ------------------------------------------------------ 11290007 29-NOV-2010 12 7111111431202 A111100002 70 02-DEC-2010 C 11290011 29-NOV-2010 12 7610011000001 E111100001 1000 05-DEC-2010 D 11290100 29-NOV-2010 19 7001011001001 E111100001 500 07-DEC-2010 D 12100277 10-DEC-2010 19 7610121220475 . . 12310012 31-DEC-2010 19 7308281201145 C111100001 250 03-JAN-2011 O 30 rows selected. 2.6.6.4 Environment Variables for the Default Editor You can set the environment variable ISQL_EDITOR to use an editor other than the default editor (/ usr/bin/vi) . Ex) CSH: ‘setenv ISQL_EDITOR usr/bin/ed’ SH: ‘ISQL_EDITOR=/usr/bin/ed; export ISQL_EDITOR’ 2.7 Formatting SELECT Query Results 39 Examples of iSQL in Use 2.7 Formatting SELEC T Quer y Results The results of a SELEC T quer y can be formatted as desired by the user. 2.7.1 SET LINESIZE Sets the size (number of characters) of one line to be displayed when the results of a SELEC T state - ment are output. I t must be between 10 and 32767. iSQL> set linesize 70; iSQL> select * from employees; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ EMP_JOB EMP_TEL DNO SALARY SEX --------------------------------------------------------------------- BIRTH JOIN_DATE STATUS --------------------------------- 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H . . 20 rows selected. 2.7.2 SET LOBSIZE This specifies the number of characters to display when a CLOB column is queried using a SELEC T statement. In order to quer y CLOB column data using a SELEC T statement, the transaction mode must first be set to AUTOCOMMIT OFF. iSQL> CREATE TABLE c1(I1 INTEGER, I2 CLOB); INSERT INTO c1 VALUES(1, 'A123456789'); INSERT INTO c1 VALUES(2, 'A1234'); INSERT INTO c1 VALUES(3, 'A12345'); INSERT INTO c1 VALUES(4, 'A1234567890123'); iSQL> AUTOCOMMIT OFF -> This sets the transaction mode to OFF so that a CLOB column can be queried. Set autocommit off success. iSQL> SELECT * FROM c1; I 1 I 2 ---------------------------------------------------------------------------- -------------------- 1 A123456789 2 A 1 2 3 4 3 A12345 4 A1234567890123 4 rows selected. 2.7 Formatting SELECT Query Results iSQL User’s Manual 40 iSQL> SET LOBSIZE 10; -> This specifies the number of characters to display on the screen when quer y- ing a CLOB column using a SELEC T statement. iSQL> SELECT * FROM c1; I1 I2 -------------------------- 1 A123456789 2 A1234 3 A12345 4 A123456789 4 rows selected. 2.7.3 SET LOBOFFSET This specifies the star ting location from which to display CLOB data when a CLOB column is queried using a SELEC T statement. In order to quer y CLOB column data using a SELEC T statement, the transaction mode must first be set to AUTOCOMMIT OFF. iSQL> CREATE TABLE c1(I1 INTEGER, I2 CLOB); INSERT INTO c1 VALUES(1, 'A123456789'); INSERT INTO c1 VALUES(2, 'A1234'); INSERT INTO c1 VALUES(3, 'A12345'); INSERT INTO c1 VALUES(4, 'A1234567890123'); iSQL> AUTOCOMMIT OFF Set autocommit off success. iSQL> SET LOBOFFSET 4; -> This specifies the starting location of data to be shown on the screen num- ber of characters to skip) when quer ying a CLOB column using a SELEC T statement. iSQL> SELECT * FROM c1; I1 I2 -------------------------- 1 456789 2 4 3 45 4 4567890123 4 rows selected. 2.7.4 SET FEEDBACK Outputs the number of records found when the results of a SELEC T statement are output. SET FEEDBACK ON|OFF|n; ON: Output the number of resultant records after execution of a SELEC T statement. OFF: Do not output the number of resultant records after execution of a SELEC T statement. n: Output the number of resultant records when the number is n or greater. iSQL> set feedback on; iSQL> select * from employees where eno < 3; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ EMP_JOB EMP_TEL DNO SALARY SEX --------------------------------------------------------------------- BIRTH JOIN_DATE STATUS --------------------------------- 2.7 Formatting SELECT Query Results 41 Examples of iSQL in Use 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 2 rows selected. 2.7.5 SET PAGESIZE Specifies the number of resultant rows to display at one time. iSQL> SET PAGESIZE 2; -> Show results in groups comprising two rows each. iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 3 Ken Kobain 4 Aaron Foster ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. iSQL> SET PAGESIZE 0; -> Show all of the results on one page. iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. 2.7.6 SET HEADING Sets whether to output the header with a SELEC T result. iSQL> SET HEADING OFF; -> Header is not displayed with the result. iSQL> select eno, e_firstname, e_lastname from employees; 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . 2.7 Formatting SELECT Query Results iSQL User’s Manual 42 . . 20 rows selected. iSQL> SET HEADING ON; -> Outputs header in result. iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. 2.7.7 SET COLSIZE When the results of a SELEC T statement are output, sets the number of characters from a column of type CHAR or VARCHAR to display so that columns containing long lines of tex t can be easily viewed. iSQL> CREATE TABLE location( ID INTEGER, NAME CHAR(20), ADDRESS VARCHAR(500), PHONE CHAR(20)); Create success. iSQL> INSERT INTO location VALUES(1, 'ALTIBASE', '10Fl., Daerungpost-tower II, Guro-dong, Guro-qu, Seoul 152-790. Korea', '82-2-2082-1000'); 1 row inserted. I n t he fo llowi n g ex am p le, t he nu m b er of ch arac ter s of a co lu m n o f t y pe C HA R or VA R C H A R i s s e t to 7: iSQL> SET COLSIZE 7; iSQL> SELECT id, name, address, phone FROM location; ID NAME ADDRESS PHONE -------------------------------------------- 1 ALTIBAS 10Fl., 82-2-20 E Daerung 82-1000 post-to wer II, Guro-d ong, Gu ro-qu, Seoul 1 52-790. Korea 1 row selected. 2.8 Setting Output Options 43 Examples of iSQL in Use 2.8 Setting Output Options 2.8.1 Getting the Elapsed Time This function displays the time it took to execute the SQL statement. iSQL> SET TIMING ON; -> Output the execution time in the last line after the command is executed. iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 0.01 iSQL> SET TIMING OFF; -> Execution time is not displayed. 2.8.2 Setting Execution Time Units for Output This function sets the units with which to output SQL statement execution time. Can be set to the following units: Seconds M illise c o nds Microseconds N a nose c o n ds iSQL> SET TIMING ON iSQL> SET TIMESCALE SEC; iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 0.00 iSQL> SET TIMESCALE MILSEC; iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 2.8 Setting Output Options iSQL User’s Manual 44 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 0.72 iSQL> SET TIMESCALE MICSEC; iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 966.00 iSQL> SET TIMESCALE NANSEC; iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 681000.00 2.8.3 Describing Foreign Key Information This function displays information on foreign keys when the DESC command is used to view the table structure. iSQL> SET FOREIGNKEYS ON; -> The foreign key information will be output. iSQL> DESC bikes_ive_seen; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ---------------------------------------------------------------------------- NAME TYPE IS NULL ---------------------------------------------------------------------------- MID SMALLINT FIXED YEAR SMALLINT FIXED NOT NULL USED BIT(1) FIXED NOT NULL SOLD BIT(1) FIXED KMS INTEGER FIXED SAW_WHERE VARCHAR(20) FIXED 2.8 Setting Output Options 45 Examples of iSQL in Use ITEM_ID INTEGER FIXED NOT NULL COMMENT VARCHAR(100) FIXED PRICE INTEGER FIXED NOT NULL DATE_SEEN DATE FIXED [ INDEX ] ---------------------------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ---------------------------------------------------------------------------- __SYS_IDX_ID_143 BTREE UNIQUE ITEM_ID ASC [ PRIMARY KEY ] ---------------------------------------------------------------------------- ITEM_ID [ FOREIGN KEYS ] ---------------------------------------------------------------------------- * MODEL_ID * __SYS_IDX_ID_142 ( MID ) ---> SYS.CANDIDATE_MODELS ( MID ) iSQL> SET FOREIGNKEYS OFF; -> The foreign key information will not be output. iSQL> DESC bikes_ive_seen; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ---------------------------------------------------------------------------- NAME TYPE IS NULL ---------------------------------------------------------------------------- MID SMALLINT FIXED YEAR SMALLINT FIXED NOT NULL USED BIT(1) FIXED NOT NULL SOLD BIT(1) FIXED KMS INTEGER FIXED SAW_WHERE VARCHAR(20) FIXED ITEM_ID INTEGER FIXED NOT NULL COMMENT VARCHAR(100) FIXED PRICE INTEGER FIXED NOT NULL DATE_SEEN DATE FIXED [ INDEX ] ---------------------------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ---------------------------------------------------------------------------- __SYS_IDX_ID_143 BTREE UNIQUE ITEM_ID ASC [ PRIMARY KEY ] ---------------------------------------------------------------------------- ITEM_ID iSQL> 2.8.4 Outputting Script Execution Results Commands can be used to control the output of created results. When set to OFF, this function prevents the result of a script command executed in iSQL from being displayed on the screen. However, even if it is set OFF, the results of queries that are directly entered (e.g. iSQL> select * from t1;) will still be displayed on the screen; the OFF setting only prevents script execution results (e.g.: iSQL> @a.sql ) from being displayed. iSQL> SET TERM OFF; iSQL> SET TIMING ON; -> The execution time is not output to the screen. iSQL> @schema.sql -> The script execution results are not output. iSQL> select eno, e_firstname, e_lastname from employees; -> The results of directly input queries will be output. ENO E_FIRSTNAME E_LASTNAME 2.8 Setting Output Options iSQL User’s Manual 46 ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 0.00 iSQL> SET TERM ON; -> Script execution results will be output. iSQL> @schema.sql iSQL> ALTER SESSION SET AUTOCOMMIT = TRUE; -> Star t of results. Alter success. iSQL> DROP TABLE ORDERS; Drop success. elapsed time : 0.00 iSQL> DROP TABLE EMPLOYEES; Drop success. elapsed time : 0.00 . . . iSQL> CREATE INDEX ODR_IDX3 ON ORDERS (GNO ASC); Create success. elapsed time : 0.00 -> End of results. 2.8.5 Outputting an Execution Plan In iSQL, an execution plan can be output to fine -tune SQL statements. Using an execution plan, DML statements such as SELEC T, INSERT, UPDATE and DELETE can be checked. In order to accomplish this, the following command must be executed before a statement such as a SELEC T statement is executed. ALTER SESSION SET EXPLAIN PLAN = option This option can be set to ON, OFF or ONLY. The default is OFF. ON: After the SELEC T statement is executed, the execution plan information is displayed along with the resultant records. ONLY: The SELEC T statement is prepared but not executed, and only the execution plan infor- mation is output.This can be used to check the execution plan for a SELEC T statement that involves host variable binding, or to quickly check the execution plan for queries that take a long time to execute. OFF: After the SELEC T statement is executed, only the resultant records are displayed. The following command is used to obtain detailed information about how conditions included in WHERE clauses written by the user will be execute: ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 1 If this proper ty is set to 1, signifying “ON”, as in the above statement, the execution plan’s WHERE clause conditions, including FIXED KEY RANGE, VARIBALE KEY RANGE and FILTER, are classified and 2.8 Setting Output Options 47 Examples of iSQL in Use displayed in detail. Therefore, if the WHERE clause is complicated, you can check which predicates will be executed by scanning the sorted indexes. However, this information may not be output if queries are changed to optimize them in some way. The following example shows the output when the given SQL statement is executed: When TRCLOG_DETAIL_PREDICATE has been set to 1 (=on), and EXPLAIN PLAN = ON, the fol- lowing is output in addition to the results. iSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 1; Alter success. iSQL> ALTER SESSION SET EXPLAIN PLAN = ON; Alter success. iSQL> select eno, e_lastname, e_firstname from employees where eno = 1; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ 1 Moon Chan-seung 1 row selected. ------------------------------------------------------------ PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_164, ACCESS: 1, SELF_ID: 2 ) [ FIXED KEY ] AND OR ENO = 1 ------------------------------------------------------------ iSQL> When TRCLOG_DETAIL_PREDICATE is not set to 1, and EXPLAIN PLAN = ON, the following is output in addition to the results. iSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. iSQL> ALTER SESSION SET EXPLAIN PLAN = ON; Alter success. iSQL> select eno, e_lastname, e_firstname from employees where eno = 1; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ 1 Moon Chan-seung 1 row selected. ------------------------------------------------------------ PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_164, ACCESS: 1, SELF_ID: 2 ------------------------------------------------------------ iSQL> When TRCLOG_DETAIL_PREDICATE is not set to 1, and EXPLAIN PLAN = ONLY, only the follow- ing is output. iSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. iSQL> ALTER SESSION SET EXPLAIN PLAN = ONLY; Alter success. iSQL> select eno, e_lastname, e_firstname from employees where eno = 1; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ No rows selected. ------------------------------------------------------------ PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_164, ACCESS: 1, SELF_ID: 2 2.8 Setting Output Options iSQL User’s Manual 48 ------------------------------------------------------------ iSQL> If EXPLAIN PLAN = ONLY, because only an execution plan is created and the query is not executed, values that would be determined after actual execution are indicated using question marks (“??”), like an ACCESS clause. 2.8.6 Setting Result Output Orientation When quer ying data using a SELEC T statement in iSQL, the results can be displayed either horizon- tally or ver tically. This function is suitable for outputting results that comprise a small number of rows and many col- umns. If such a result set is output horizontally, as is usually the case, it is difficult to compare columns and check the values. However, it is easy to see when output ver tically. iSQL> SET VERTICAL ON; --> This sets the print direction ver tically. iSQL> SELECT * FROM employees WHERE eno = 2; ENO : 2 E_LASTNAME : Davenport E_FIRSTNAME : Susan EMP_JOB : designer EMP_TEL : 0113654540 DNO : SALARY : 1500 SEX : F BIRTH : 721219 JOIN_DATE : 18-NOV-2009 STATUS : H 1 row selected. 2.9 Viewing iSQL Display Settings 49 Examples of iSQL in Use 2.9 Viewing iSQL Display Settings The following is an example of viewing the values of the iSQL environment variables for the current session: iSQL> SHOW USER -> This is the current user. User : SYS iSQL> SHOW COLSIZE ColSize : 0 iSQL> SHOW LOBOFFSET LobOffset: 0 iSQL> SHOW LINESIZE LineSize : 80 iSQL> SHOW LOBSIZE LobSize : 80 iSQL> SHOW PAGESIZE PageSize : 0 iSQL> SHOW TIMESCALE TimeScale : Second iSQL> SHOW HEADING Heading : On iSQL> SHOW TIMING Timing : Off iSQL> SHOW VERTICAL Vertical : Off iSQL> SHOW FOREIGNKEYS ForeignKeys : Off iSQL> SHOW PLANCOMMIT PlanCommit : Off iSQL> SHOW QUERYLOGGING QueryLogging : Off iSQL> SHOW TERM Term : On iSQL> SHOW FEEDBACK Feedback : 1 iSQL> SHOW ALL User : SYS ColSize : 0 LobOffset : 0 LineSize : 80 LobSize : 80 PageSize : 0 TimeScale : Second Heading : On Timing : Off Vertical : Off ForeignKeys : Off PlanCommit : Off 2.9 Viewing iSQL Display Settings iSQL User’s Manual 50 QueryLogging : Off Term : On Feedback : 1 2.10 Host Variables 51 Examples of iSQL in Use 2.10 Host Variables Host variables are first declared and then used. Host variables are useful when executing procedures or functions. 2.10.1 Declaring a Host Variable 2.10.1.1 Syntax VAR[IABLE] var_name var_type 2.10.1.2 Type The following types can be used when declaring variables: INTEGER, BYTE(n), NIBBLE(n), NUMBER, NUMBER(n), NUMBER(n,m), NUMERIC, NUMERIC(n), NUMERIC(n,m), CHAR(n), VARCHAR(n), DATE DECIMAL, DECIMAL(n), DECIMAL(n,m), FLOAT, FLOAT(n), DOUBLE, REAL BIGINT, SMALLINT 2.10.1.3 Example The following examples demonstrate how to declare variables: iSQL> VAR p1 INTEGER iSQL> VAR p2 CHAR(10) iSQL> VAR v_double DOUBLE iSQL> VAR v_real REAL 2.10.2 Assigning a Value to a Host Variable 2.10.2.1 Syntax EXEC[UTE] :var_name := value 2.10.2.2 Example The following example shows how to assign a value to a variable: iSQL> EXECUTE :p1 := 100; Execute success. iSQL> EXEC :p2 := 'abc' Execute success. 2.10 Host Variables iSQL User’s Manual 52 2.10.3 Viewing Host Variables 2.10.3.1 Syntax PRINT VAR[IABLE] -> Shows all declared variables. PRINT var_name -> Shows the type and value of the variable var_name. 2.10.3.2 Example The following shows the values of all declared variable: iSQL> PRINT VAR [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- P1 INTEGER 100 P2 CHAR(10) abc V_REAL REAL V_DOUBLE DOUBLE iSQL> PRINT p2 -> Outputs only variable p2 information. NAME TYPE VALUE ------------------------------------------------------- P2 CHAR(10) abc 2.11 Executing Prepared SQL Statements 53 Examples of iSQL in Use 2.11 Executing Prepared SQL Statements 2.11.1 Prepared SQL versus Dynamic SQL Statements SQL statements executed in iSQL are usually executed according to the so- called “Direct Execution” method. In Direct Execution, syntax analysis, validity testing, optimization and execution of a quer y are all per formed at once. However, in Prepared Execution, only the syntax analysis, validity testing, and optimization of the quer y are per formed to set up an execution plan for the quer y, which is then executed when requested by the client. When creating an application that uses ODBC, the Prepared Execution method is typically used, and is more advantageous in terms of speed when an SQL state - ment is to be repeatedly executed using host variable binding. In iSQL, the difference between these two methods lies only in whether variables are used or not; there is no advantage in terms of speed. 2.11.2 Prepared SQL Statements 2.11.2.1 Syntax PREPARE SQL_statement 2.11.2.2 Example The following is an example of the use of the PREPARE command to execute an SQL statement: iSQL> VAR t1 INTEGER; iSQL> EXEC :t1 := 3; Execute success. iSQL> PREPARE SELECT eno, e_firstname, e_lastname, sex FROM employees WHERE eno=:t1; ENO : 3 E_FIRSTNAME : Ken E_LASTNAME : Kobain SEX : M 1 row selected. 2.12 Creating, Executing and Dropping Stored Procedures iSQL User’s Manual 54 2.12 Creating, Executing and Dropping Stored Proce - dures 2.12.1 Creating Procedures Suppor t is provided for the creation and execution of stored procedures. A stored procedure must end with the following: END; / 2.12.2 Executing Procedures Procedures are executed in order to execute multiple queries at one time. If the procedure to be exe - cuted has parameters, as many variables as there are parameters must be declared before the proce - dure is executed. 2.12.2.1 Example 1 In the following example, a procedure named emp_proc, which executes an INSERT statement using IN parameters, is created: iSQL> CREATE OR REPLACE PROCEDURE emp_proc(p1 IN INTEGER, p2 IN CHAR(20), p3 IN CHAR(20), p4 IN CHAR(1)) AS BEGIN INSERT INTO employees(eno, e_firstname, e_lastname, sex) VALUES(p1, p2, p3, p4); END; / Create success. iSQL> SELECT * FROM system_.sys_procedures_ order by created desc limit 1; USER_ID PROC_OID ------------------------------------ PROC_NAME OBJECT_TYPE STATUS ---------------------------------------------------------------------- PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID RETURN_SIZE ------------------------------------------------------------- RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN CREATED ------------------------------------------------------------------------- LAST_DDL_TIME ---------------- 2 3208680 EMP_PROC 0 0 4 2 192 29-FEB-2012 29-FEB-2012 1 row selected. emp_proc, which was created above, is executed: iSQL> VAR eno INTEGER iSQL> VAR first_name CHAR(20) iSQL> VAR last_name CHAR(20) iSQL> VAR sex CHAR(1) 2.12 Creating, Executing and Dropping Stored Procedures 55 Examples of iSQL in Use iSQL> EXECUTE :eno := 21; Execute success. iSQL> EXECUTE :first_name := 'Joel'; Execute success. iSQL> EXECUTE :last_name := 'Johnson'; Execute success. iSQL> EXECUTE :sex := 'M'; Execute success. iSQL> EXECUTE emp_proc(:eno, :firstname, :lastname, :sex); Execute success. iSQL> SELECT eno, e_firstname, e_lastname, sex FROM employees WHERE eno = 21; ENO E_FIRSTNAME E_LASTNAME SEX ----------------------------------------------------------------- 21 Joel Johnson M 1 row selected. 2.12.2.2 Example 2 In the following example, a procedure called outProc, which executes a SELEC T statement, is cre - ated: iSQL> CREATE TABLE outTbl(i1 INTEGER, i2 INTEGER); Create success. iSQL> INSERT INTO outTbl VALUES(1,1); 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> SELECT * FROM outTbl; I1 I2 --------------------------- 1 1 1 1 1 1 1 1 1 1 5 rows selected. iSQL> CREATE OR REPLACE PROCEDURE outProc(a1 OUT INTEGER, a2 IN OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO a1 FROM outTbl WHERE i2 = a2; END; / Create success. In the following example, outProc is executed: iSQL> VAR t3 INTEGER iSQL> VAR t4 INTEGER iSQL> EXEC :t4 := 1; Execute success. 2.12 Creating, Executing and Dropping Stored Procedures iSQL User’s Manual 56 iSQL> EXEC outProc (:t3, :t4); Execute success. iSQL> PRINT t3; NAME TYPE VALUE ------------------------------------------------------ T3 INTEGER 5 2.12.2.3 Example 3 In the following example, the procedure outProc1 is created: iSQL> CREATE OR REPLACE PROCEDURE outProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1; p3 := p1 + 100; END; / Create success. iSQL> VAR v1 INTEGER iSQL> VAR v2 INTEGER iSQL> VAR v3 INTEGER iSQL> EXEC :v1 := 3; Execute success. iSQL> EXEC outProc1(:v1, :v2, :v3); Execute success. iSQL> PRINT VAR; [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- . . V1 INTEGER 3 V2 INTEGER 3 V3 INTEGER 103 . . 2.12.2.4 Example 4 In the following example, a procedure called inoutProc1, which executes a SELEC T statement, is cre - ated: iSQL> CREATE TABLE inoutTbl(i1 INTEGER); Create success. iSQL> INSERT INTO inoutTbl VALUES(1); 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. 2.12 Creating, Executing and Dropping Stored Procedures 57 Examples of iSQL in Use iSQL> SELECT * FROM inoutTbl; I1 -------------- 1 1 1 3 rows selected. iSQL> CREATE OR REPLACE PROCEDURE inoutProc (a1 IN OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO a1 FROM inoutTbl WHERE i1 = a1; END; / Create success. iSQL> VAR t3 INTEGER iSQL> EXEC :t3 := 1; Execute success. iSQL> EXEC inoutProc(:t3); Execute success. iSQL> PRINT t3; NAME TYPE VALUE ------------------------------------------------------- T3 INTEGER 3 2.12.2.5 Example 5 In the following example, the procedure inoutProc1 is created: iSQL> CREATE OR REPLACE PROCEDURE inoutProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1 + p2; p3 := p1 + 100; END; / Create success. In the following example, the procedure inoutProc1 is executed: iSQL> VAR v1 INTEGER iSQL> VAR v2 INTEGER iSQL> VAR v3 INTEGER iSQL> EXEC :v1 := 3; Execute success. iSQL> EXEC :v2 := 5; Execute success. iSQL> EXEC inoutProc1(:v1, :v2, :v3); Execute success. iSQL> PRINT VAR; [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- . 2.12 Creating, Executing and Dropping Stored Procedures iSQL User’s Manual 58 . V1 INTEGER 3 V2 INTEGER 8 V3 INTEGER 103 . . 2.12.3 Dropping Procedures The DROP command is used to drop (delete) procedures. In the following example, the procedure emp_proc is deleted: iSQL> DROP PROCEDURE emp_proc; Drop success. 2.13 Creating, Executing and Dropping Functions 59 Examples of iSQL in Use 2.13 Creating, Executing and Dropping Func tions 2.13.1 Creating Func tions A function is provided to create functions. When creating a function, you must end with the follow- ing syntax, and the return type must be defined. END; / Successful creation of the function can be confirmed by checking the sys_procedures_ table. In the following example, the function emp_func, which executes an UPDATE statement and a SELEC T statement, is created: iSQL> CREATE OR REPLACE FUNCTION emp_func(f1 IN INTEGER) RETURN NUMBER AS f2 NUMBER; BEGIN UPDATE employees SET salary = 1000000 WHERE eno = f1; SELECT salary INTO f2 FROM employees WHERE eno = f1; RETURN f2; END; / Create success. iSQL> SELECT * FROM system_.sys_procedures_; USER_ID PROC_OID PROC_NAME ---------------------------------------------------------------------------- --- OBJECT_TYPE STATUS PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID -------------------------------------------------------------------------- RETURN_SIZE RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN ------------------------------------------------------------------------ CREATED LAST_DDL_TIME ------------------------------ . . . 2 3300024 INOUTPROC1 0 0 3 2 132 15-SEP-2010 15-SEP-2010 2 3302344 EMP_FUNC 1 0 1 6 30000 23 38 0 3 209 15-SEP-2010 15-SEP-2010 36 rows selected. 2.13.2 Executing Func tions Functions can be executed to simultaneously execute multiple queries. If the function to be exe - c u t e d h a s p a r a m e t e r s, a s m a ny v a r i a b l e s a s t h e re a re f u n c t i o n s m u s t b e d e c l a re d b e fo re t h e f u n c t i o n is executed. Additionally, a variable for saving the result of the function must also be defined. The following is an example of executing the function emp_func: 2.13 Creating, Executing and Dropping Functions iSQL User’s Manual 60 iSQL> VAR eno INTEGER iSQL> VAR ret NUMBER iSQL> EXEC :eno := 11; Execute success. iSQL> EXEC :ret := emp_func(:eno); Execute success. iSQL> SELECT eno, salary FROM employees WHERE eno = 11; ENO SALARY --------------------------- 11 1000000 1 row selected. 2.13.3 Dropping Func tions The DROP FUNC TION statement is used to drop functions. In the following example, the function emp_func is deleted: iSQL> DROP FUNCTION emp_func; Drop success. 2.14 Convenient User Functions 61 Examples of iSQL in Use 2.14 Convenient User Func tions 2.14.1 Histor y A list of all previously executed commands can be displayed using the HISTORY command. The num- ber corresponding to a previously executed command can be used to easily execute that command again. iSQL> HISTORY; ->View history list. or iSQL> H; 1 : SELECT * FROM tab; 2 : SELECT * FROM v$tab; iSQL> / -> Re - execute the most recent command(HISTORY;)) iSQL> 2/ -> Execute Command number 2 in histor y list(SELEC T * FROM book;) 2.14.2 Shell Commands The exclamation point (“!”) is a convenient function that allows direct execution of shell commands from within iSQL. iSQL> !ls -al total 3417 -rw-r----- 1 wlgml337 section 1198 Nov 1 13:30 .aliases -rw------- 1 wlgml337 section 5353 Oct 18 21:17 .bash_history -rw-r----- 1 wlgml337 section 1436 Nov 2 15:42 .bashrc -rw-r----- 1 wlgml337 section 1549 Dec 13 17:36 .profile drwxr-x--- 2 wlgml337 section 512 Nov 2 02:00 TEMP drwxr-xr-x 2 root root 512 Oct 16 11:29 TT_DB -rw------- 1 wlgml337 section 3446548 Dec 18 13:19 core drwxr-x--- 2 wlgml337 section 512 Nov 11 16:33 cron drwxr-x--- 2 wlgml337 section 512 Nov 15 10:52 test drwxr-xr-x 6 wlgml337 section 512 Nov 11 11:45 work 2.14.3 Getting Help Help is available for the commands provided with iSQL. The HELP command without parameters outputs information on how to use help. For help on specific commands, enter HELP followed by the name of the command for which help is desired. iSQL> HELP; Use 'help [command]' Enter 'help index' for a list of command iSQL> HELP INDEX; @ EDIT QUIT / EXIT ROLLBACK ALTER HEADING SAVE AUTOCOMMIT H[ISTORY] SELECT COMMIT INSERT SPOOL CREATE LINESIZE START DELETE LOAD TIMING DESC LOBOFFSET UPDATE 2.14 Convenient User Functions iSQL User’s Manual 62 DROP LOBSIZE VAR[IABLE] EXECUTE MOVE TERM EXPLAINPLAN PAGESIZE VERTICAL iSQL> HELP EXIT; exit; or quit; - exit iSQL 2.15 Using National Character Sets 63 Examples o
-
- [Altibase 6.1.1] iSQL User's Manual ㅣ 2012-12-10
- Altibase Tools iSQL User ’s Manual Release 6.1.1 February 4, 2013 Altibase Tools iSQL User ’s Manual Release 6.1.1 Copyright 2001~2012 Altibase Corporation. All rights reserved. This manual contains proprietary information of Altibase® Corpora
-
미리보기
Altibase Tools iSQL User ’s Manual Release 6.1.1 February 4, 2013 Altibase Tools iSQL User ’s Manual Release 6.1.1 Copyright 2001~2012 Altibase Corporation. All rights reserved. This manual contains proprietary information of Altibase® Corporation; it is provided under a license agreement containing restric- tions on use and disclosure and is also protected by copyright patent and other intellectual property law. Reverse engineering of the software is prohibited. All trademarks, registered or otherwise, are the property of their respective owners Altibase Corporation 10F, Daerung PostTower II, 182-13, Guro-dong Guro-gu Seoul, 152-847, South Korea Telephone: +82-2-2082-1000 Fax: 82-2-2082-1099 Homepage: http://www.altibase.com iii Contents Preface ............................................................................................................................................................................. i About This Manual .................................................................................................................................................................................... ii Intended Audience .................................................................................................................................................................... ii Software Environment ............................................................................................................................................................. ii Organization ................................................................................................................................................................................ ii Documentation Conventions ................................................................................................................................................ ii Related Documents ................................................................................................................................................................... v On-line Manuals.......................................................................................................................................................................... v Altibase Welcomes Your Comments................................................................................................................................... v 1. Using iSQL .................................................................................................................................................................. 1 1.1 iSQL Overview ..................................................................................................................................................................................... 2 1.1.1 iSQL Main Functionality ................................................................................................................................................ 2 1.2 Setting Up iSQL ................................................................................................................................................................................... 3 1.3 iSQL Command-Line Options ........................................................................................................................................................ 5 1.4 iSQL Commands ................................................................................................................................................................................. 8 1.5 iSQL Environment Variables ........................................................................................................................................................ 14 1.5.1 ALTIBASE_HOME........................................................................................................................................................... 14 1.5.2 ALTIBASE_PORT_NO.................................................................................................................................................... 14 1.5.3 ALTIBASE_NLS_USE ..................................................................................................................................................... 14 1.5.4 ALTIBASE_NLS_NCHAR_LITERAL_REPLACE........................................................................................................ 15 1.5.5 ISQL_CONNECTION ...................................................................................................................................................... 15 1.5.6 ISQL_BUFFER_SIZE ....................................................................................................................................................... 15 1.5.7 ALTIBASE_DATE_FORMAT ........................................................................................................................................ 15 1.5.8 ISQL_EDITOR ................................................................................................................................................................. 16 1.5.9 ALTIBASE_IPC_FILEPATH ........................................................................................................................................... 16 1.6 Personalizing iSQL .......................................................................................................................................................................... 17 1.6.1 glogin.sql ......................................................................................................................................................................... 17 1.6.2 login.sql ............................................................................................................................................................................ 17 1.6.3 Editing the LOGIN file.................................................................................................................................................. 17 2. Examples of iSQL in Use .......................................................................................................................................... 19 2.1 Logging In to iSQL .......................................................................................................................................................................... 20 2.1.1 Login Restrictions ......................................................................................................................................................... 20 2.2 Starting Up and Shutting Down ALTIBASE HDB .................................................................................................................. 21 2.2.1 Starting Up ALTIBASE HDB ........................................................................................................................................ 21 2.2.2 Shutting Down ALTIBASE HDB ................................................................................................................................ 21 2.3 Connecting and Disconnecting ................................................................................................................................................. 23 2.3.1 Connecting to a Database ......................................................................................................................................... 23 2.3.2 Disconnecting from a Database .............................................................................................................................. 26 2.4 Retrieving Information Related to the Database and Database Objects .................................................................... 27 2.4.1 Performance Views ...................................................................................................................................................... 27 2.4.2 Viewing the List of Tables .......................................................................................................................................... 27 2.4.3 Viewing a Table Structure ......................................................................................................................................... 28 2.4.4 Viewing Sequence Information ............................................................................................................................... 28 2.5 Controlling Transactions .............................................................................................................................................................. 30 2.5.1 Defining Transaction Modes .................................................................................................................................... 30 2.5.2 PLANCOMMIT ................................................................................................................................................................ 30 2.6 File Management ............................................................................................................................................................................ 31 2.6.1 Saving Results ................................................................................................................................................................ 31 2.6.2 Running Scripts ............................................................................................................................................................. 31 2.6.3 Saving SQL Statements .............................................................................................................................................. 32 2.6.4 Loading SQL Statements ........................................................................................................................................... 33 2.6.5 Saving DML Statements ............................................................................................................................................. 33 2.6.6 Editing Query Statements ......................................................................................................................................... 33 2.7 Formatting SELECT Query Results ............................................................................................................................................. 36 2.7.1 SET LINESIZE ................................................................................................................................................................... 36 iv 2.7.2 SET LOBSIZE .................................................................................................................................................................... 36 2.7.3 SET LOBOFFSET ............................................................................................................................................................. 37 2.7.4 SET FEEDBACK ............................................................................................................................................................... 37 2.7.5 SET PAGESIZE ................................................................................................................................................................. 38 2.7.6 SET HEADING.................................................................................................................................................................. 38 2.7.7 SET COLSIZE .................................................................................................................................................................... 39 2.8 Setting Output Options ................................................................................................................................................................ 40 2.8.1 Getting the Elapsed Time .......................................................................................................................................... 40 2.8.2 Setting Execution Time Units for Output ............................................................................................................. 40 2.8.3 Describing Foreign Key Information ..................................................................................................................... 41 2.8.4 Outputting Script Execution Results ..................................................................................................................... 42 2.8.5 Outputting an Execution Plan ................................................................................................................................. 43 2.8.6 Setting Result Output Orientation ......................................................................................................................... 45 2.9 Viewing iSQL Display Settings .................................................................................................................................................... 46 2.10 Host Variables ................................................................................................................................................................................ 48 2.10.1 Declaring a Host Variable ........................................................................................................................................ 48 2.10.2 Assigning a Value to a Host Variable ................................................................................................................... 48 2.10.3 Viewing Host Variables ............................................................................................................................................ 49 2.11 Executing Prepared SQL Statements ..................................................................................................................................... 50 2.11.1 Prepared SQL versus Dynamic SQL Statements ............................................................................................. 50 2.11.2 Prepared SQL Statements ....................................................................................................................................... 50 2.12 Creating, Executing and Dropping Stored Procedures................................................................................................... 51 2.12.1 Creating Procedures ................................................................................................................................................. 51 2.12.2 Executing Procedures ............................................................................................................................................... 51 2.12.3 Dropping Procedures ............................................................................................................................................... 54 2.13 Creating, Executing and Dropping Functions .................................................................................................................... 56 2.13.1 Creating Functions .................................................................................................................................................... 56 2.13.2 Executing Functions.................................................................................................................................................. 56 2.13.3 Dropping Functions .................................................................................................................................................. 57 2.14 Convenient User Functions ....................................................................................................................................................... 58 2.14.1 History ............................................................................................................................................................................ 58 2.14.2 Shell Commands ........................................................................................................................................................ 58 2.14.3 Getting Help ................................................................................................................................................................. 58 2.15 Using National Character Sets .................................................................................................................................................. 60 iPreface Preface About This Manual iSQL User’s Manual ii About This Manual This manual describes how to use iSQL to access a database. Intended Audience The following ALTIBASE® HDB™ users will find this manual useful: database administrators performance managers d atabase admin i stra t o rs application developers technical support workers I t is r e c o mmended that those reading this manual possess the following background knowledge: basic knowledge in the use of computers, operating systems, and operating system utilities experience in using relational databases and an understanding of database concepts computer programming experience experience in database ser ver, operating system or network administration Software Environment This manual has been prepared assuming that ALTIBASE HDB 6 is used as the database ser ver. Organization This manual is organized as follows: Chapter1: Using iSQL This chapter presents an over view of iSQL and explains the commands and how to use iSQL. Chapter2: Examples of iSQL in Use This chapter provides in- depth examples of each of the commands provided with iSQL. Documentation Conventions This section describes the conventions used in this manual. Understanding these conventions will make it easier to find information in this manual and other manuals in the series. There are two sets of conventions: About This Manual iii Preface syntax diagrams s ample c o de c o n v entions Syntax D iagrams This manual describes command syntax using diagrams composed of the following elements: Elements Meaning The star t of a command. If a syntactic element star ts with an arrow, it is not a complete command. The command continues to the next line. If a syntactic ele - ment ends with this symbol, it is not a complete command. The command continues from the previous line. If a syn- tactic element star ts with this symbol, it is not a complete command. The end of a statement. Indicates a mandator y element. Indicates an optional element. Indicates a mandator y element comprised of options. One, and only one, option must be specified. Indicates an optional element comprised of options. Reserved word ; SELECT NOT ADD DROP ASC DESC About This Manual iSQL User’s Manual iv Sample Code Conventions The code examples explain SQL, stored procedures, iSQL, and other command line statements. The following table describes the printing conventions used in the code examples. Indicates an optional element in which multiple elements may be specified. A comma must precede all but the first option. Elements Meaning , ASC DESC Rules Meaning Example [ ] Indicates an optional item. VARCHAR [(size)] [[FIXED |] VARIABLE] { } Indicates a mandator y field for which one or more items must be selected. { ENABLE | DISABLE | COMPILE } | A delimiter between optional or mandator y arguments. { ENABLE | DISABLE | COMPILE } [ ENABLE | DISABLE | COMPILE ] . . . Indicates that the previous argu- ment is repeated, or that sample code has been omitted. iSQL> select e_lastname from employees; E_LASTNAME ------------------------ Moon Davenport Kobain . . . 20 rows selected. O ther Symbols Symbols other than those shown above are par t of the actual code. EXEC :p1 := 1; acc NUMBER(11,2); Italics Statement elements in italics indi- cate variables and special values specified by the user. SELECT * FROM table_name; CONNECT userID/password; Lower Case Char- acters Indicate program elements set by the user, such as table names, col- umn names, file names, etc. SELECT e_lastname FROM employees; About This Manual vPreface Related Docum e n t s For more detailed information, please re fe r to th e fol low ing documents: ALTIBASE HDB Installation Guide ALTIBASE HDB Getting Star ted ALTIBASE HDB Administrators’ Manual ALTIBASE HDB Replication Manual ALTIBASE HDB Precompiler Users’ Manual ALTIBASE HDB ODBC Reference ALTIBASE HDB Application Program Inter face Users’ Manual ALTIBASE HDB iSQL Users’ Manual A L T IB ASE HDB U t ilities M a nua l ALTIBASE HDB Error Message Reference On-line Manuals Manuals are available at Altibase Customer Suppor t (http://suppor t.altibase.com/). Altibase Welcomes Your Comments Please let us know what you like or dislike about our manuals. To help us with future versions of our manuals, please tell us about any corrections or classifications that you would find useful. Include the following information : The name and version of the manual that you are using Any comments that you have about the manual Your name, address, and phone number When you need an immediate assistance regarding technical issues, please contact Altibase Cus- tomer Suppor t (http://suppor t.altibase.com/). Thank you. We appreciate your feedback and suggestions. Upper Case Char- acters Keywords and all elements pro- vided by the system appear in upper case. DESC SYSTEM_.SYS_INDICES_; Rules Meaning Example About This Manual iSQL User’s Manual vi 1Using iSQL 1 Using iSQL 1.1 iSQL Overview iSQL User’s Manual 2 1.1 iSQL Over view iSQL is a user tool for accessing an Altibase database and retrieving and modifying stored data using SQL statements and a number of additional commands. 1.1.1 iSQL Main Func tionality ALTIBASE HDB Star tup and Shutdown iSQL allows you to per form database management tasks, such as star ting up and shutting down the ser ver, and execute SQL statements using the same command prompt. Database Connection tion After ALTIBASE HDB starts up, you can use various user names to connect to and disconnect from the database. Database Object Information Inquiry iSQL allows you to use SQL statements to quer y all database object information, and suppor ts con- venient commands for inquiring about main objects. Database Management via SQL Statements Because iSQL can be used to execute any kind of SQL statement, you can control transactions and alter databases quickly and conveniently. Functions to Improve User Convenience The above tasks can be easily and conveniently accomplished using the file management and edit- ing functions, the ability to execute shell commands over iSQL, and the HISTORY function. 1.2 Setting Up iSQL 3Using iSQL 1.2 S e tting Up iSQL In order for iSQL to access a ser ver, the following information is necessar y. ALTIBASE_HOME A path to a ser ver or client installation server_name T h e na me ( o r IP a ddr ess) of a c o mput e r on wh ich AL TI BASE HDB Ser v e r is run n in g port_no T h e po r t number to be used wh en con n ec tin g via T C P or IP C user_id A User ID r e giste r ed in th e data ba se password The password corresponding to the User ID NLS_USE T h e cha r ac t e r se t w i th wh i c h t o display retrieved data to the user ALTIBASE_HOME can only be set using an environment variable, while the other settings may be made using command-line options. (For more information, please refer to 1.3 iSQL Command-Line Options.) The ALTIBASE_HOME environment variable must be set in order to use iSQL. In the case of Windows, this is set automatically when the ser ver is installed, but, in the case of the client, must be set manu- ally by the user. We strongly suggest that you verify that this setting has been properly made, as the application may not run properly if this setting is not made. por t_no and NLS_USE can be set using the environment variables or the ser ver settings file (alti- base.proper ties). If these settings are made via all three methods, they will take pr iorit y as follows, in descending order: 1. command-line options 2. environment variables (ALTIBASE_PORT_NO, ALTIBASE_NLS_USE) 3. ser ver settings file (altibase.proper ties) Therefore, when it is desired to connect using options other than those that have been previously set, the command-line options can be used, so that it is not necessar y to change the settings in the ser ver setting file or the environment variables. If any options have not been set, when iSQL is executed for the first time, the user will be prompted to enter the corresponding variables. At this time, it is essential to enter values that are valid and fol- low the proper format, other wise iSQL may not run properly. However, if the NLS_USE option in par ticular has not been set, no command prompt will appear at the time of execution. Instead, US7ASCII will be used, and a connection attempt will be made. In this case, if the character set of the database is not US7ASCII, the application will not execute properly, or some of the user ’s data may become corrupted. Thus it is paramount that NLS_USE be set to a suit- able value for the usage environment. In order to ensure stable iSQL operation, we recommend that the following environment variables 1.2 Setting Up iSQL iSQL User’s Manual 4 be set: ALTIBASE_HOME : the path to a ser ver or client installation ALTIBASE_PORT_NO : the por t number to use to connect to the ser ver ALTIBASE_NLS_USE : the character set to use to display retrieved data to the user PATH : the path containing the executable file, which must equal $ALTIBASE_HOME/bin 1.3 iSQL Command-Line Options 5Using iSQL 1.3 iSQL C o mmand-Line Options The ALTIBASE HDB ser ver must be star ted before iSQL is executed. The following options are case - insensitive. isql [-H] [-S server_name] [-U user_id] [-P password] [-PORT port_no] [-UNIXDOMAIN-FILEPATH filepath] [-IPC-FILEPATH filepath] [-SILENT] [-F infile_name] [-O outfile_name] [-NLS_USE] [-NLS_NCHAR_LITERAL_REPLACE 0|1] [-prefer_ipv6] -S ser v er_name Specifies the name (or IP address) of a computer on which ALTIBASE HDB Ser ver is running. When connecting in IPC, if this option is specified, it is ignored and no error is raised regardless of the operating system. It can be a host name, an IPv4 address, or an IPv6 address. An IPv6 address must be enclosed by a left square bracket([) and a right square bracket(]). For example, in the case of localhost (meaning this computer), localhost can be specified as the host name, 127.0.0.1 as the IPv4 address, or [::1] as the IPv6 address. For more information about the IPv6 address notation, please refer to the ALTIBASE HDB Administrator's Manual. -U us er_id Specifies a user ID registered in the database. -P passwor d Specifies the password corresponding to the user ID. -PORT p o r t _no Specifies the por t number for connecting via TCP/IP or IPC. However, when connecting in a Unix environment via IPC, this option can be omitted. If it is specified, it is ignored and no error is raised. To connect via TCP, first set 'ISQL_CONNEC TION=TCP' on the client and then enter the PORT_NO. To connect via IPC in a Windows environment, set the environment variable 'ISQL_CONNEC TION=IPC' and specify the port number using one of the following: the -PORT option the ALTIBASE_IPC_PORT_NO environment variable the IPC_PORT_NO property in altibase.properties If the environment variable ISQL_CONNEC TION is not set to IPC and the -PORT option is omit- ted, the por t number will be checked for first in the environment variable ALTIBASE_PORT_NO and then in the PORT_NO proper ty in altibase.proper ties, and if it is not set in either of those places, a prompt to enter it will be raised. -UNIXDOMAIN-FILEPATH filepath 1.3 iSQL Command-Line Options iSQL User’s Manual 6 When a ser ver and client connect using a Unix domain socket in a Unix environment (ISQL_CONNEC TION=UNIX), the connection will fail if the ser ver and client have different val- ues for ALTIBASE_HOME and also have different Unix domain socket paths. In this case, if the ser ver and client use corresponding files (e.g. ALTIBASE_HOME/trc/cm-unix), Unix domain communication is possible. -IPC-FILEPATH filepath When the client and the ser ver are to connect via IPC (ISQL_CONNEC TION=IPC ) in a Unix envi- ronment, if ALTIBASE_HOME is set differently on them, they will not be able to connect if they have different socket paths. In this case, Unix domain communication can be achived using the ALTIBASE_HOME/trc/cm-ipc file, and then information about shared memory can be retrieved. However, this option can be omitted if ALTIBASE_IPC_FILEPATH is set. -F infi le_nam e Specifies a script file to be executed immediately after iSQL is launched. -O outfile_name Specifies a file in which to store the results of the excuted iSQL commands. This file will be cre - ated in the current director y. If the file already exists, it will be over written. -H Output s help inf o r m a t ion for iSQL execution. -SILENT T h is optio n tur n s o n sil e nt mo de . I f sil e nt mo de is on , non cr itica l me ssage s , such as th e c o p y - right notice, etc. will not be displayed. -NLS_USE Specifies the cha r a c ter set with which to display data to the user. The following character sets may be specified: US7ASCII K O16 K SC 56 01 MS949 BIG5 G B 231 28 0 UTF8 SHIFTJIS EUCJP I f omit t e d , the en vir onmen t v a riable AL TIB A SE_NLS_USE or altibase.proper ties will be used, in descending order of preference, and if it is still not specified, the basic character set (US7ASCII) will be used. -NLS_NCHAR_LITERAL_REPLACE 0: conver t all strings to the database character set without checking for the "N" character 1: do not conver t strings that are preceded by the "N" character to the database charac- ter set 1.3 iSQL Command-Line Options 7Using iSQL - pr ef er _ip v 6 This option determines the IP address to be connected first when a host name is given for the - s option. If this option is specified and a host name is given for the -s option, this means that resolving the host name to the IPv6 address is prefered. If this option is omitted, isql connects to the IPv4 address by default. If it fails to connect to the prefered IP version address, an attempt is made to connect using the other IP version address. For example, when localhost is given for the -s option and this option is specified, isql first tries to connect to the [::1] IPv6 address. If this attempt fails, isql proceeds to connect to the 127.0.0.1 IPv4 address. If any of the -S, -U, or -P options are missing from the above command, the user will be prompted to input the option values. 1.4 iSQL Commands iSQL User’s Manual 8 1.4 iSQL Commands When iSQL is star ted, an iSQL command prompt will appear, and when iSQL commands are entered, the results of execution will be displayed. The iSQL commands are described individually in the fol- lowing table. Categor y Type Commands Description iSQL star tup and shut- down Star tup $ isql [option] If you execute this command in a shell, iSQL will star t up. For information on the available options, please refer to the 1.3 iSQL Command-Line Options section. Prompt iSQL> Type a command at the iSQL prompt and press the ENTER key. Shutdown EXIT; QUIT; Used to shut down iSQL. ALTIBASE HDB startup and shutdown ALTIBASE HDB Star tup STARTUP Use the PRE-PROCESS, PROCESS, CON- TROL, META, or SER VICE option to star t ALTIBASE HDB up to the corresponding stage. ALTIBASE HDB Shutdown SHUTDOWN Use one of the NORMAL, IMMEDIATE, or ABORT options to shut down ALTIBASE HDB. Database con- nection and disconnection Access the ser ver as another user CO N N E C T [logon] [nls] [AS sysdba]; where logon has the syn- tax: user1[/pass1] where nls has the syntax: NLS=character_set This command allows access to the database as user1 with password pass1 after having already accessed the data- base as another user in iSQL. If CON- NEC T is successful, the information related to the previous session is cleared.The AS clause allows the SYS user to access the ser ver in sysdba man- ager mode. Only one user is allowed to connect as sysdba at a time. The nls option specifies the character set. For detailed information on charac- ter sets, please refer to the 1.3 iSQL Command-Line Options: -NLS_USE option. Terminate a connection DISCONNEC T ; Ends the current session and terminates the connection with the ser ver. 1.4 iSQL Commands 9Using iSQL Database object infor- mation inquir y Display per- formance view list SELEC T * FROM V$TAB; Displays the list of all of the per for- mance views provided by the sys- tem.This command is available only in iSQL. Display table list SELEC T * FROM TAB ; Displays the list of currently created tables.This command is only available in iSQL. Display table structure DESC samp ; Lists the column definitions for the table samp Display sequence Information SELEC T * FROM V$SEQ; If you accessed the ser ver with the SYS account, information on all sequences is displayed.If you accessed the ser ver as another user, only the information on the sequences generated by that user will be displayed. This command is avail- able only in iSQL. Tr a n s a c t i o n control Setting trans- action mode AUTOCOMMIT ON; AUTOCOMMIT OFF; Determines whether to commit com- mands automatically at the time that they are executed. Default: ON Other SET functions SET PLANCOMMIT ON; SET PLANCOMMIT OFF; Determines whether to automatically commit commands such as DESC, SELEC T * FROM TAB, or SELEC T * FROM seq_name when EXPLAIN PLAN is ON (or ONLY ) and AUTOCOMMIT is OFF. Default: OFF Categor y Type Commands Description 1.4 iSQL Commands iSQL User’s Manual 10 Fi l e m a n a g e - ment Output data to a file SPOOL file_name ; Star ts writing the results shown on the screen to the file file_name. SPOOL OFF; Stops writing the results shown on the screen to the file file_name. SQL script execution START file_name ; Reads a script file and executes the SQL statements in sequence. @ file_name; Per forms a function similar to that of startup when executed via an iSQL prompt. @@ file_name; When used in a script, this command executes the file file_name in the same director y as the calling script. Save SQL statement to file SAVE abc.sql; Saves the last of the commands cur- rently in the iSQL buffer to a file. Lo ad S QL statement LOAD abc.sql; Loads the first of the commands saved in a file at the end of the command buf- fer. Save DML statements to file SET QUERYLOGGING ON; SET QUERYLOGGING OFF; This writes executed DML statements, such as INSERT, UPDATE, DELETE and MOVE, in $ALTIBASE_HOME/trc/ isql_query.log. Edit quer y statements ED For creating and editing temporar y files. ED file_name[.sql] For editing existing files or creating new files. 2ED or 2 ED Edits quer y command number 2 in the histor y list. Categor y Type Commands Description 1.4 iSQL Commands 11 Using iSQL Control out- put option Fo r m a t SELEC T result column SET LINESIZE 100; Sets the length of a display line for out- putting the result of a SELEC T quer y. Must be between 10 and 32767 inclu- sive. Default: 80 Fo r m a t SELEC T result column of type CLOB SE T LOBSIZE 10; Sets the number of characters to display when a CLOB column is output. Default : 80 SET LOBOFFSET 3; Sets the number of characters by which to offset the display when a CLOB col- umn is output. Default : 0 Output SELEC T result count SET FEED[BACK ] ON; SET FEED[BACK ] OFF; SET FEED[BACK ] n; Determines whether to output the number of rows in a quer y result. Fo r m a t r o w s of SELEC T result SET PAGESIZE 10; Sets how many records of a SELEC T quer y result are output at one time. When set to 0, all resultant records are output. Default: 0 Show/hide SELEC T result header SET HEADING ON; SET HEADING OFF; Sets whether to output the header of a SELEC T result Default: ON Set SELEC T result output size. SE T COLSIZE N ; Sets the number of characters to output when CHAR or VARCHAR type columns are output as a SELEC T quer y result. Show SQL statement execution time SET TIMING ON; SET TIMING OFF; Sets whether to output the amount of time taken to execute a SQL command. Default: OFF Set the SQL statement execution time units for output SET TIMESCALE SEC; SET TIMESCALE MILSEC; SET TIMESCALE MICSEC; SET TIMESCALE NANSEC; Sets the unit of time for executing SQL statements as seconds, milliseconds, microseconds or nanoseconds. Show/hide foreign key information SET FOREIGNKEYS ON; SET FOREIGNKEYS OFF; Determines whether to include foreign key information in the output when dis- playing the table structure (using DESC). Default: OFF Show/hide script execu- tion result SET TERM ON; SET TERM OFF; Determines whether to display the results of execution of a script file on the screen. Default: ON Categor y Type Commands Description 1.4 iSQL Commands iSQL User’s Manual 12 Control out- put option Output execu- tionplan tree ALTER SESSION SET EXPLAIN PLAN = ON; ALTER SESSION SET EXPLAIN PLAN = ONLY; ALTER SESSION SET EXPLAIN PLAN = OFF; Determines whether to output an exe - cution plan for a SELEC T statement. Default: OFF SELEC T result output direc- tion SET VERTICAL ON; SET VERTICAL OFF; Displays SELEC T results ver tically when set to ON. Default: OFF Show value of iSQL display settings SHOW LINESIZE Displays the current LINESIZE value. SHOW COLSIZE Displays the current COLSIZE value. SHOW LOBOFFSET Displays the current LOBOFFSET value. SHOW LOBSIZE Displays the current LOBSIZE value. SHOW PAGESIZE Displays the current PAGESIZE value. SHOW PLANCOMMIT Shows whether PLANCOMMIT is ON or OFF. SHOW QUERYLOGGING Shows whether DML statements wil be written to ALTIBASE_HOME/trc/ isql_quer y.log when executed. SHOW FEEDBACK Shows the current FEEDBACK value. SHOW HEADING Shows the current HEADING setting. SHOW TERM Shows the current TERM setting. SHOW TIMING Shows the current TIMING setting. SHOW TIMESCALE This shows the current time units for the execution of SQL statements. SHOW USER Shows the current user. SHOW FOREIGNKEYS Shows the current foreign key display setting. SHOW VERTICAL Shows whether the results of a SELEC T quer y will be output ver tically. SHOW ALL Shows the set values of the display set- tings for the current session. Categor y Type Commands Description 1.4 iSQL Commands 13 Using iSQL Variable and Prepared SQL statements Va r i a b l e d e c - laration VA R p1 INTEGER; Declares the variable p1 as integer type. VA R I A B L E p2 CHAR(10); Declares the variable p2 as CHAR type. Assign values to variables EXECUTE :p1 := 100 ; Assigns the value 100 to variable p1. EXEC :p2 := ‘abc’ ; Assigns the text ‘a b c ’ to variable p2. Va r i a b l e d i s - play PRINT VAR[IABLE] ; Shows the currently declared variables. PRINT p1; Shows the type and value of variable p1. Prepared SQL statement execution PREPARE SQL statement ; Separates the processes of quer y opti- mization and execution, and executes the quer y as a prepared SQL statement. In iSQL, the default execution method for executing SQL statements is the Direct Execution method, in which opti- mization and execution are per formed at once.There is no difference between the two execution methods in iSQL in terms of the results obtained, however, prepared SQL statements can be used to bind variables to values and execute SQL statements based thereon. Functions for user conve - nience Histor ylist dis- play HISTORY; H; Shows a list of the commands currently saved in the iSQL buffer. Repeat execu- tion / Repeats execution of the command cur- rently in the iSQL buffer. The most recently executed command will be executed again. 2/ Executes the second command in a list output using the HISTORY command. Shell com- mand execu- tion ! shell command A shell command that follows an excla- mation point will be immediately exe - cuted from within iSQL. Comment /* comment */ -- comment Indicate a multiple -line comment and a single -line comment, respectively. Help HELP; HELP INDEX; HELP EXIT; Provides information on how to use help, outputs a list of commands, and describes (e.g.) the EXIT command, respec tively. Categor y Type Commands Description 1.5 iSQL Environment Variables iSQL User’s Manual 14 1.5 iSQL Environment Variables 1.5.1 ALTIBASE_HOME Sets the director y in which the package is installed. In the case of MS Windows, this is set automatically when the ser ver is installed, however, when the client is installed, this is not automatically set due to the danger of a conflict with the environment variables for the ser ver. When installing the client, the user must manually set this director y. This environmental variable must be set in order to use ISQL. Ex) Windows (Server): ‘set ALTIBASE_HOME=C:/Program Files/Altibase/ Altibase5_Server/altibase_home’, Windows (Client): ‘set ALTIBASE_HOME=C:/Program Files/Altibase/ Altibase5_Client/altibase_home_client’) 1.5.2 ALTIBASE_PORT_NO This is the por t number of the ser ver to connect to. This can be specified either by using the -PORT option or in altibase.proper ties. If no designated por t number can be found (in descending order of precedence) in the -PORT option, in the environment variable ALTIBASE_PORT_NO, or in altibase.proper ties, a prompt to enter the por t number will appear. 1.5.3 ALTIBASE_NLS_USE This is the character set used to display retrieved results to the user. US7ASCII K O16 K SC 56 01 MS949 BIG5 G B 231 28 0 UTF8 SHIFTJIS EUCJP T h is ca n b e set ei th er using the -NLS_USE option or in altibase.proper ties. If NLS_USE is not specified using the -NLS_USE option, the environment variable ALTIBASE_NLS_USE, or altibase.proper ties (in descending order of precedence), US7ASCII is used as 1.5 iSQL Environment Variables 15 Using iSQL the default character set. 1.5.4 ALTIBASE_NLS_NCHAR_LITERAL_REPLACE By default, iSQL conver ts an entire quer y string to the database character set before sending the data to the database. This behavior can be prevented for a given string literal by setting this prop - er ty to 1 and placing the "N" character in front of the string literal. A proper ty setting of 1 instructs iSQL to search for the "N" character in front of ever y string literal. If the "N" character is found, iSQL sends the string to the database without conver ting it to the data- base character set. This is useful when it is desired to use NCHAR type data that are encoded differ- ently from the database character set. 0: conver t all strings to the database character set without checking for the "N" character 1: do not conver t strings that are preceded by the "N" character to the database character set Note: Setting this variable to 1 can be expensive in terms of usage of client resources. 1.5.5 ISQL_CONNECTION When ALTIBASE HDB is used in a client-server arrangement, the user can set environment variables to select the client-ser ver protocol that is suitable for the operating environment. ALTIBASE HDB suppor ts the TCP/IP, IPC and Unix domain socket protocols. The default protocol for communication with ALTIBASE HDB ser vers is TCP/IP. Note that when using the IPC protocol the value of ALTIBASE HDB proper ties related to the IPC channel (IPC_CHANNEL_COUNT ) must be considered. The following example shows how to set the environment variable when using the IPC protocol: CSH: setenv ISQL_CONNECTION IPC SH: ISQL_CONNECTION=IPC; export ISQL_CONNECTION 1.5.6 ISQL_BUFFER_SIZE The size of the buffer in which to store queries can be set using this environment variable. Ex) CSH: setenv ISQL_BUFFER_SIZE 128000 SH: ISQL_BUFFER_SIZE = 128000; export ISQL_BUFFER_SIZE 1.5.7 ALTIBASE_DATE_FORMAT When retrieving Date type data using a SELEC T statement, the environment variable A LT I B A S E _ D AT E _ F O R M AT c a n b e u s e d t o c h a n g e the default date format, which is YYYY/MM/DD HH:MI:SS, to some other date format. Ex) For Born, Korn, or Bash Shell export ALTIBASE_DATE_FORMAT=’DD-MON-YYYY’ 1.5 iSQL Environment Variables iSQL User’s Manual 16 1.5.8 ISQL_EDITOR This environment variable can be used to change the default editor ( Windows: notpad, the others: / bin/vi ). Ex) CSH: setenv ISQL_EDITOR /usr/bin/ed SH: ISQL_EDITOR=/usr/bin/ed; export ISQL_EDITOR 1.5.9 ALTIBASE_IPC_FILEPATH In a Unix environment, if a client and the ser ver have different values for ALTIBASE_HOME, they will not be able to connect via IPC if they have different Unix domain socket paths. In this case, in order to be able to connect via IPC, it will be necessar y to set the ALTIBASE_IPC_FILEPATH environment variable or the -IPC-FILEPATH iSQL option to the $ALTIBASE_HOME/trc/cm-ipc file used by the ser ver. 1.6 Personalizing iSQL 17 Using iSQL 1.6 Personalizing iSQL iSQL users can customize their iSQL environment and use the same settings for each session. For example, using the OS file, the user can specify a desired output format so that each quer y result dis- plays the current time whenever quer y results are output. These files can be categorized into the fol- lowing two types. 1.6.1 glogin.sql For initialization tasks that must be conducted when iSQL is star ted, iSQL supports the creation of a global script file, glogin.sql, by the DB administrator. iSQL executes this script whenever any user e xe c u t e s i S Q L o r a t t e m p t s t o c o n n e c t t o A LT I B A S E H D B fo r t h e f i r s t t i m e . T h e g l o b a l f i l e a l l o w s t h e D B administrator to make site -specific iSQL environment settings for all users. The global script file is located in $ALTIBASE_HOME/conf. 1.6.2 login.sql iSQL also suppor ts the login.sql file, which is executed after glogin.sql. If both the glogin.sql file and the login.sql file exist, login.sql is executed after glogin.sql during iSQL star tup, so the commands in login.sql will take precedence. If several people share one Unix account, it will be impossible for them to personalize the glogin.sql file. In this case, individual users may add SQL commands, stored procedures, or iSQL commands to their respective login.sql files in their personal work directories. When a user starts up iSQL, iSQL automatically searches the current director y for the login.sql file and executes the commands in it. The login.sql file cannot modify initial iSQL settings or individual session actions. 1.6.3 Editing the LOGIN file The user may change the LOGIN file, like any other script. The following is an example of user1 creat- ing a LOGIN file that turns off autocommit mode and executes SQL statements: $ vi glogin.sql AUTOCOMMIT ON SET HEADING OFF SELECT sysdate FROM dual; $ vi login.sql AUTOCOMMIT OFF SET HEADING ON DROP TABLE savept; CREATE TABLE savept(num INTEGER); INSERT INTO savept VALUES(1); SAVEPOINT sp1; INSERT INTO savept VALUES(2); SELECT * FROM savept; ROLLBACK TO SAVEPOINT sp1; SELECT * FROM savept; COMMIT; $ isql ----------------------------------------------- Altibase Client Query utility. 1.6 Personalizing iSQL iSQL User’s Manual 18 Release Version 6.1.1.1 Copyright 2000, Altibase Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------- Write Server Name (default: 127.0.0.1) : Write UserID : user1 Write Password : ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 Set autocommit on success. -> Executing glogin.sql first 28-DEC-2004 -> heading off 1 row selected. Set autocommit off success. -> Execute login.sql in the current work director y of the user after glogin.sql is executed. Drop success. Create success. 1 row inserted. Savepoint success. -> It is executable only when Autocommit mode is off 1 row inserted. NUM -> heading on -------------- 1 2 2 rows selected. Rollback success. NUM -------------- 1 1 row selected. Commit success. 19 Examples of iSQL in Use 2 Examples of iSQL in Use This chapter describes several examples of the use of iSQL to manipulate databases. 2.1 Logging In to iSQL iSQL User’s Manual 20 2.1 Logging In to iSQL To use iSQL, users must first be logged in. Connection information may be input directly via a com- mand line, or via the iSQL input prompt. isql -U userID -P password [-SYSDBA] or isql [-SYSDBA] Additional information necessar y for connection with the ser ver is the ser ver name (-S), user ID (-U), and password (-P). The user ID and password are not case -sensitive. In order for the SYS user to use iSQL as an administrator, the SYSDBA option is used. The SYSDBA option can be used for remote access. 2.1.1 Login Restric tions Only one user is permitted to connect in SYSDBA mode at one time. Two or more users cannot connect in SYSDBA mode at the same time. You can access the database remotely in SYSDBA mode, but can' t star t up the database. For detailed information on system privileges, please refer to the ALTIBASE HDB SQL Reference. For detailed information on errors that may arise during iSQL execution, please refer to the ALTIBASE HDB Error Message Reference. $ isql -S 127.0.0.1 -U sys -P manager [-SYSDBA] or $ isql [-sysdba] ----------------------------------------------- Altibase Client Query utility. Release Version 6.1.1.1 Copyright 2000, Altibase Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------- Write Server Name (default: 127.0.0.1) : Write UserID : sys Write Password : manager -> The password on the screen is not displayed. ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL(sysdba)> -> iSQL is connected to the ser ver, and SQL, iSQL, and PSM commands can be input and executed here. 2.2 Starting Up and Shutting Down ALTIBASE HDB 21 Examples of iSQL in Use 2.2 Star ting Up and Shutting Down ALTIBASE HDB iSQL can be used to star t up and shut down ALTIBASE HDB. 2.2.1 Star ting Up ALTIBASE HDB To star t up ALTIBASE HDB, iSQL must first be launched with the -sysdba option, in the same way as when a database is created. Note: ALTIBASE HDB star tup commands can be executed only with the UNIX account with which ALTI- BASE HDB (including iSQL) was installed. The following is an example of the use of iSQL to star t up ALTIBASE HDB. For more information on star ting up ALTIBASE HDB, please refer to the ALTIBASE HDB Administrators’ Manual Chapter 4: Star tup and Shutdown. $ isql -s 127.0.0.1 -u sys -p manager -sysdba ------------------------------------------------ Altibase Client Query utility. Release Version 6.1.1.1 Copyright 2000, Altibase Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------ ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1, PORT_NO = 20300 [ERR-910FB : Connected to idle instance] iSQL(sysdba)> startup service Connecting to the DB server... Connected. TRANSITION TO PHASE : PROCESS TRANSITION TO PHASE : CONTROL TRANSITION TO PHASE : META [SM] Recovery Phase - 1 : Preparing Database : Dynamic Memory Version => Parallel Loading [SM] Recovery Phase - 2 : Loading Database [SM] Recovery Phase - 3 : Skipping Recovery Threads... Refining Disk Table [SM] Refine Memory Table : ............................................................................ ........................ [SUCCESS] [SM] Rebuilding Indices [Total Count:101] ............................................................................ ......................... [SUCCESS] TRANSITION TO PHASE : SERVICE [CM] Listener started : TCP on port 20300 [CM] Listener started : UNIX [RP] Initialization : [PASS] --- STARTUP Process SUCCESS --- Command execute success. 2.2.2 Shutting Down ALTIBASE HDB Use the SHUTDOWN command to shut down a running ALTIBASE HDB ser ver. 2.2 Starting Up and Shutting Down ALTIBASE HDB iSQL User’s Manual 22 Th e foll ow i ng i s a n ex a m p l e of t h e u s e of i S Q L t o s hu t d own A LT IB A S E HD B. For m ore i nfor m a t i on on shutting down ALTIBASE HDB, please refer to the ALTIBASE HDB Administrators’ Manual Chapter 4: Star tup and Shutdown. iSQL(sysdba)> shutdown normal Ok..Shutdown Proceeding.... TRANSITION TO PHASE : Shutdown Altibase [RP] Finalization : PASS shutdown normal success. 2.3 Connecting and Disconnecting 23 Examples of iSQL in Use 2.3 Connec ting and Disconnec ting 2.3.1 Connec ting to a Database The CONNEC T command is used to connect to ALTIBASE HDB with a specified user ID. If the first con- nection attempt fails, the CONNECT command does not prompt again for the user ID or password. CONNECT [logon] [nls] [AS SYSDBA]; where longon has the syntax: userID[/password] and nls has the syntax: NLS=character_set 2.3.1.1 userID/password The user ID and password with which to establish a connection to ALTIBASE HDB. 2.3.1.2 NLS=character_set The NLS option specifies the character set. iSQL> CONNECT sys/manager NLS=US7ASCII Connect success. 2.3.1.3 AS SYSDBA The AS clause permits the SYS user to access the ser ver in sysdba manager mode. If CONNEC T is successful, the current session is terminated, and a connection is established to the ser ver using the specified user ID and password and the information in altibase.proper ties. Accord- ingly, the session information is cleared before connec ting. For instance, if AUTOCOMMIT mode is set to TRUE in altibase.proper ties and AUTOCOMMIT mode is changed to FALSE in iSQL, when the CONNEC T statement is executed, AUTOCOMMIT mode will be changed to TRUE, because of the value in altibase.proper ties. If CONNEC T fails, the previous session is terminated and the connection with the ser ver is closed. In other words, the result of all SQL statements executed thereafter will be a “Not connected” message. Execute “CONNEC T userID/password [AS SYSDBA]” to attempt to re - establish a connection with the ser ver. $ isql ----------------------------------------------- Altibase Client Query utility. Release Version 6.1.1.1 Copyright 2000, Altibase Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------- Write Server Name (default:127.0.0.1) : 2.3 Connecting and Disconnecting iSQL User’s Manual 24 Write UserID : SYS Write Password : ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL> SHOW USER; User : SYS iSQL> CREATE USER altiadmin IDENTIFIED BY alti1234; Create success. iSQL> CONNECT altiadmin/alti1234; Connect success. iSQL> SHOW USER; User : ALTIADMIN iSQL> CREATE TABLE altitbl(i1 INTEGER, i2 CHAR(5)); Create success. iSQL> SELECT * FROM tab; TABLE NAME TYPE --------------------------------------------- ALTITBL TABLE CLEAR_DP SYNONYM DUAL SYNONYM EXPORT_PARTITION_TO_FILE SYNONYM EXPORT_TO_FILE SYNONYM EXPORT_USER_TABLES SYNONYM FCLOSE SYNONYM FCLOSE_ALL SYNONYM FCOPY SYNONYM FFLUSH SYNONYM FOPEN SYNONYM FREMOVE SYNONYM FRENAME SYNONYM GET_LINE SYNONYM IMPORT_FROM_FILE SYNONYM IS_OPEN SYNONYM NEW_LINE SYNONYM PRINT SYNONYM PRINTLN SYNONYM PUT SYNONYM PUT_LINE SYNONYM RAISE_APPLICATION_ERROR SYNONYM REGISTER SYNONYM REMOVE SYNONYM REMOVEALL SYNONYM REMOVE_DP SYNONYM REMOVE_XID SYNONYM RESUME_DP SYNONYM SET_DEFAULTS SYNONYM SIGNAL SYNONYM SLEEP SYNONYM WAITANY SYNONYM WAITONE SYNONYM 33 rows selected. iSQL> CONNECT sys/manager; Connect success. iSQL> SHOW USER; User : SYS iSQL> CREATE TABLE systbl(i1 INTEGER, i2 CHAR(5)); Create success. 2.3 Connecting and Disconnecting 25 Examples of iSQL in Use iSQL> SELECT * FROM tab; USER NAME TABLE NAME TYPE -------------------------------------------------- SYSTEM_ STO_COLUMNS_ SYSTEM TABLE SYSTEM_ STO_DATUMS_ SYSTEM TABLE SYSTEM_ STO_ELLIPSOIDS_ SYSTEM TABLE SYSTEM_ STO_GEOCCS_ SYSTEM TABLE SYSTEM_ STO_GEOGCS_ SYSTEM TABLE SYSTEM_ STO_PRIMEMS_ SYSTEM TABLE SYSTEM_ STO_PROJCS_ SYSTEM TABLE SYSTEM_ STO_PROJECTIONS_ SYSTEM TABLE SYSTEM_ STO_SRS_ SYSTEM TABLE SYSTEM_ STO_USER_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_COMMENTS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINTS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINT_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_DATABASE_ SYSTEM TABLE SYSTEM_ SYS_DATABASE_LINKS_ SYSTEM TABLE SYSTEM_ SYS_DATA_PORTS_ SYSTEM TABLE SYSTEM_ SYS_DIRECTORIES_ SYSTEM TABLE SYSTEM_ SYS_DN_USERS_ SYSTEM TABLE SYSTEM_ SYS_DUMMY_ SYSTEM TABLE SYSTEM_ SYS_ENCRYPTED_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_GRANT_OBJECT_ SYSTEM TABLE SYSTEM_ SYS_GRANT_SYSTEM_ SYSTEM TABLE SYSTEM_ SYS_INDEX_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_INDEX_PARTITIONS_ SYSTEM TABLE SYSTEM_ SYS_INDICES_ SYSTEM TABLE SYSTEM_ SYS_LOBS_ SYSTEM TABLE SYSTEM_ SYS_PART_INDICES_ SYSTEM TABLE SYSTEM_ SYS_PART_KEY_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_PART_LOBS_ SYSTEM TABLE SYSTEM_ SYS_PART_TABLES_ SYSTEM TABLE SYSTEM_ SYS_PRIVILEGES_ SYSTEM TABLE SYSTEM_ SYS_PROCEDURES_ SYSTEM TABLE SYSTEM_ SYS_PROC_PARAS_ SYSTEM TABLE SYSTEM_ SYS_PROC_PARSE_ SYSTEM TABLE SYSTEM_ SYS_PROC_RELATED_ SYSTEM TABLE SYSTEM_ SYS_REPLICATIONS_ SYSTEM TABLE SYSTEM_ SYS_REPL_HOSTS_ SYSTEM TABLE SYSTEM_ SYS_REPL_ITEMS_ SYSTEM TABLE SYSTEM_ SYS_REPL_OFFLINE_DIR_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_INDEX_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_INDICES_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_ITEMS_ SYSTEM TABLE SYSTEM_ SYS_REPL_RECOVERY_INFOS_ SYSTEM TABLE SYSTEM_ SYS_SECURITY_ SYSTEM TABLE SYSTEM_ SYS_SYNONYMS_ SYSTEM TABLE SYSTEM_ SYS_TABLES_ SYSTEM TABLE SYSTEM_ SYS_TABLE_PARTITIONS_ SYSTEM TABLE SYSTEM_ SYS_TBS_USERS_ SYSTEM TABLE SYSTEM_ SYS_TRIGGERS_ SYSTEM TABLE SYSTEM_ SYS_TRIGGER_DML_TABLES_ SYSTEM TABLE SYSTEM_ SYS_TRIGGER_STRINGS_ SYSTEM TABLE SYSTEM_ SYS_TRIGGER_UPDATE_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_USERS_ SYSTEM TABLE SYSTEM_ SYS_VIEWS_ SYSTEM TABLE SYSTEM_ SYS_VIEW_PARSE_ SYSTEM TABLE SYSTEM_ SYS_VIEW_RELATED_ SYSTEM TABLE SYSTEM_ SYS_XA_HEURISTIC_TRANS_ SYSTEM TABLE ALTIADMIN ALTITBL TABLE SYS SYSTBL TABLE 2.3 Connecting and Disconnecting iSQL User’s Manual 26 CLEAR_DP SYNONYM DUAL SYNONYM EXPORT_PARTITION_TO_FILE SYNONYM EXPORT_TO_FILE SYNONYM EXPORT_USER_TABLES SYNONYM FCLOSE SYNONYM FCLOSE_ALL SYNONYM FCOPY SYNONYM FFLUSH SYNONYM FOPEN SYNONYM FREMOVE SYNONYM FRENAME SYNONYM GET_LINE SYNONYM IMPORT_FROM_FILE SYNONYM IS_OPEN SYNONYM NEW_LINE SYNONYM PRINT SYNONYM PRINTLN SYNONYM PUT SYNONYM PUT_LINE SYNONYM RAISE_APPLICATION_ERROR SYNONYM REGISTER SYNONYM REMOVE SYNONYM REMOVEALL SYNONYM REMOVE_DP SYNONYM REMOVE_XID SYNONYM RESUME_DP SYNONYM SET_DEFAULTS SYNONYM SIGNAL SYNONYM SLEEP SYNONYM WAITANY SYNONYM WAITONE SYNONYM 93 rows selected. 2.3.2 Disconnec ting from a Database DISCONNEC T is used to terminate the current session and disconnect from the ser ver. The result of all subsequently executed SQL statements will be a “Not connected” message, and “CONNEC T use - rID/password” must be executed in order to connect to the ser ver again. DISCONNECT; iSQL> INSERT INTO systbl VALUES(1, 'A1'); 1 row inserted. iSQL> INSERT INTO systbl VALUES(2, 'A2'); 1 row inserted. iSQL> SELECT * FROM systbl; I1 I2 ---------------------- 1 A1 2 A2 2 rows selected. iSQL> DISCONNECT; Disconnect success. iSQL> INSERT INTO systbl VALUES(3, 'A3'); [ERR-91020 : No Connection State] iSQL> SELECT * FROM systbl; [ERR-91020 : No Connection State] iSQL> CONNECT sys/manager; Connect success. 2.4 Retrieving Information Related to the Database and Database Objects 27 Examples of iSQL in Use 2.4 Retrieving Information Related to the Database and Database Objec ts 2.4.1 Per formance Views A per formance view is a type of data dictionar y table capable of inquiring about the ser ver status and database information. The following SELEC T statement can be used to view the list of per for- mance views provided by ALTIBASE HDB: iSQL> SELECT * FROM v$tab; TABLE NAME TYPE --------------------------------------------- V$ALLCOLUMN PERFORMANCE VIEW V$ARCHIVE PERFORMANCE VIEW V$BUFFPAGEINFO PERFORMANCE VIEW V$BUFFPOOL_STAT PERFORMANCE VIEW V$CATALOG PERFORMANCE VIEW V$DATABASE PERFORMANCE VIEW V$DATAFILES PERFORMANCE VIEW V$DATATYPE PERFORMANCE VIEW V$DBA_2PC_PENDING PERFORMANCE VIEW V$DBLINK_REMOTE_STATEMENT_INFO PERFORMANCE VIEW V$DBLINK_REMOTE_TRANSACTION_INFO PERFORMANCE VIEW V$DBLINK_TRANSACTION_INFO PERFORMANCE VIEW V$DB_FREEPAGELISTS PERFORMANCE VIEW V$DB_PROTOCOL PERFORMANCE VIEW V$DIRECT_PATH_INSERT PERFORMANCE VIEW V$DISKTBL_INFO PERFORMANCE VIEW V$DISK_BTREE_HEADER PERFORMANCE VIEW V$DISK_RTREE_HEADER PERFORMANCE VIEW V$EVENT_NAME PERFORMANCE VIEW V$FILESTAT PERFORMANCE VIEW V$FLUSHER PERFORMANCE VIEW V$FLUSHINFO PERFORMANCE VIEW . . For the complete list of the per formance views provided with ALTIBASE HDB and the meanings of the columns, please refer to the ALTIBASE HDB General Reference Chapter 3: Data Dictionary. Data in a particular per formance view can be queried in the same way as an ordinar y table using a SELEC T statement, and using JOIN, etc., results can be output in various forms. 2.4.2 Viewing the List of Tables Information on all of the tables that exist in the database can be retrieved using the following SELEC T statement. The SYS_TABLES_ meta table is an internal system table that contains informa- tion about the database catalog provided by ALTIBASE HDB. iSQL> SELECT * FROM system_.sys_tables_; . . iSQL> SELECT * FROM tab; -> This command is available in iSQL only. USER NAME TABLE NAME TYPE -------------------------------------------------- . . 2.4 Retrieving Information Related to the Database and Database Objects iSQL User’s Manual 28 2.4.3 Viewing a Table Struc ture The following command is used to retrieve information on user-created tables: DESC table_name; CREATE TABLE departments ( DNO SMALLINT PRIMARY KEY, DNAME CHAR(30) NOT NULL, DEP_LOCATION CHAR(9), MGR_NO INTEGER ); iSQL> DESC departments; -> table_name : The name of a table whose information (table structure) you want to k now. [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ----------------------------------------------------------- NAME TYPE IS NULL ----------------------------------------------------------- DNO SMALLINT FIXED NOT NULL DNAME CHAR(30) FIXED NOT NULL DEP_LOCATION CHAR(9) FIXED MGR_NO INTEGER FIXED [ INDEX ] ----------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- __SYS_IDX_ID_122 BTREE UNIQUE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- DNO 2.4.4 Viewing Sequence Information The following commands are used to obtain information on all sequences that exist in the database: SELECT * FROM seq; iSQL> CONNECT sys/manager; Connect success. iSQL> CREATE USER user1 IDENTIFIED BY user1; Create success. iSQL> CONNECT user1/user1; Connect success. iSQL> CREATE SEQUENCE seq1 MAXVALUE 100 CYCLE; Create success. iSQL> CREATE SEQUENCE seq2; Create success. iSQL> CONNECT sys/manager; Connect success. iSQL> CREATE SEQUENCE seq2 START WITH 20 INCREMENT BY 30; Create success. iSQL> CREATE SEQUENCE seq3 CACHE 40; Create success. iSQL> SELECT * FROM seq; -> When accessing the database using the SYS account, information of all sequences will be displayed. USER_NAME -------------------------------------------- SEQUENCE_NAME CURRENT_VALUE -------------------------------------------------------------------- INCREMENT_BY MIN_VALUE MAX_VALUE CYCLE 2.4 Retrieving Information Related to the Database and Database Objects 29 Examples of iSQL in Use ---------------------------------------------------------------------------- CACHE_SIZE ------------------------- SYS SEQ2 30 1 9223372036854775806 NO 20 SYS SEQ3 1 1 9223372036854775806 NO 40 USER1 SEQ1 1 1 100 YES 20 USER1 SEQ2 1 1 9223372036854775806 NO 20 4 rows selected. iSQL> CONNECT user1/user1; Connect success. iSQL> SELECT * FROM seq; -> Information of all sequences created by User 1 will be displayed. SEQUENCE_NAME CURRENT_VALUE -------------------------------------------------------------------- INCREMENT_BY MIN_VALUE MAX_VALUE CYCLE ---------------------------------------------------------------------------- CACHE_SIZE ------------------------- SEQ1 1 1 100 YES 20 SEQ2 1 1 9223372036854775806 NO 20 2 rows selected. 2.5 Controlling Transactions iSQL User’s Manual 30 2.5 Controlling Transac tions 2.5.1 Defining Transac tion Modes AUTOCOMMIT determines whether to automatically commit the results of a command at the time of execution. iSQL> AUTOCOMMIT OFF; -> Commands are not automatically committed before being manually commit- ted by the user. Set autocommit off success. iSQL> AUTOCOMMIT ON; -> Commands are automatically committed at the time of execution. Set autocommit on success. 2.5.2 PLANCOMMIT SET PLANCOMMIT [ON/OFF]; When EXPLAIN PLAN has been set to ON or ONLY, there is the possibility that the iSQL commands DESC; SELEC T * FROM TAB; or SELEC T * FROM SEQ; will be committed, even if AUTOCOMMIT has been set to OFF. This setting determines whether to commit them automatically. This setting has been provided to overcome the misunderstanding where the user believes that such a command has not been prepared, but the system prepares the command in order to gener- ate the execution plan. The command would then be committed, without the user knowing it, when a COMMIT command is executed later. When this value is OFF (which is the default) in a session for which EXPLAIN PLAN is ON (or ONLY ) and AUTOCOMMIT is OFF, ALTIBASE HDB does not autocommit the above commands (DESC, SELEC T * FROM tab; or SELEC T * FROM seq;). When this value is ON, iSQL issues a special commit command to commit these commands. 2.6 File Management 31 Examples of iSQL in Use 2.6 File Management 2.6.1 Saving Results iSQL enables results returned through iSQL to be saved in a designated file. In the following exam- ple, results are stored in the designated file, book.txt, using the SPOOL command. To cancel this command, use the SPOOL OFF command. iSQL> SPOOL book.txt Spool start. [book.txt] -> All subsequently executed commands and their results will be written to book.txt. The file is created in the current director y. iSQL> SPOOL OFF Spool Stop -> From this point on, no more commands or results will be saved in the file. 2.6.2 Running Scripts 2.6.2.1 @ Command @ file_name[.sql] or START file_name[.sql] file_name[.sql]: The script file to be executed. If the filename extension is omitted, iSQL assumes the default command file extension (.sql). When this command is executed, , iSQL executes all of the commands in the specified script file in sequence. @command per forms the same function as START. An EXIT or QUIT command in the script file terminates iSQL. The script file may include general SQL statements, iSQL commands, references to stored pro- cedures, etc. The following is an example in which the schema.sql script, which can be found in the $ALTIBASE_HOME/sample/APRE/schema director y, which is the current director y, is executed. iSQL> START schema.sql -> The SQL statements in the file are executed. or iSQL> @schema.sql When specifying a script file, you can use a question mark (“?”) to indicate the ALTIBASE HDB home director y ($ALTIBASE_HOME) of the user account. The following is an example in which the schema.sql script, which can be found in the $ALTIBASE_HOME/sample/APRE/schema director y, is executed regardless of which directory is the current director y. 2.6 File Management iSQL User’s Manual 32 iSQL> @?/sample/APRE/schema/schema.sql The question mark (“?”) can also be used with the following iSQL commands: EDIT, SAVE, LOAD, SPOOL, START The -- or /* */ charac ters can be used to inser t comments in script files. -- means that ever ything that follows until the end of the line will be handled as a comment, whereas comments that span several lines are placed between /* and */. 2.6.2.2 @@ Command @@ file_name[.sql] file_name[.sql]: This indicates the embedded script to be executed. If the extension is omitted, iSQL assumes the default command file extension(.sql). Executes the specified script. The functionality of the @@ command is similar to that of the @ com- mand. This command searches for script files in the same path as the script currently being executed, and is thus useful for executing embedded scripts. The @@ command can be used for the following purposes: If a script file that contains the text @@file_name.sql is executed, iSQL looks for the file speci- fied by file_name.sql, and executes its contents in sequence. file_name.sql must be located in the same director y as the script file that called it. If no such file exists, iSQL raises an error. If a user inputs @@ file_name . sq l at the iSQL prompt, the result will be the same as when using iSQL to execute @file_name.sql. The script typically may include SQL statements, iSQL commands, or stored procedures. An EXIT or QUIT command in the script terminates iSQL. The following is an example of the execution of a.sql, in which schema.sql is referenced, from the $ALTIBASE_HOME director y. In order for this example to be executed without error, a.sql must exist in the $ALTIBASE_HOME/sample/APRE/schema director y alongside schema.sql. iSQL> @sample/APRE/schema/a.sql $ cat a.sql @@schema.sql Note: The following chapter provides examples of editing the results of a query in an iSQL environment based on the tables created by execution of the above script (see appendix Schema). 2.6.3 Saving SQL Statements Of the commands currently in the iSQL buffer, the SAVE command saves the most recently executed one in a file. 2.6 File Management 33 Examples of iSQL in Use This file will be created in the current directory. iSQL> SELECT * FROM book; iSQL> SAVE book.sql -> ‘SELEC T * FROM book;’ is saved in the file book.sql. Save completed. 2.6.4 Loading SQL Statements This function loads the first command in the specified file to the last position in the iSQL buffer. iSQL> LOAD book.sql iSQL> SELECT * FROM book; Load completed. iSQL> / -> The results of execution of SELEC T * FROM book; can be seen. 2.6.5 Saving DML Statements Executed DML statements such as INSERT, UPDATE, DELE TE and MOVE are saved in $ALTIBASE_HOME/trc/isql_quer y.log. Specify SET QUERYLOGGING ON to use this functionality and OFF to disable it. iSQL> SET QUERYLOGGING ON; -> From this point on, all executed DML statements will be saved in $ALTIBASE_HOME/trc/isql_quer y.log. iSQL> CREATE TABLE t1 ( I1 INTEGER ); Create success. iSQL> INSERT INTO t1 VALUES ( 1 ); 1 row inserted. iSQL> UPDATE t1 SET i1 = 2; 1 row updated. iSQL> SELECT * FROM t1; I1 -------------- 2 1 row selected. iSQL> DELETE FROM t1; 1 row deleted. iSQL> DROP TABLE t1; Drop success. iSQL> EXIT $ cat $ALTIBASE_HOME/trc/isql_query.log -> All queries executed since SE T QUERYLOGGING ON was executed can be obser ved. [2009/09/16 10:36:14] [127.0.0.1:20300 SYS] INSERT INTO t1 VALUES ( 1 ) [2009/09/16 10:36:25] [127.0.0.1:20300 SYS] UPDATE t1 SET i1 = 2 [2009/09/16 10:36:31] [127.0.0.1:20300 SYS] DELETE FROM t1 2.6.6 Editing Quer y Statements 2.6.6.1 Editing the Most Recent Quer y Statement The command ed is provided for creating and editing files in iSQL. If you execute ed without parameters, a temporar y file named iSQL.buf containing the most recently executed quer y statements will be created, and the following screen will be visible. ( To save 2.6 File Management iSQL User’s Manual 34 space, only a few of the blank lines that would be displayed on the screen are shown here.) iSQL> SELECT sysdate FROM dual; SYSDATE --------------- 01-JAN-2000 1 row selected. iSQL> ED SELECT sysdate FROM dual; ~ ~ ~ "iSQL.buf" 1L, 26C 2.6.6.2 Editing Existing Files If you want to edit an existing file, type the file name in iSQL as a parameter when launching the text editor using the “ed” command. When the screen is initialized, blank lines will be displayed as ~ (tilde) characters. iSQL> ED myquery.sql "myquery.sql" INSERT INTO employees(ENO, E_FIRSTNAME, E_LASTNAME, SEX) VALUES(21, 'Shiloh', 'Reynolds', 'F'); INSERT INTO employees(ENO, E_FIRSTNAME, E_LASTNAME, SEX, JOIN_DATE) VAL- UES(22, 'Joshua', 'Baldwin', 'M', TO_DATE('2001-11-19 00:00:00', 'YYYY-MM-DD HH:MI:SS')); ~ ~"myquery.sql" 2.6.6.3 Editing Quer y Statements in Histor y Lists You can use the number in the histor y list to edit previously executed commands. In detail, the query statements are stored in the temporary file iSQL.buf in association with numbers, and can be edited with reference to them. The edited quer y will be stored again as the most recent record in the histor y list, and can be executed by entering the ‘/’ (re -execute) character. iSQL> H 1 : SELECT * FROM customers; 2 : SELECT * FROM employees; iSQL> 2ed or iSQL> 2 ed SELECT * FROM employees; ~ ~ "iSQL.buf" Note: The command-line parameter 2, which is the name of the file to be edited (iSQL> ed 2), must be dis- tinguished from the number indicating the line in the file to edit. After editing (employees was replaced with orders) iSQL> h -> The histor y list currently in the isql buffer 1 : SELECT * FROM customers; 2 : SELECT * FROM employees; 2.6 File Management 35 Examples of iSQL in Use 3 : SELECT * FROM orders; -> The query statement edited using the 2 ed command will be saved as the last command in the histor y list. iSQL> / -> The most recently executed command will be executed. ONO ORDER_DATE ENO CNO ------------------------------------------------------------------------ GNO QTY ARRIVAL_DATE PROCESSING ------------------------------------------------------ 11290007 29-NOV-2010 12 7111111431202 A111100002 70 02-DEC-2010 C 11290011 29-NOV-2010 12 7610011000001 E111100001 1000 05-DEC-2010 D 11290100 29-NOV-2010 19 7001011001001 E111100001 500 07-DEC-2010 D 12100277 10-DEC-2010 19 7610121220475 . . 12310012 31-DEC-2010 19 7308281201145 C111100001 250 03-JAN-2011 O 30 rows selected. 2.7 Formatting SELECT Query Results iSQL User’s Manual 36 2.7 Formatting SELEC T Quer y Results The results of a SELEC T quer y can be formatted as desired by the user. 2.7.1 SET LINESIZE Sets the size (number of characters) of one line to be displayed when the results of a SELEC T state - ment are output. I t must be between 10 and 32767. iSQL> set linesize 70; iSQL> select * from employees; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ EMP_JOB EMP_TEL DNO SALARY SEX --------------------------------------------------------------------- BIRTH JOIN_DATE STATUS --------------------------------- 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H . . 20 rows selected. 2.7.2 SET LOBSIZE This specifies the number of characters to display when a CLOB column is queried using a SELEC T statement. In order to quer y CLOB column data using a SELEC T statement, the transaction mode must first be set to AUTOCOMMIT OFF. iSQL> CREATE TABLE c1(I1 INTEGER, I2 CLOB); INSERT INTO c1 VALUES(1, 'A123456789'); INSERT INTO c1 VALUES(2, 'A1234'); INSERT INTO c1 VALUES(3, 'A12345'); INSERT INTO c1 VALUES(4, 'A1234567890123'); iSQL> AUTOCOMMIT OFF -> This sets the transaction mode to OFF so that a CLOB column can be queried. Set autocommit off success. iSQL> SELECT * FROM c1; I 1 I 2 ---------------------------------------------------------------------------- -------------------- 1 A123456789 2 A 1 2 3 4 3 A12345 4 A1234567890123 4 rows selected. 2.7 Formatting SELECT Query Results 37 Examples of iSQL in Use iSQL> SET LOBSIZE 10; -> This specifies the number of characters to display on the screen when quer y- ing a CLOB column using a SELEC T statement. iSQL> SELECT * FROM c1; I1 I2 -------------------------- 1 A123456789 2 A1234 3 A12345 4 A123456789 4 rows selected. 2.7.3 SET LOBOFFSET This specifies the star ting location from which to display CLOB data when a CLOB column is queried using a SELEC T statement. In order to quer y CLOB column data using a SELEC T statement, the transaction mode must first be set to AUTOCOMMIT OFF. iSQL> CREATE TABLE c1(I1 INTEGER, I2 CLOB); INSERT INTO c1 VALUES(1, 'A123456789'); INSERT INTO c1 VALUES(2, 'A1234'); INSERT INTO c1 VALUES(3, 'A12345'); INSERT INTO c1 VALUES(4, 'A1234567890123'); iSQL> AUTOCOMMIT OFF Set autocommit off success. iSQL> SET LOBOFFSET 4; -> This specifies the starting location of data to be shown on the screen num- ber of characters to skip) when quer ying a CLOB column using a SELEC T statement. iSQL> SELECT * FROM c1; I1 I2 -------------------------- 1 456789 2 4 3 45 4 4567890123 4 rows selected. 2.7.4 SET FEEDBACK Outputs the number of records found when the results of a SELEC T statement are output. SET FEEDBACK ON|OFF|n; ON: Output the number of resultant records after execution of a SELEC T statement. OFF: Do not output the number of resultant records after execution of a SELEC T statement. n: Output the number of resultant records when the number is n or greater. iSQL> set feedback on; iSQL> select * from employees where eno < 3; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ EMP_JOB EMP_TEL DNO SALARY SEX --------------------------------------------------------------------- BIRTH JOIN_DATE STATUS 2.7 Formatting SELECT Query Results iSQL User’s Manual 38 --------------------------------- 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 2 rows selected. 2.7.5 SET PAGESIZE Specifies the number of resultant rows to display at one time. iSQL> SET PAGESIZE 2; -> Show results in groups comprising two rows each. iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 3 Ken Kobain 4 Aaron Foster ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. iSQL> SET PAGESIZE 0; -> Show all of the results on one page. iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. 2.7.6 SET HEADING Sets whether to output the header with a SELEC T result. iSQL> SET HEADING OFF; -> Header is not displayed with the result. iSQL> select eno, e_firstname, e_lastname from employees; 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi 2.7 Formatting SELECT Query Results 39 Examples of iSQL in Use . . . 20 rows selected. iSQL> SET HEADING ON; -> Outputs header in result. iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. 2.7.7 SET COLSIZE When the results of a SELEC T statement are output, sets the number of characters from a column of type CHAR or VARCHAR to display so that columns containing long lines of tex t can be easily viewed. iSQL> CREATE TABLE location( ID INTEGER, NAME CHAR(20), ADDRESS VARCHAR(500), PHONE CHAR(20)); Create success. iSQL> INSERT INTO location VALUES(1, 'ALTIBASE', '10Fl., Daerungpost-tower II, Guro-dong, Guro-qu, Seoul 152-790. Korea', '82-2-2082-1000'); 1 row inserted. I n t he fo llowi n g ex am p le, t he nu m b er of ch arac ter s of a co lu m n o f t y pe C HA R or VA R C H A R i s s e t to 7: iSQL> SET COLSIZE 7; iSQL> SELECT id, name, address, phone FROM location; ID NAME ADDRESS PHONE -------------------------------------------- 1 ALTIBAS 10Fl., 82-2-20 E Daerung 82-1000 post-to wer II, Guro-d ong, Gu ro-qu, Seoul 1 52-790. Korea 1 row selected. 2.8 Setting Output Options iSQL User’s Manual 40 2.8 Setting Output Options 2.8.1 Getting the Elapsed Time This function displays the time it took to execute the SQL statement. iSQL> SET TIMING ON; -> Output the execution time in the last line after the command is executed. iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 0.01 iSQL> SET TIMING OFF; -> Execution time is not displayed. 2.8.2 Setting Execution Time Units for Output This function sets the units with which to output SQL statement execution time. Can be set to the following units: Seconds M illise c o nds Microseconds N a nose c o n ds iSQL> SET TIMING ON iSQL> SET TIMESCALE SEC; iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 0.00 iSQL> SET TIMESCALE MILSEC; iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2.8 Setting Output Options 41 Examples of iSQL in Use 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 0.72 iSQL> SET TIMESCALE MICSEC; iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 966.00 iSQL> SET TIMESCALE NANSEC; iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 681000.00 2.8.3 Describing Foreign Key Information This function displays information on foreign keys when the DESC command is used to view the table structure. iSQL> SET FOREIGNKEYS ON; -> The foreign key information will be output. iSQL> DESC bikes_ive_seen; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ---------------------------------------------------------------------------- NAME TYPE IS NULL ---------------------------------------------------------------------------- MID SMALLINT FIXED YEAR SMALLINT FIXED NOT NULL USED BIT(1) FIXED NOT NULL SOLD BIT(1) FIXED KMS INTEGER FIXED SAW_WHERE VARCHAR(20) FIXED ITEM_ID INTEGER FIXED NOT NULL 2.8 Setting Output Options iSQL User’s Manual 42 COMMENT VARCHAR(100) FIXED PRICE INTEGER FIXED NOT NULL DATE_SEEN DATE FIXED [ INDEX ] ---------------------------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ---------------------------------------------------------------------------- __SYS_IDX_ID_143 BTREE UNIQUE ITEM_ID ASC [ PRIMARY KEY ] ---------------------------------------------------------------------------- ITEM_ID [ FOREIGN KEYS ] ---------------------------------------------------------------------------- * MODEL_ID * __SYS_IDX_ID_142 ( MID ) ---> SYS.CANDIDATE_MODELS ( MID ) iSQL> SET FOREIGNKEYS OFF; -> The foreign key information will not be output. iSQL> DESC bikes_ive_seen; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ---------------------------------------------------------------------------- NAME TYPE IS NULL ---------------------------------------------------------------------------- MID SMALLINT FIXED YEAR SMALLINT FIXED NOT NULL USED BIT(1) FIXED NOT NULL SOLD BIT(1) FIXED KMS INTEGER FIXED SAW_WHERE VARCHAR(20) FIXED ITEM_ID INTEGER FIXED NOT NULL COMMENT VARCHAR(100) FIXED PRICE INTEGER FIXED NOT NULL DATE_SEEN DATE FIXED [ INDEX ] ---------------------------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ---------------------------------------------------------------------------- __SYS_IDX_ID_143 BTREE UNIQUE ITEM_ID ASC [ PRIMARY KEY ] ---------------------------------------------------------------------------- ITEM_ID iSQL> 2.8.4 Outputting Script Execution Results Commands can be used to control the output of created results. When set to OFF, this function prevents the result of a script command executed in iSQL from being displayed on the screen. However, even if it is set OFF, the results of queries that are directly entered (e.g. iSQL> select * from t1;) will still be displayed on the screen; the OFF setting only prevents script execution results (e.g.: iSQL> @a.sql ) from being displayed. iSQL> SET TERM OFF; iSQL> SET TIMING ON; -> The execution time is not output to the screen. iSQL> @schema.sql -> The script execution results are not output. iSQL> select eno, e_firstname, e_lastname from employees; -> The results of directly input queries will be output. ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 2.8 Setting Output Options 43 Examples of iSQL in Use 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 0.00 iSQL> SET TERM ON; -> Script execution results will be output. iSQL> @schema.sql iSQL> ALTER SESSION SET AUTOCOMMIT = TRUE; -> Star t of results. Alter success. iSQL> DROP TABLE ORDERS; Drop success. elapsed time : 0.00 iSQL> DROP TABLE EMPLOYEES; Drop success. elapsed time : 0.00 . . . iSQL> CREATE INDEX ODR_IDX3 ON ORDERS (GNO ASC); Create success. elapsed time : 0.00 -> End of results. 2.8.5 Outputting an Execution Plan In iSQL, an execution plan can be output to fine -tune SQL statements. Using an execution plan, DML statements such as SELEC T, INSERT, UPDATE and DELETE can be checked. In order to accomplish this, the following command must be executed before a statement such as a SELEC T statement is executed. ALTER SESSION SET EXPLAIN PLAN = option This option can be set to ON, OFF or ONLY. The default is OFF. ON: After the SELEC T statement is executed, the execution plan information is displayed along with the resultant records. ONLY: The SELEC T statement is prepared but not executed, and only the execution plan infor- mation is output.This can be used to check the execution plan for a SELEC T statement that involves host variable binding, or to quickly check the execution plan for queries that take a long time to execute. OFF: After the SELEC T statement is executed, only the resultant records are displayed. The following command is used to obtain detailed information about how conditions included in WHERE clauses written by the user will be execute: ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 1 If this proper ty is set to 1, signifying “ON”, as in the above statement, the execution plan’s WHERE clause conditions, including FIXED KEY RANGE, VARIBALE KEY RANGE and FILTER, are classified and displayed in detail. Therefore, if the WHERE clause is complicated, you can check which predicates 2.8 Setting Output Options iSQL User’s Manual 44 will be executed by scanning the sorted indexes. However, this information may not be output if queries are changed to optimize them in some way. The following example shows the output when the given SQL statement is executed: When TRCLOG_DETAIL_PREDICATE has been set to 1 (=on), and EXPLAIN PLAN = ON, the fol- lowing is output in addition to the results. iSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 1; Alter success. iSQL> ALTER SESSION SET EXPLAIN PLAN = ON; Alter success. iSQL> select eno, e_lastname, e_firstname from employees where eno = 1; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ 1 Moon Chan-seung 1 row selected. ------------------------------------------------------------ PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_164, ACCESS: 1, SELF_ID: 2 ) [ FIXED KEY ] AND OR ENO = 1 ------------------------------------------------------------ iSQL> When TRCLOG_DETAIL_PREDICATE is not set to 1, and EXPLAIN PLAN = ON, the following is output in addition to the results. iSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. iSQL> ALTER SESSION SET EXPLAIN PLAN = ON; Alter success. iSQL> select eno, e_lastname, e_firstname from employees where eno = 1; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ 1 Moon Chan-seung 1 row selected. ------------------------------------------------------------ PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_164, ACCESS: 1, SELF_ID: 2 ------------------------------------------------------------ iSQL> When TRCLOG_DETAIL_PREDICATE is not set to 1, and EXPLAIN PLAN = ONLY, only the follow- ing is output. iSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. iSQL> ALTER SESSION SET EXPLAIN PLAN = ONLY; Alter success. iSQL> select eno, e_lastname, e_firstname from employees where eno = 1; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ No rows selected. ------------------------------------------------------------ PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_164, ACCESS: 1, SELF_ID: 2 ------------------------------------------------------------ 2.8 Setting Output Options 45 Examples of iSQL in Use iSQL> If EXPLAIN PLAN = ONLY, because only an execution plan is created and the query is not executed, values that would be determined after actual execution are indicated using question marks (“??”), like an ACCESS clause. 2.8.6 Setting Result Output Orientation When quer ying data using a SELEC T statement in iSQL, the results can be displayed either horizon- tally or ver tically. This function is suitable for outputting results that comprise a small number of rows and many col- umns. If such a result set is output horizontally, as is usually the case, it is difficult to compare columns and check the values. However, it is easy to see when output ver tically. iSQL> SET VERTICAL ON; --> This sets the print direction ver tically. iSQL> SELECT * FROM employees WHERE eno = 2; ENO : 2 E_LASTNAME : Davenport E_FIRSTNAME : Susan EMP_JOB : designer EMP_TEL : 0113654540 DNO : SALARY : 1500 SEX : F BIRTH : 721219 JOIN_DATE : 18-NOV-2009 STATUS : H 1 row selected. 2.9 Viewing iSQL Display Settings iSQL User’s Manual 46 2.9 Viewing iSQL Display Settings The following is an example of viewing the values of the iSQL environment variables for the current session: iSQL> SHOW USER -> This is the current user. User : SYS iSQL> SHOW COLSIZE ColSize : 0 iSQL> SHOW LOBOFFSET LobOffset: 0 iSQL> SHOW LINESIZE LineSize : 80 iSQL> SHOW LOBSIZE LobSize : 80 iSQL> SHOW PAGESIZE PageSize : 0 iSQL> SHOW TIMESCALE TimeScale : Second iSQL> SHOW HEADING Heading : On iSQL> SHOW TIMING Timing : Off iSQL> SHOW VERTICAL Vertical : Off iSQL> SHOW FOREIGNKEYS ForeignKeys : Off iSQL> SHOW PLANCOMMIT PlanCommit : Off iSQL> SHOW QUERYLOGGING QueryLogging : Off iSQL> SHOW TERM Term : On iSQL> SHOW FEEDBACK Feedback : 1 iSQL> SHOW ALL User : SYS ColSize : 0 LobOffset : 0 LineSize : 80 LobSize : 80 PageSize : 0 TimeScale : Second Heading : On Timing : Off Vertical : Off ForeignKeys : Off PlanCommit : Off 2.9 Viewing iSQL Display Settings 47 Examples of iSQL in Use QueryLogging : Off Term : On Feedback : 1 2.10 Host Variables iSQL User’s Manual 48 2.10 Host Variables Host variables are first declared and then used. Host variables are useful when executing procedures or functions. 2.10.1 Declaring a Host Variable 2.10.1.1 Syntax VAR[IABLE] var_name var_type 2.10.1.2 Type The following types can be used when declaring variables: INTEGER, BYTE(n), NIBBLE(n), NUMBER, NUMBER(n), NUMBER(n,m), NUMERIC, NUMERIC(n), NUMERIC(n,m), CHAR(n), VARCHAR(n), NCHAR(n), NVARCHAR(n), DATE DECIMAL, DECIMAL(n), DECIMAL(n,m), FLOAT, FLOAT(n), DOUBLE, REAL BIGINT, SMALLINT 2.10.1.3 Example The following examples demonstrate how to declare variables: iSQL> VAR p1 INTEGER iSQL> VAR p2 CHAR(10) iSQL> VAR v_double DOUBLE iSQL> VAR v_real REAL 2.10.2 Assigning a Value to a Host Variable 2.10.2.1 Syntax EXEC[UTE] :var_name := value; 2.10.2.2 Example The following example shows how to assign a value to a variable: iSQL> EXECUTE :p1 := 100; Execute success. iSQL> EXEC :p2 := 'abc'; Execute success. 2.10 Host Variables 49 Examples of iSQL in Use 2.10.3 Viewing Host Variables 2.10.3.1 Syntax PRINT VAR[IABLE] -> Shows all declared variables. PRINT var_name -> Shows the type and value of the variable var_name. 2.10.3.2 Example The following shows the values of all declared variable: iSQL> PRINT VAR [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- P1 INTEGER 100 P2 CHAR(10) abc V_REAL REAL V_DOUBLE DOUBLE iSQL> PRINT p2 -> Outputs only variable p2 information. NAME TYPE VALUE ------------------------------------------------------- P2 CHAR(10) abc 2.11 Executing Prepared SQL Statements iSQL User’s Manual 50 2.11 Executing Prepared SQL Statements 2.11.1 Prepared SQL versus Dynamic SQL Statements SQL statements executed in iSQL are usually executed according to the so- called “Direct Execution” method. In Direct Execution, syntax analysis, validity testing, optimization and execution of a quer y are all per formed at once. However, in Prepared Execution, only the syntax analysis, validity testing, and optimization of the quer y are per formed to set up an execution plan for the quer y, which is then executed when requested by the client. When creating an application that uses ODBC, the Prepared Execution method is typically used, and is more advantageous in terms of speed when an SQL state - ment is to be repeatedly executed using host variable binding. In iSQL, the difference between these two methods lies only in whether variables are used or not; there is no advantage in terms of speed. 2.11.2 Prepared SQL Statements 2.11.2.1 Syntax PREPARE SQL_statement 2.11.2.2 Example The following is an example of the use of the PREPARE command to execute an SQL statement: iSQL> VAR t1 INTEGER; iSQL> EXEC :t1 := 3; Execute success. iSQL> PREPARE SELECT eno, e_firstname, e_lastname, sex FROM employees WHERE eno=:t1; ENO : 3 E_FIRSTNAME : Ken E_LASTNAME : Kobain SEX : M 1 row selected. 2.12 Creating, Executing and Dropping Stored Procedures 51 Examples of iSQL in Use 2.12 Creating, Executing and Dropping Stored Proce - dures 2.12.1 Creating Procedures Suppor t is provided for the creation and execution of stored procedures. A stored procedure must end with the following: END; / Successful creation of the procedures can be confirmed by checking the sys_procedures_ meta table. 2.12.2 Executing Procedures Procedures are executed in order to execute multiple queries at one time. If the procedure to be exe - cuted has parameters, as many variables as there are parameters must be declared before the proce - dure is executed. 2.12.2.1 Example 1 In the following example, a procedure named emp_proc, which executes an INSERT statement using IN parameters, is created: iSQL> CREATE OR REPLACE PROCEDURE emp_proc(p1 IN INTEGER, p2 IN CHAR(20), p3 IN CHAR(20), p4 IN CHAR(1)) AS BEGIN INSERT INTO employees(eno, e_firstname, e_lastname, sex) VALUES(p1, p2, p3, p4); END; / Create success. iSQL> SELECT * FROM system_.sys_procedures_ order by created desc limit 1; USER_ID PROC_OID ------------------------------------ PROC_NAME OBJECT_TYPE STATUS ---------------------------------------------------------------------- PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID RETURN_SIZE ------------------------------------------------------------- RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN CREATED ------------------------------------------------------------------------- LAST_DDL_TIME ---------------- 2 3208680 EMP_PROC 0 0 4 2 192 29-FEB-2012 29-FEB-2012 1 row selected. emp_proc, which was created above, is executed: 2.12 Creating, Executing and Dropping Stored Procedures iSQL User’s Manual 52 iSQL> VAR eno INTEGER iSQL> VAR first_name CHAR(20) iSQL> VAR last_name CHAR(20) iSQL> VAR sex CHAR(1) iSQL> EXECUTE :eno := 21; Execute success. iSQL> EXECUTE :first_name := 'Joel'; Execute success. iSQL> EXECUTE :last_name := 'Johnson'; Execute success. iSQL> EXECUTE :sex := 'M'; Execute success. iSQL> EXECUTE emp_proc(:eno, :firstname, :lastname, :sex); Execute success. iSQL> SELECT eno, e_firstname, e_lastname, sex FROM employees WHERE eno = 21; ENO E_FIRSTNAME E_LASTNAME SEX ----------------------------------------------------------------- 21 Joel Johnson M 1 row selected. 2.12.2.2 Example 2 In the following example, a procedure called outProc, which executes a SELEC T statement, is cre - ated: iSQL> CREATE TABLE outTbl(i1 INTEGER, i2 INTEGER); Create success. iSQL> INSERT INTO outTbl VALUES(1,1); 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> SELECT * FROM outTbl; I1 I2 --------------------------- 1 1 1 1 1 1 1 1 1 1 5 rows selected. iSQL> CREATE OR REPLACE PROCEDURE outProc(a1 OUT INTEGER, a2 IN OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO a1 FROM outTbl WHERE i2 = a2; END; / Create success. In the following example, outProc is executed: iSQL> VAR t3 INTEGER iSQL> VAR t4 INTEGER iSQL> EXEC :t4 := 1; Execute success. iSQL> EXEC outProc (:t3, :t4); Execute success. iSQL> PRINT t3; 2.12 Creating, Executing and Dropping Stored Procedures 53 Examples of iSQL in Use NAME TYPE VALUE ------------------------------------------------------ T3 INTEGER 5 2.12.2.3 Example 3 In the following example, the procedure outProc1 is created: iSQL> CREATE OR REPLACE PROCEDURE outProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1; p3 := p1 + 100; END; / Create success. iSQL> VAR v1 INTEGER iSQL> VAR v2 INTEGER iSQL> VAR v3 INTEGER iSQL> EXEC :v1 := 3; Execute success. iSQL> EXEC outProc1(:v1, :v2, :v3); Execute success. iSQL> PRINT VAR; [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- . . V1 INTEGER 3 V2 INTEGER 3 V3 INTEGER 103 . . 2.12.2.4 Example 4 In the following example, a procedure called inoutProc1, which executes a SELEC T statement, is cre - ated: iSQL> CREATE TABLE inoutTbl(i1 INTEGER); Create success. iSQL> INSERT INTO inoutTbl VALUES(1); 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> SELECT * FROM inoutTbl; I1 -------------- 1 1 1 3 rows selected. iSQL> CREATE OR REPLACE PROCEDURE inoutProc (a1 IN OUT INTEGER) AS 2.12 Creating, Executing and Dropping Stored Procedures iSQL User’s Manual 54 BEGIN SELECT COUNT(*) INTO a1 FROM inoutTbl WHERE i1 = a1; END; / Create success. iSQL> VAR t3 INTEGER iSQL> EXEC :t3 := 1; Execute success. iSQL> EXEC inoutProc(:t3); Execute success. iSQL> PRINT t3; NAME TYPE VALUE ------------------------------------------------------- T3 INTEGER 3 2.12.2.5 Example 5 In the following example, the procedure inoutProc1 is created: iSQL> CREATE OR REPLACE PROCEDURE inoutProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1 + p2; p3 := p1 + 100; END; / Create success. In the following example, the procedure inoutProc1 is executed: iSQL> VAR v1 INTEGER iSQL> VAR v2 INTEGER iSQL> VAR v3 INTEGER iSQL> EXEC :v1 := 3; Execute success. iSQL> EXEC :v2 := 5; Execute success. iSQL> EXEC inoutProc1(:v1, :v2, :v3); Execute success. iSQL> PRINT VAR; [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- . . V1 INTEGER 3 V2 INTEGER 8 V3 INTEGER 103 . . 2.12.3 Dropping Procedures The DROP command is used to drop (delete) procedures. 2.12 Creating, Executing and Dropping Stored Procedures 55 Examples of iSQL in Use In the following example, the procedure emp_proc is deleted: iSQL> DROP PROCEDURE emp_proc; Drop success. 2.13 Creating, Executing and Dropping Functions iSQL User’s Manual 56 2.13 Creating, Executing and Dropping Func tions 2.13.1 Creating Func tions A function is provided to create functions. When creating a function, you must end with the follow- ing syntax, and the return type must be defined. END; / Successful creation of the function can be confirmed by checking the sys_procedures_ meta table. In the following example, the function emp_func, which executes an UPDATE statement and a SELEC T statement, is created: iSQL> CREATE OR REPLACE FUNCTION emp_func(f1 IN INTEGER) RETURN NUMBER AS f2 NUMBER; BEGIN UPDATE employees SET salary = 1000000 WHERE eno = f1; SELECT salary INTO f2 FROM employees WHERE eno = f1; RETURN f2; END; / Create success. iSQL> SELECT * FROM system_.sys_procedures_; USER_ID PROC_OID PROC_NAME ---------------------------------------------------------------------------- --- OBJECT_TYPE STATUS PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID -------------------------------------------------------------------------- RETURN_SIZE RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN ------------------------------------------------------------------------ CREATED LAST_DDL_TIME ------------------------------ . . . 2 3300024 INOUTPROC1 0 0 3 2 132 15-SEP-2010 15-SEP-2010 2 3302344 EMP_FUNC 1 0 1 6 30000 23 38 0 3 209 15-SEP-2010 15-SEP-2010 36 rows selected. 2.13.2 Executing Func tions Functions can be executed to simultaneously execute multiple queries. If the function to be exe - c u t e d h a s p a r a m e t e r s, a s m a ny v a r i a b l e s a s t h e re a re f u n c t i o n s m u s t b e d e c l a re d b e fo re t h e f u n c t i o n is executed. Additionally, a variable for saving the result of the function must also be defined. 2.13 Creating, Executing and Dropping Functions 57 Examples of iSQL in Use The following is an example of executing the function emp_func: iSQL> VAR eno INTEGER iSQL> VAR ret NUMBER iSQL> EXEC :eno := 11; Execute success. iSQL> EXEC :ret := emp_func(:eno); Execute success. iSQL> SELECT eno, salary FROM employees WHERE eno = 11; ENO SALARY --------------------------- 11 1000000 1 row selected. 2.13.3 Dropping Func tions The DROP FUNC TION statement is used to drop functions. In the following example, the function emp_func is deleted: iSQL> DROP FUNCTION emp_func; Drop success. 2.14 Convenient User Functions iSQL User’s Manual 58 2.14 Convenient User Func tions 2.14.1 Histor y A list of all previously executed commands can be displayed using the HISTORY command. The num- ber corresponding to a previously executed command can be used to easily execute that command again. iSQL> HISTORY; ->View history list. or iSQL> H; 1 : SELECT * FROM tab; 2 : SELECT * FROM v$tab; iSQL> / -> Re - execute the most recent command(HISTORY;)) iSQL> 2/ -> Execute Command number 2 in histor y list(SELEC T * FROM book;) 2.14.2 Shell Commands The exclamation point (“!”) is a convenient function that allows direct execution of most shell com- mands from within iSQL. iSQL> !ls -al total 3417 -rw-r----- 1 wlgml337 section 1198 Nov 1 13:30 .aliases -rw------- 1 wlgml337 section 5353 Oct 18 21:17 .bash_history -rw-r----- 1 wlgml337 section 1436 Nov 2 15:42 .bashrc -rw-r----- 1 wlgml337 section 1549 Dec 13 17:36 .profile drwxr-x--- 2 wlgml337 section 512 Nov 2 02:00 TEMP drwxr-xr-x 2 root root 512 Oct 16 11:29 TT_DB -rw------- 1 wlgml337 section 3446548 Dec 18 13:19 core drwxr-x--- 2 wlgml337 section 512 Nov 11 16:33 cron drwxr-x--- 2 wlgml337 section 512 Nov 15 10:52 test drwxr-xr-x 6 wlgml337 section 512 Nov 11 11:45 work 2.14.3 Getting Help Help is available for the commands provided with iSQL. The HELP command without parameters outputs information on how to use help. For help on specific commands, enter HELP followed by the name of the command for which help is desired. iSQL> HELP; Use 'help [command]' Enter 'help index' for a list of command iSQL> HELP INDEX; @ EDIT QUIT / EXIT ROLLBACK ALTER HEADING SAVE AUTOCOMMIT H[ISTORY] SELECT COMMIT INSERT SPOOL CREATE LINESIZE START DELETE LOAD TIMING DESC LOBOFFSET UPDATE 2.14 Convenient User Functions 59 Examples of iSQL in Use DROP LOBSIZE VAR[IABLE] EXECUTE MOVE TERM EXPLAINPLAN PAGESIZE VERTICAL iSQL> HELP EXIT; exit; or quit; - exit iSQL 2.15 Using National Char
-
- [Altibase 5.5.1] iSQL User's Manual_KOR ㅣ 2012-09-27
- ALTIBASE HDB Tools iSQL User’s Manual Release 5.5.1 (January 16, 2013) ----------------------------------------------------------- ALTIBASE Tools iSQL User's Manual Release 5.5.1 Copyright ⓒ 2001~2011 ALTIBASE Corp. All Rights Reserved.
-
미리보기
ALTIBASE HDB Tools iSQL User’s Manual Release 5.5.1 (January 16, 2013) ----------------------------------------------------------- ALTIBASE Tools iSQL User's Manual Release 5.5.1 Copyright ⓒ 2001~2011 ALTIBASE Corp. All Rights Reserved. 본 문서의 저작권은 ㈜알티베이스에 있습니다. 이 문서에 대하여 당사의 동의 없이 무단으로 복제 또는 전용할 수 없습니다. ㈜알티베이스 152-790 서울시 구로구 구로동 182-13 대륭포스트타워Ⅱ 10층 전화: 02-2082-1114 팩스: 02-2082-1099 고객서비스포털: http://support.altibase.com homepage: http://www.altibase.com ----------------------------------------------------------- 목차 I 목 차 서문 .......................................................................................................................... i 이 매뉴얼에 대하여 ..........................................................................................................................ii 1. iSQL 이용방법 ................................................................................................1 iSQL의 개요 ......................................................................................................................................... 2 iSQL 설정 .............................................................................................................................................. 3 iSQL 커맨드 라인 옵션 .................................................................................................................. 5 iSQL 명령어 ......................................................................................................................................... 8 iSQL 관련 환경변수 ....................................................................................................................... 14 개인별 iSQL 환경 설정 ................................................................................................................ 18 2. iSQL 사용 예 ............................................................................................... 21 로그인 ................................................................................................................................................... 22 알티베이스의 구동 및 종료 ....................................................................................................... 24 접속 연결 및 해제 ......................................................................................................................... 26 데이터베이스와 객체 정보 조회.............................................................................................. 30 트랜잭션 제어................................................................................................................................... 34 파일 관리 ............................................................................................................................................ 35 SELECT 결과 포매팅 ...................................................................................................................... 41 출력 옵션 제어 ................................................................................................................................ 47 호스트 변수 ....................................................................................................................................... 56 PREPARE SQL문 수행 .................................................................................................................... 58 프로시저 생성과 실행 및 삭제 ................................................................................................ 59 함수 생성과 실행 및 삭제 ......................................................................................................... 65 사용자 편의 기능 ............................................................................................................................ 67 내셔널 캐릭터 사용법 .................................................................................................................. 69 찾아보기 .............................................................................................................. 71 II A L TI BA S E 5 i S QL U se r ’ s M a n u a l 서문 i 서문 ii ALTIBASE5 iSQL User’s Manual 이 매뉴얼에 대하여 이 매뉴얼은 데이터베이스에 접속해 데이터베이스 정보와 서버의 정보를 조회하고 제어할 수 있는 도구인 iSQL의 사용법에 대해 설명한다. 대상 사용자 이 매뉴얼은 다음과 같은 알티베이스 사용자를 대상으로 작성되었다. 데이터베이스 관리자 성능 관리자 데이터베이스 사용자 응용 프로그램 개발자 기술지원부 다음과 같은 배경 지식을 가지고 이 매뉴얼을 읽는 것이 좋다. 컴퓨터, 운영 체제 및 운영 체제 유틸리티 운용에 필요한 기본 지식 관계형 데이터베이스 사용 경험 또는 데이터베이스 개념에 대한 이해 컴퓨터 프로그래밍 경험 데이터베이스 서버 관리, 운영 체제 관리 또는 네트워크 관리 경 험 소프트웨어 환경 이 매뉴얼은 데이터베이스 서버로 알티베이스 버전 5.3.3을 사용한다는 가정 하에 작성되었다. 이 매뉴얼의 구성 이 매뉴얼은 다음과 같이 구성되어 있다. 제 1장 iSQL 이용방법 이 장은 iSQL의 개요와 제공하는 명령어 및 사용방법에 대해 설 명한다. 제 2장 iSQL 사용 예 이 장은 iSQL이 제공하는 각각의 명령어 대해 자세한 사용 예를 서문 iii 들어 설명한다. 문서화 규칙 이 절에서는 이 매뉴얼에서 사용하는 규칙에 대해 설명한다. 이 규칙을 이해하면 이 매뉴얼과 설명서 세트의 다른 매뉴얼에서 정보를 쉽게 찾을 수 있다. 여기서 설명하는 규칙은 다음과 같다. 구문 다이어그램 샘플 코드 규칙 구문 다이어그램 이 매뉴얼에서는 다음 구성 요소로 구축된 다이어그램을 사용하여, 명령문의 구문을 설명한다. 구성 요소 의미 예약어 명령문이 시작한다. 완전한 명령문이 아닌 구문 요소는 화살표로 시작한다. 명령문이 다음 라인에 계속된다. 완전한 명령문이 아닌 구문 요소는 이 기호로 종료한다. 명령문이 이전 라인으로부터 계속된다. 완전한 명령문 이 아닌 구문 요소는 이 기호로 시작한다. ; 명령문이 종료한다. SELECT 필수 항목 NOT 선택적 항목 ADD DROP 선택사항이 있는 필수 항목. 한 항목만 제공해야 한다. ASC DESC 선택사항이 있는 선택적 항목 iv ALTIBASE5 iSQL User’s Manual , ASC DESC 선택적 항목. 여러 항목이 허용된다. 각 반복 앞부분에 콤마가 와야 한다. 샘플 코드 규칙 코드 예제는 SQL, Stored Procedure, iSQL 또는 다른 명령 라인 구문들을 예를 들어 설명한다. 아래 테이블은 코드 예제에서 사용된 인쇄 규칙에 대해 설명한다. 규칙 의미 예제 [ ] 선택 항목을 표시 VARCHAR [(size)] [[FIXED |] VARIABLE] { } 필수 항목 표시. 반드시 하나 이 상을 선택해야 되는 표시 { ENABLE | DISABLE | COMPILE } | 선택 또는 필수 항목 표시의 인 자 구분 표시 { ENABLE | DISABLE | COMPILE } [ ENABLE | DISABLE | COMPILE ] . . . 그 이전 인자의 반복 표시 예제 코드들의 생략되는 것을 표 시 SQL> SELECT ename FROM employee; ENAME ----------------------- SWNO HJNO HSCHOI . . . 20 rows selected. 그 밖에 기 호 위에서 보여진 기호 이 외에 기 호들 EXEC :p1 := 1; acc NUMBER(11,2); 기울임 꼴 구문 요소에서 사용자가 지정해 야 하는 변수, 특수한 값을 제공 해야만 하는 위치 지정자 SELECT * FROM table_name; CONNECT userID/password; 소문자 사용자가 제공하는 프로그램의 요소들, 예를 들어 테이블 이름, 칼럼 이름, 파일 이름 등 SELECT ename FROM employee; 대문자 시스템에서 제공하는 요소들 또DESC SYSTEM_.SYS_INDICES_; 서문 v 는 구문에 나타나는 키워드 관련 자료 자세한 정보를 위하여 다음 문서 목록을 참조하기 바란다. Installation Guide Getting Started Guide Administrator’s Manual Replication Manual SQL Reference Stored Procedures Manual Error Message Reference 온라인 매뉴얼 알티베이스 고객서비스포털(http://support.altibase.com/)에서 국문 및 영문 매뉴얼(PDF, HTML)을 받을 수 있다. 알티베이스는 여러분의 의견을 환영합니다. 이 매뉴얼에 대한 여러분의 의견을 보내주시기 바랍니다. 사용자의 의견은 다음 버전의 매뉴얼을 작성하는데 많은 도움이 됩니다. 보내실 때에는 아래 내용과 함께 고객서비스포털(http://support.altibase.com/)로 보내주시기 바랍니다. 사용 중인 매뉴얼의 이름과 버전 매뉴얼에 대한 의견 사용자의 성함, 주소, 전화번호 이 외에도 알티베이스 기술지원 설명서의 오류와 누락된 부분 및 기타 기술적인 문제들에 대해서 이 주소로 보내주시면 정성껏 처리하겠습니다. 기술적인 부분과 관련하여 즉각적인 도움이 필요한 경우에는 기술지원센터로 연락하시기 바랍니다. 여러분의 의견에 항상 감사드립니다. iSQL 이용방법 1 1. iSQL 이용방법 2 ALTIBASE5 iSQL User’s Manual iSQL의 개요 iSQL은 알티베이스 데이터베이스에 접속하여 SQL 문과 부가적인 여러 명령어를 통해 서버에 저장되어 있는 자료를 얻고, 수정하는 작업을 수행할 수 있는 사용자 도구이다. iSQL의 주요 기능 알티베이스의 구동 및 종료 기능 알티베이스 서버의 구동 및 종료 등의 데이터 베이스 관리를 하 기 위해서 여러 개의 커맨드라인 명령어를 사용하는 대신에, iSQL 하나의 도구만을 사용하면 된다. 데이터베이스 접속 및 해제 기능 알티베이스 구동 이후 데이터베이스 접속 시 다양한 사용자명으 로의 접속 및 해제가 가능하다. 데이터베이스 객체 정보 조회 기능 iSQL에서는 데이터베이스 객체에 대한 모든 정보를 SQL문으로 조회할 수 있으며, 주요 객체에 대해서는 간편한 조회 명령어를 지원한다. SQL문 수행을 통한 데이터베이스 관리 기능 iSQL을 사용해 모든 SQL문을 수행할 수 있도록 지원하므로 트 랜잭션 제어, 데이터베이스 변경 등을 빠르고 간편하게 수행할 수 있다. 사용자 편의 기능 위의 기능을 쉽고 편리하게 수행할 수 있도록 파일 처리 기능, 에디터 기능, iSQL상에서의 쉘 명령어 수행 기능, HISTORY 기 능 등을 지원한다. iSQL 이용방법 3 iSQL 설정 iSQL은 서버에 접속하기 위해서 다음과 같은 정보가 필요하다. ALTIBASE_HOME 서버 혹은 클라이언트가 설치된 경로 server_name 알티베이스 서버가 구동되어 있는 컴퓨터 서버의 이름(또는 IP 주소) port_no TCP 또는 IPC로 접속할 때 사용할 포트 번호 user_id 데이터베이스에 등록된 사용자 ID password 사용자 ID와 일치하는 암호 NLS_USE 데이터 검색 시, 사용자에게 보여주는 문자 집합 ALTIBASE_HOME은 환경 변수로 설정하도록 되어있으며, 나머지는 커맨드 라인 옵션을 통해서 설정할 수 있도록 되어 있다. (자세한 내용은 “iSQL 커맨드 라인 옵션”을 참고한다.) ALTIBASE_HOME은 iSQL을 사용하기 위해서 반드시 설정해야 하는 환경 변수이다. 윈도우의 경우, 서버가 설치될 때 자동으로 설정되는데 클라이언트의 경우에는 사용자가 직접 설정해야 한다. 설정되지 않았을 경우에는 올바르게 동작하지 않을 수 있으므로 실행 전에 올바르게 설정되어 있는지 확인할 것을 권한다. port_no와 NLS_USE는 환경 변수 또는 서버 설정 파일(altibase.properties)을 이용해서 설정할 수도 있다. 세 가지 방법으로 모두 설정되어 있을 경우 적용 우선 순위는 다음과 같다. 1. 커맨드 라인 옵션 2. 환경 변수(ALTIBASE_PORT_NO, ALTIBASE_NLS_USE) 3. 서버 설정 파일(altibase.properties) 그러므로 이미 설정된 값과 다른 옵션으로 연결하고자 할 경우, 커맨드 라인 옵션을 사용하면 서버 설정 파일이나 환경 변수를 변경하지 않아도 된다. 옵션이 설정되어 있지 않을 경우에는 iSQL이 처음 실행될 때 옵션 입력 프롬프트를 띄우고 사용자에게서 해당 값을 입력 받는다. 이 때 바르지 않은 형식이나 유효하지 않은 값을 입력할 경우, iSQL은 올바르게 동작하지 않을 수도 있다. 4 ALTIBASE5 iSQL User’s Manual 특히 NLS_USE 옵션은 사용자가 설정하지 않았더라도 실행 시에 입력 프롬프트가 나타나지 않는다. 만약 사용자가 NLS_USE 옵션을 설정하지 않았다면 기본값인 US7ASCII를 이용해 접속을 시도한다. 이 때 데이터베이스의 캐릭터 셋이 US7ASCII이 아닐 경우에는 바르게 실행되지 않거나 사용자 데이터가 일부 깨질 수 있으므로 반드시 NLS_USE를 사용 환경에 맞는 값으로 설정해야 한다. 원활한 iSQL 사용을 위해 다음 환경 변수를 설정할 것을 권장한다. ALTIBASE_HOME : 서버 혹은 클라이언트가 설치된 경로 ALTIBASE_PORT_NO : 서버에 접속할 때 사용할 포트 번호 ALTIBASE_NLS_USE : 데이터 검색 시, 사용자에게 보여주는 문자 집합 PATH : 실행 파일이 있는 경로인 $ALTIBASE_HOME/bin 추 가 iSQL 이용방법 5 iSQL 커맨드 라인 옵션 iSQL을 실행하기 위해서는 반드시 알티베이스 서버를 먼저 구동 시켜야 한다. 옵션은 대문자 또는 소문자 모두 가능하다. isql [-H] [-S server_name] [-U user_id] [-P password] [-PORT port_no] [-UNIXDOMAIN-FILEPATH filepath] [-IPC-FILEPATH filepath] [-SILENT] [-F infile_name] [-O outfile_name] [-NLS_USE] [-NLS_NCHAR_LITERAL_REPLACE 0|1] [-prefer_ipv6] -S server_name 알티베이스 서버가 구동되어 있는 컴퓨터 서버의 이름(또는 IP 주소)을 명시한다. IPC로 접속할 때 이 옵션을 명시하면, 무시하고 에러를 반환하지 않는다. IPv4 주소 또는 IPv6 주소를 사용할 수 있다. IPv6 주소는 “[“과 “]”로 에워싸여야 한다. 예를 들어, localhost 를 명시하고자 할 때, 가능한 값은 다음과 같다. localhost (호스트 이름), 127.0.0.1 (IPv4주소), [::1] (IPv6주소) -U user_id 데이터베이스에 등록된 사용자 ID를 명시한다. -P password 사용자 ID와 일치하는 암호를 명시한다. -PORT port_no TCP 또는 IPC로 접속할 때 해당 포트 번호를 명시한다. 단 유닉스 환경에서 IPC로 접속시 생략이 가능한데, 명시하면, 무시하고 에러를 반환하지 않는다. TCP로 접속하려면 먼저 클라이언트에서 환경 변수 ‘ISQL_CONNECTION=TCP’를 설정하고, 옵션에 PORT_NO를 입력한다. 윈도우 환경에서 IPC로 접속하려면, 환경 변수 ‘ISQL_CONNECTION=IPC’를 설정하고 다음 방법 중의 하나를 사용해서 포트 번호를 설정한다. - -PORT 옵션 6 ALTIBASE5 iSQL User’s Manual - ALTIBASE_IPC_PORT_NO 환경 변수 - IPC_PORT_NO 프로퍼티 ISQL_CONNECTION 환경 변수의 값이 IPC가 아니고 -PORT 옵션을 생략한다면, ALTIBASE_PORT_NO와 PORT_NO 프로퍼티를 차례로 참조하고 모두 설정되어 있지 않다면, 포트 번호 입력 프롬프트가 출력된다. -UNIXDOMAIN-FILEPATH filepath 유닉스 환경에서 서버와 클라이언트가 유닉스 도메인 소켓으로 접속할 때 (ISQL_CONNECTION=UNIX), ALTIBASE_HOME이 서로 다르다면 유닉스 도메인의 소켓 경로가 다르게 되어 접속이 불가능하다. 이 때 서버와 클라이언트가 같은 파일 (e.g. ALTIBASE_HOME/trc/cm- unix)을 사용하도록 하면, 유닉스 도메인 통신이 가능해진다. -IPC-FILEPATH filepath 유닉스 환경에서 서버와 클라이언트가 IPC로 접속 (ISQL_CONNECTION=IPC)할 때, ALTIBASE_HOME이 서로 다르다면 유닉스 도메인의 소켓 경로가 다르게 되어 접속이 불가능하다. 이 때 ALTIBASE_HOME/trc/cm-ipc 파일을 이용하면, 유닉스 도메인 통신이 가능해져 공유 메모리의 정보를 가져올 수 있다. 그러나 이 옵션은 환경변수 ALTIBASE_IPC_FILEPATH를 설정하였다면, 생략해도 된다. -F infile_name iSQL 실행 후 바로 실행할 스크립트 파일을 명시한다. -O outfile_name iSQL 실행 후 실행한 명령들에 대한 결과들을 저장할 파일을 명시한다. 이 파일은 현재 디렉터리에 생성된다. 파일이 기존에 존재할 경우, 기존 내용 위에 겹쳐 쓴다. -H iSQL의 실행 방법을 보여준다. -SILENT silent 모드를 켜는 옵션이다. silent 모드를 켜면 Copyright 등의 부가적인 설명들을 보여주지 않는다. iSQL 이용방법 7 -NLS_USE 데이터 검색 시, 사용자에게 보여주는 문자 집합(Character Set)이다. iSQL을 실행하는 터미널의 encoding을 명시하여 준다. US7ASCII KO16KSC5601 MS949 BIG5 GB231280 UTF8 SHIFTJIS EUCJP 생략 시 환경변수 ALTIBASE_NLS_USE, altibase.properties를 차례로 참조하며, 설정되지 않았을 경우에는 기본 문자 집합 (US7ASCII)을 사용한다. -NLS_NCHAR_LITERAL_REPLACE 0 : “N” 문자가 있는지 검사하지 않고 쿼리 문 전체를 데이터베이스 문자 셋으로 변환한다. 1 : “N” 문자가 붙어있는 문자열 리터럴은 데이터베이스 문자 셋으로 변환하지 않는다. -prefer_ipv6 -S 옵션으로 호스트 이름을 입력했을 때, 접속할 IP 주소의 버전을 결정하는 옵션이다. 이 옵션을 명시하면, 호스트 이름을 IPv6 주소로 바꾸어 접속한다. 이 옵션을 명시하지 않으면, isql은 IPv4 주소로 접속한다. 선호하는 버전의 IP 주소로의 접속이 실패하면, 다른 IP 버전 주소로 접속을 다시 시도한다. 예를 들어, -S 옵션에 “localhost”를 입력하고 이 옵션을 명시하면, isql 은 처음에 IPv6 주소인 [::1]로 접속하고, 이 접속이 실패하면 IPv4 주소인 127.0.0.1로 접속을 다시 시도한다. 위의 커맨드 라인 중 -S, -U, -P 옵션이 빠져 있는 경우에는 입력 프롬프트가 출력되어 사용자에게 그 옵션값을 받는다. 8 ALTIBASE5 iSQL User’s Manual iSQL 명령어 iSQL을 실행 시키면 iSQL 명령어 실행을 위한 프롬프트가 나오고, 이곳에 iSQL 명령어들을 입력하면 그 결과를 보여주는 형태로 프로그램이 동작한다. 아래의 표에 iSQL 각각의 명령에 대해 설명하였다. 분류 종류 명령어 설명 iSQL 구 동 및 종 료 구동 $ isql [option] 쉘 상에서 이 명령어를 수행하면 iSQL이 구동된다. 사용 가능한 옵션에 대해서는 iSQL 커맨드 라인 옵션 절의 내용을 참 조한다. 프롬프트 iSQL> iSQL 프롬프트로 명령어 입력 후 ENTER 키를 입력한다. 종료 EXIT; QUIT; iSQL을 종료한다. 알티베이 스의 구동 및 종료 알티베이 스 구동 STARTUP PRE-PROCESS, PROCESS, CONTROL, META, SERVICE 중 하나 의 옵션을 이용하여 알티베이스의 다단계 구동을 수행한다. 알티베이 스 종료 SHUTDOWN NORMAL, IMMEDIATE, ABORT 중 하 나의 옵션을 사용하여 알티베이스를 종료 한다. 데이터베 이스 접속 및 해제 다른 사용 자로 서버 에 접속 CONNECT [logon] [nls] [AS sysdba]; logon: user1/pass1 nls: NLS=character_set iSQL에서 데이터베이스 접속 후 다른 사 용자로 접속하기 위한 명령어로 패스워드 pass1을 가진 user1이라는 사용자로 접 속한다. 접속이 성공하면 이전 세션과 관 련된 정보는 지워진다. AS 절은 SYS 사용자가 sysdba 관리자 모드로 서버에 접속하는 것을 허용한다. sysdba로 접속하는 것은 한 사용자만 허 용된다. nls 옵션은 문자 집합을 설정한다. 문자 집합에 대한 자세한 설명은 위의 절 iSQL 커맨드 라인 옵션: -NLS_USE 옵 션을 참조하기 바란다. 접속해제 DISCONNECT; 현재 세션을 종료하고 서버와의 연결을 끊는다. 데이터베 이스 객체 성능 뷰 목록 보기 SELECT * FROM V$TAB; 시스템이 제공하는 모든 성능 뷰 목록을 보여준다. 이 명령어는 iSQL에서만 사용 iSQL 이용방법 9 분류 종류 명령어 설명 정보 조회 가능 하다. 테이블 목록 보기 SELECT * FROM TAB; 현재 생성된 테이블의 목록을 보여준다. 이 명령어는 iSQL에서만 사용가능 하다. 테이블 구조 보기 DESC samp; samp 테이블의 구조를 보여준다. 시퀀스 정보 보기 SELECT * FROM V$SEQ; SYS 계정으로 서버에 접속한 경우 모든 시퀀스 들의 정보를 보여준다. 일반 사용자로 서버에 접속한 경우는 그 사용자가 생성한 시퀀스들에 대한 정보만 보여준다. 이 명령어는 iSQL에서만 사용가능 하다. 트랜잭션 제어 트랜잭션 모드 설정 AUTOCOMMIT ON; AUTOCOMMIT OFF; 트랜잭션 커밋을 자동으로 할 것인지를 결정한다. 기본값: ON 기타 SET 기능 SET PLANCOMMIT ON; SET PLANCOMMIT OFF; AUTOCOMMIT OFF 모드에서 EXPLAIN PLAN이 ON (또는 ONLY) 조건일 때, DESC, SELECT * FROM TAB; 또는 SELECT * FROM seq_name; 등과 같은 명령어를 수행했 을 때 자동으로 commit 할지를 결정한 다. 기본값: OFF 파일 관리 파일로 자 료 출력 SPOOL filename; 화면에 보여지는 결과를 filename에 기 록하기 시작한다. SPOOL OFF; 화면에 보여지는 결과를 filename에 기 록하던 것을 중지한다. sql script 의 실행 START file_name; script 파일을 읽어, 파일 내의 SQL문들 을 순차적으로 수행한다. @ file_name; iSQL 프롬프트 상에서 수행 시 start와 동일한 기능을 갖는다. @@ file_name; 스크립트 파일 안에서 사용될 때 호출을 한 스크립트 파일이 위치하는 디렉터리에 서 파일을 찾아서 수행한다. 10 ALTIBASE5 iSQL User’s Manual 분류 종류 명령어 설명 SQL문 파 일 저장 SAVE abc.sql; 현재 iSQL 버퍼에 있는 명령어 중 가장 마지막 명령어가 파일로 저장된다. SQL문의 load LOAD abc.sql; 파일에 저장되어 있는 명령어 중 가장 첫 번째 명령어가 명령어 버퍼의 마지막으로 로드된다. DML문을 파일로 저 장 SET QUERYLOGGING ON; SET QUERYLOGGING OFF: INSERT, UPDATE, DELTE, MOVE 등 의 DML문 실행 시 이를 $ALTIBASE_HOME/trc/isql_query.log 에 기록한다. 질의문 편 집 ED 임시 파일을 생성하고 편집 ED filename[.sql] 기존 파일 또는 새로운 파일을 편집 2ED 또는 2 ED 히스토리 목록에 있는 번호가 2인 질의문 을 편집한다. 출력 옵션 제어 Select 결 과의 칼럼 포맷 팅 SET LINESIZE 100; select 결과 출력 시 디스플레이 되는 한 라인의 사이즈를 설정한다. 10 에서 32767 사이의 값이어야 한다. 기본값: 80 Select 결 과의 Clob 칼럼 포맷 팅 SET LOBSIZE 10; CLOB 칼럼을 출력 시 디스플레이 되는 데이터의 길이를 설정한다. 기본값: 80 SET LOBOFFSET 3; CLOB 칼럼을 출력 시 디스플레이 되는 데이터의 오프셋을 설정한다. 기본값: 0 Select 결 과 건수 출력 SET FEED[BACK] ON; SET FEED[BACK] OFF; SET FEED[BACK] n; 쿼리 실행결과 건수의 출력여부를 설정한 다. select 결 과의 row 포매 팅 SET PAGESIZE 10; select 결과 레코드들을 몇 개 단위로 출 력할지를 결정하는 명령어로 `0`으로 설정 할 경우 결과 레코드 전체를 한꺼번에 출 력한다. 기본값: 0 select 결 과의 헤더 유무 SET HEADING ON; SET HEADING select 결과 출력 시 헤더 출력 유무 기본값: ON iSQL 이용방법 11 분류 종류 명령어 설명 OFF; select 결 과 칼럼의 출력 사이 즈 조절 SET COLSIZE N; CHAR, VARCHAR 타입 칼럼의 select 결과 출력 시 출력 값 사이즈 설정 기능 SQL문 실 행시간 SET TIMING ON; SET TIMING OFF; SQL 명령 실행에 걸린 시간 출력유무 기본값: OFF SQL문 실 행시간 출 력 단위 설정 SET TIMESCALE SEC; SET TIMESCALE MILSEC; SET TIMESCALE MICSEC; SET TIMESCALE NANSEC; SQL문의 쿼리 수행 시간 단위를 초, 밀 리초, 마이크로초, 나노초 등으로 설정한 다. foreign key 정보 출력의 유 무 SET FOREIGNKEYS ON; SET FOREIGNKEYS OFF; 테이블 구조(DESC)를 볼 때 외래 키 정 보 포함 출력 여부 설정. 기본값: OFF 스크립트 실행 결과 의 출력 유무 SET TERM ON; SET TERM OFF; 스크립트 파일 실행의 결과를 화면상에 보여줄지를 결정한다. 기본값: ON 실행 계획 트리 출력 ALTER SESSION EXPLAIN PLAN = ON; ALTER SESSION EXPLAIN PLAN = ONLY; ALTER SESSION EXPLAIN PLAN = OFF; SELECT문에 대한 실행 계획의 출력 여 부를 설정한다. 기본값: OFF SELECT 결과 출력 SET VERTICAL ON; 레코드를 조회할 때 이 값을 ON으로 설 정하면, SELECT의 결과가 세로로 보여 12 ALTIBASE5 iSQL User’s Manual 분류 종류 명령어 설명 방향 SET VERTICAL OFF; 진다. 기본값: OFF iSQL 화면 설정 값 보기 SHOW LINESIZE 현재의 LINESIZE 값을 보여준다. SHOW COLSIZE 현재의 COLSIZE 값을 보여준다. SHOW LOBOFFSET 현재의 LOBOFFSET 값을 보여준다. SHOW LOBSIZE 현재의 LOBSIZE 값을 보여준다. SHOW PAGESIZE 현재의 PAGESIZE 값을 보여준다. SHOW PLANCOMMIT AUTOCOMMIT OFF 모드에서 명령어를 수행할 때 자동으로 커밋되는 여부를 보 여준다. SHOW QUERYLOGGING DML 문이 실행될 때 $ALTIBASE_HOME/trc/isql_query.log 에 기록되는지 여부를 보여준다. SHOW FEEDBACK 현재 설정된 FEEDBACK 값을 보여준 다. SHOW HEADING 현재의 HEADING 설정 여부를 보여준 다. SHOW TERM 현재 TERM 설정 여부를 보여준다. SHOW TIMING 현재의 TIMING 설정 여부를 보여준다. SHOW TIMESCLAE 현재의 SQL문의 쿼리 수행 시간 단위가 무엇으로 설정되었는지를 보여준다. SHOW USER 현재 사용자를 보여준다. SHOW FOREIGNKEYS 현재의 외래 키 설정 여부를 보여준다. SHOW VERTICAL 현재의 SELECT 결과가 세로로 출력되는 지 여부를 보여준다. SHOW ALL 현재 세션의 화면 설정 값을 보여준다. 변수 및 Prepared SQL문 변수 선언 VAR p1 INTEGER; INTEGER 타입의 변수 p1을 선언한다. VARIABLE p2 CHAR(10); CHAR 타입의 변수 p2를 선언한다. 변수에 값 EXECUTE :p1 := 변수 p1에 100을 할당한다. iSQL 이용방법 13 분류 종류 명령어 설명 할당 100; EXEC :p2 := 'abc'; 변수 p2에 ‘abc’를 할당한다. 변수 보기 PRINT VAR[IABLE]; 현재 선언된 변수들을 보여준다. PRINT p1; 변수 p1의 타입과 값을 보여준다. Prepared SQL문 수 행 PREPARE SQL문; Prepared SQL문으로 질의 최적화 과정 과 실행 과정을 나누어 수행하게 한다. iSQL에서의 SQL문 수행은 기본적으로 최적화와 실행을 한번에 수행하는 Direct Execution 방법이다. iSQL 상에서 두 가지 수행 방법에 대한 결과에는 차이가 없으며 Prepared SQL 문의 경우 변수를 사용해 값을 바인딩 하 여 SQL문 수행이 가능하다. 사용자 편 의 기능 히스토리 목록 보기 HISTORY; H; 현재 iSQL buffer에 저장되어 있는 명령 어들의 목록을 보여준다. 반복 실행 / 현재 iSQL buffer의 명령어를 반복하여 실행한다. 가장 최근에 수행한 명령어가 다시 실행된다. 2/ HISTORY 명령에 의해 나타난 목록의 번호가 2인 명령어가 실행된다. 쉘 명령 실행 ! shell command 느낌표 다음에 쉘 명령을 입력하면 iSQL 에서 바로 쉘 명령이 실행된다. 주석 /* comment */ -- comment 여러 라인 주석 한 라인 주석 도움말 HELP; HELP INDEX; HELP EXIT; 도움말 사용법 명령어 리스트 출력 EXIT 명령어에 대한 설명 14 ALTIBASE5 iSQL User’s Manual iSQL 관련 환경변수 ALTIBASE_HOME 패키지가 설지된 디렉터리를 설정한다. MS 윈도우의 경우, 서버 설치 시에 자동으로 설정되지만, 클라이언트 설치 시에는 서버를 위한 환경 변수와 충돌이 있을 수 있으므로 자동으로 설정되지 않는다. 클라이언트 설치 시에는 사용자가 직접 설정해야 한다. ISQL 사용을 위해 반드시 설정해야 하는 환경변수이다. <예제> Windows (Server): ‘set ALTIBASE_HOME=C:/Program Files/Altibase/Altibase5_Server/altibase_home’, Windows (Client): ‘set ALTIBASE_HOME=C:/Program Files/Altibase/Altibase5_Client/altibase_home_client’) ALTIBASE_PORT_NO 접속할 서버의 포트 번호이다. -PORT 옵션 또는 altibase.properties 파일 내의 프로퍼티를 통해서 지정할 수도 있다. 포트 번호 설정의 우선 순위는 -PORT 옵션, 환경변수 ALTIBASE_PORT_NO, altibase.properties 파일 내의 프로퍼티 순이며 아무것도 설정되지 않았을 경우에는 포트 번호 입력 프롬프트가 출력된다. ALTIBASE_NLS_USE 데이터 검색 시 사용자에게 보여주기 위해 사용되는 문자 집합이다. US7ASCII KO16KSC5601 MS949 BIG5 iSQL 이용방법 15 GB231280 UTF8 SHIFTJIS EUCJP -NLS_USE 옵션 또는 altibase.properties파일 내의 프로퍼티를 통해서 지정할 수도 있다. NLS_USE 설정의 우선 순위는 -NLS_USE 옵션, 환경 변수 ALTIBASE_NLS_USE, altibase.properties 파일 내의 프로퍼티 순이며 설정되지 않았을 경우에는 기본 문자 집합(US7ASCII)을 사용한다. ALTIBASE_NLS_NCHAR_LITERAL_REPLACE 기본적으로 클라이언트는 쿼리 문 전체를 데이터베이스 문자 셋으로 변환하여 전송한다. 그러나, 특정 리터럴에 대해 이런 동작을 막으려면, 이 환경 변수의 값을 1로 설정하고 그 리터럴 앞에 “N” 문자를 덧붙이면 된다. 즉, NCHAR 리터럴로 만드는 것이다. 이 환경 변수의 값이 1일 때, 클라이언트는 쿼리 문 내의 모든 리터럴 앞에 “N” 문자가 있는지 찾는다. 만약 찾게 되면 클라이언트는 그 리터럴을 데이터베이스 문자 셋으로 변환하지 않고 그대로 전송하며 서버가 직접 내셔널 문자 셋으로 변환한다. 이것은 데이터베이스 문자 셋과는 다른 인코딩이 필요한 NCHAR 타입 데이터를 사용하고자 할 때 유용하다. 0: “N” 문자가 있는지 검사하지 않고 쿼리 문 전체를 데이터베이 스 문자 셋으로 변환한다. 1: “N” 문자가 붙어있는 NCHAR 리터럴은 데이터베이스 문자 셋으로 변환하지 않는다. 이 값을 1로 설정하는 것은 클라이언트의 비용이 크게 발생하므로, 사용시 주의가 필요하다. ISQL_CONNECTION 알티베이스를 클라이언트-서버 구조로 운영할 때, 사용자는 응용 시스템의 구성에 적합한 클라이언트-서버 프로토콜을 선택하여 환경 변수를 설정할 수 있다. 알티베이스는 TCP/IP, IPC와 UNIX DOMAIN 소켓 프로토콜을 제공한다. 알티베이스 서버와 통신하기 위한 기본값은 TCP/IP 프로토콜이다. 16 ALTIBASE5 iSQL User’s Manual 단, IPC 프로토콜을 이용할 경우엔 알티베이스 프로퍼티들 중에서 IPC 채널과 관련된 프로퍼티들의 값(IPC_CHANNEL_COUNT)도 함께 고려해야 한다. 예) IPC 사용시 환경 변수 설정 CSH: setenv ISQL_CONNECTION IPC SH: ISQL_CONNECTION=IPC; export ISQL_CONNECTION ISQL_BUFFER_SIZE 쿼리를 저장할 버퍼의 크기를 환경변수를 이용하여 지정할 수 있다. 예) CSH: setenv ISQL_BUFFER_SIZE 128000 SH: ISQL_BUFFER_SIZE = 128000; export ISQL_BUFFER_SIZE ALTIBASE_DATE_FORMAT Date 데이터 타입인 data를 select 시 기본 날짜 형식인 YYYY/MM/DD HH:MI:SS을 환경변수 ALTIBASE_DATE_FORMAT을 설정하여 새로운 날짜 형식으로 나타낼 수 있다. 예) Born, Korn, 또는 Bash Shell의 경우 export ALTIBASE_DATE_FORMAT=’DD-MON-YYYY’ ISQL_EDITOR 기본 편집기 (윈도우: 메모장, 그 외: /bin/vi)를 바꾸기 위한 환경변수를 설정할 수 있다. 예) CSH: setenv ISQL_EDITOR /usr/bin/ed SH: ISQL_EDITOR=/usr/bin/ed; export ISQL_EDITOR ALTIBASE_IPC_FILEPATH 유닉스 환경에서 서버와 클라이언트가 IPC로 접속할 때 ALTIBASE_HOME이 다른 경우, 유닉스 도메인의 소켓 경로가 일치하지 않아 접속할 수 없다. 이 때 클라이언트 측의 ALTIBASE_IPC_FILEPATH 환경 변수 또는 -IPC-FILEPATH iSQL 이용방법 17 옵션을 서버의 $ALTIBASE_HOME/trc/cm-ipc파일로 설정하여 서버와 클라이언트가 같은 소켓 파일을 사용하도록 하면, IPC 접속이 가능하다. 18 ALTIBASE5 iSQL User’s Manual 개인별 iSQL 환경 설정 iSQL 사용자들은 특별한 방법으로 iSQL 환경을 설정하고 각 세션에서 그러한 설정을 다시 사용할 수 있다. 예를 들어, OS 파일을 통하여 질의 결과마다 현재 시간을 출력할 수 있도록 사용자가 원하는 출력 서식 형태로 만들 수 있다. 이러한 파일은 다음과 같이 두 가지로 나눌 수 있다. glogin.sql iSQL 시작 시의 초기화 작업을 위하여 DB 관리자에 의해 생성된 전역 스크립트 파일인 glogin.sql의 사용을 지원한다. iSQL은 임의의 사용자가 iSQL을 기동할 때 마다 이 스크립트를 실행한다. 전역 파일은 DB 관리자가 모든 사용자들에게 특별한 사이트에서 iSQL 환경을 설정할 수 있도록 한다. 전역 스크립트 파일은 $ALTIBASE_HOME/conf 밑에 위치한다. login.sql iSQL은 또한 glogin.sql 후에 실행되는 login.sql 파일도 지원한다. 만약, glogin.sql 파일과 login.sql 파일이 모두 존재하는 경우 iSQL 구동 시 glogin.sql이 실행된 후 login.sql이 실행되므로 login.sql에 있는 명령어들로 우선수행 (override) 된다. 하나의 유닉스 계정을 여러 명이 사용할 경우에는 glogin.sql 파일을 개인적인 용도로 수정하기가 불가능할 수도 있다. 이런 경우 일반 사용자는 SQL 명령어들, 저장 프로시저, 또는 iSQL 명령어들을 각자의 개인용 작업 디렉터리 내에 login.sql 파일에 첨가할 수 있다. 사용자가 iSQL을 구동할 때, iSQL은 자동적으로 현재 디렉터리에서 login.sql 파일을 찾고, 그 안에 명령어들을 수행한다. login.sql 파일은 iSQL 초기 설정이나 각각의 세션에 대한 동작을 조정할 수 없다. LOGIN 파일 변경 사용자는 임의의 다른 스크립트들처럼 LOGIN 파일을 변경할 수 있다. 다음은 임의의 사용자(user1)가 autocommit mode를 off로 iSQL 이용방법 19 변경하고 SQL 문들을 실행하기 위하여 LOGIN 파일을 작성한 예이다. $ vi glogin.sql AUTOCOMMIT ON SET HEADING OFF SELECT sysdate FROM dual; $ vi login.sql AUTOCOMMIT OFF; SET HEADING ON DROP TABLE savept; CREATE TABLE savept(num INTEGER); INSERT INTO savept VALUES(1); SAVEPOINT sp1; INSERT INTO savept VALUES(2); SELECT * FROM savept; ROLLBACK TO SAVEPOINT sp1; SELECT * FROM savept; COMMIT; $ isql ------------------------------------------------------- Altibase Client Query utility. Release Version 5.5.1.1 Copyright 2000, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : user1 Write Password : ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 Set autocommit on success. -> 먼저 glogin.sql을 실행 28-DEC-2004 -> heading off 1 row selected. Set autocommit off success. -> glogin.sql이 실행된 후 사용자의 현재 작업 디렉터리에서 login.sql을 실행 Drop success. Create success. 1 row inserted. Savepoint success. -> autocommit mode off 에서만 실행 가능 1 row inserted. SAVEPT.NUM -> heading on 20 ALTIBASE5 iSQL User’s Manual -------------- 1 2 2 rows selected. Rollback success. SAVEPT.NUM -------------- 1 1 row selected. Commit success. iSQL 사용 예 21 2. iSQL 사용 예 이 장은 iSQL을 이용하여 데이터베이스를 다루는 몇 가지 예를 설명한다. 22 ALTIBASE5 iSQL User’s Manual 로그인 iSQL 유틸리티를 사용하기 위해서는 먼저 로그인 과정을 거쳐야 하는데, 커맨드 라인 상에서 직접 연결 정보를 입력하는 방법과 입력 프롬프트 상에서 입력하는 방법이 있다. isql -U userID -P password [-SYSDBA] 또는 isql [-SYSDBA] 서버와 연결하기 위한 부가 정보로는 서버 이름(-S), 사용자 ID(-U), 패스워드(-P)가 있다. 사용자 ID와 패스워드는 대소문자를 구별하지 않는다. SYS 사용자가 관리자 모드로 iSQL 유틸리티를 사용하기 위해서는 - SYSDBA 옵션을 사용한다. SYSDBA 옵션으로 원격에서도 접속이 가능하다. 제한 사항 SYSDBA 모드로 접속하는 것은 한 명의 사용자만 허용된다. 2 명 이상의 사용자가 동시에 SYSDBA 모드로 접속할 수 없다. 원격에서 SYSDBA 모드로 접속할 수 있지만, DBMS를 구동할 수는 없다. 시스템 권한에 대한 자세한 정보는 SQL Reference 을 참조하기 바란다. iSQL 사용 중 발생하는 에러에 대한 자세한 정보는 Error Message Reference를 참조하기 바란다. $ isql -U sys -P manager [-SYSDBA] 또는 $ isql [-sysdba] ------------------------------------------------------- Altibase Client Query utility. Release Version 5.5.1.1 Copyright 2000, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- Write Server Name (default:127.0.0.1) : iSQL 사용 예 23 Write UserID : sys Write Password : manager -> 화면에는 암호가 나타나지 않는다. ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL(sysdba)> -> iSQL이 서버와 연결된 상태이며, 여기에서 SQL, iSQL, PSM 명령등을 입력하여 실행할 수 있다. 24 ALTIBASE5 iSQL User’s Manual 알티베이스의 구동 및 종료 알티베이스의 구동 및 종료는 iSQL을 사용해 수행한다. 알티베이스 구동 알티베이스를 구동시키기 위해서는 데이터베이스 생성 시와 마찬가지로 우선 isql을 -sysdba 옵션으로 띄워야 한다. * 알티베이스의 startup 명령어는 알티베이스(isql 포함)를 설치한 유닉스 계정으로만 수행이 가능하다. 다음은 iSQL를 이용한 알티베이스 구동 예제이며 알티베이스 구동에 대한 자세한 설명은 Administrator’s Manual 제2장 알티베이스 구동 및 종료의 내용을 참조한다. $ isql -s 127.0.0.1 -u sys -p manager -sysdba ------------------------------------------------------- Altibase Client Query utility. Release Version 5.5.1.1 Copyright 2000, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 [Connected to idle instance] iSQL(sysdba)> startup service Connecting to the DB server... Connected. TRANSITION TO PHASE : PROCESS TRANSITION TO PHASE : CONTROL TRANSITION TO PHASE : META [SM] Recovery Phase - 1 : Preparing Database : Dynamic Memory Version => Parallel Loading [SM] Recovery Phase - 2 : Loading Database [SM] Recovery Phase - 3 : Skipping Recovery Threads... Refining Disk Table [SM] Refine Memory Table : ........................................................ [SUCCESS] [SM] Rebuilding Indices [Total Count:100] .................................. [SUCCESS] TRANSITION TO PHASE : SERVICE [CM] Listener started : TCP on port 20300 iSQL 사용 예 25 [CM] Listener started : UNIX [RP] Initialization : [PASS] --- STARTUP Process SUCCESS --- Command execute success. 알티베이스 종료 현재 구동중인 알티베이스 서버를 종료하려면 SHUTDOWN 명령어를 사용한다. 다음은 iSQL를 이용한 알티베이스 종료 예제이며 알티베이스 종료에 대한 자세한 설명은 Administrator’s Manual 제2장 알티베이스 구동 및 종료의 내용을 참조한다. iSQL(sysdba)> shutdown normal Ok..Shutdown Proceeding.... TRANSITION TO PHASE : Shutdown Altibase [RP] Finalization : PASS shutdown normal success. 26 ALTIBASE5 iSQL User’s Manual 접속 연결 및 해제 접속 연결 명시된 사용자 ID로 알티베이스에 연결한다. 첫 연결 실패 시 CONNECT 명령어는 사용자 ID나 패스워드를 다시 프롬프트(prompt) 하지 않는다. CONNECT [logon] [nls] [AS SYSDBA]; logon: userID[/password] nls: NLS=character_set userID/password 알티베이스에 연결하고자 하는 사용자의 id와 패스워드 NLS=character_set 문자집합 iSQL> CONNECT sys/manager NLS=US7ASCII Connect success. AS SYSDBA AS 절은 SYS 사용자가 sysdba 관리자 모드로 서버에 접속하는 것을 허용한다. CONNECT가 성공하면 현재의 세션을 종료하고 명시된 사용자 ID와 패스워드, altibase.properties 내의 프로퍼티 정보를 사용해서 서버에 접속한다. 따라서 이전의 세션 정보는 없어진다. 예를 들어 altibase.properties의 AUTOCOMMIT 모드가 TRUE였고, iSQL에서 AUTOCOMMIT 모드를 FALSE로 변경하여 쿼리를 수행하다가 이 CONNECT문을 수행하였다면 AUTOCOMMIT 모드는 altibase.properties 의 AUTOCOMMIT 프로퍼티에 의하여 TRUE로 변경된다. CONNECT가 실패한다면 이전의 세션은 종료되고 서버와의 연결이 끊어진 상태가 된다. 즉, 이후에 수행되는 SQL문의 결과는 모두 “Not connected.” 이다. 만약, 다시 서버와 연결을 시도할 때는 CONNECT userID/password [AS SYSDBA];를 수행한다. iSQL 사용 예 27 $ isql ------------------------------------------------------- Altibase Client Query utility. Release Version 5.5.1.1 Copyright 2000, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : SYS Write Password : ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL> SHOW USER; User : SYS iSQL> CREATE USER altiadmin IDENTIFIED BY altiadmin1234; Create success. iSQL> CONNECT altiadmin/altiadmin1234; Connect success. iSQL> SHOW USER; User : ALTIADMIN iSQL> CREATE TABLE altitbl(i1 INTEGER, i2 CHAR(5)); Create success. iSQL> SELECT * FROM tab; TABLE NAME TYPE --------------------------------------------- ALTITBL TABLE 1 row selected. iSQL> CONNECT sys/manager; Connect success. iSQL> SHOW USER; User : SYS iSQL> CREATE TABLE systbl(i1 INTEGER, i2 CHAR(5)); Create success. iSQL> SELECT * FROM tab; USER NAME TABLE NAME TYPE ----------------------------------------------- SYSTEM_ SYS_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINTS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINT_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_DATABASE_ SYSTEM TABLE SYSTEM_ SYS_GRANT_OBJECT_ SYSTEM TABLE SYSTEM_ SYS_GRANT_SYSTEM_ SYSTEM TABLE SYSTEM_ SYS_INDEX_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_INDICES_ SYSTEM TABLE SYSTEM_ SYS_PRIVILEGES_ SYSTEM TABLE 28 ALTIBASE5 iSQL User’s Manual SYSTEM_ SYS_PROCEDURES_ SYSTEM TABLE SYSTEM_ SYS_PROC_PARAS_ SYSTEM TABLE SYSTEM_ SYS_PROC_PARSE_ SYSTEM TABLE SYSTEM_ SYS_PROC_RELATED_ SYSTEM TABLE SYSTEM_ SYS_REPLICATIONS_ SYSTEM TABLE SYSTEM_ SYS_REPL_HOSTS_ SYSTEM TABLE SYSTEM_ SYS_REPL_ITEMS_ SYSTEM TABLE SYSTEM_ SYS_TABLES_ SYSTEM TABLE SYSTEM_ SYS_TBS_USERS_ SYSTEM TABLE SYSTEM_ SYS_USERS_ SYSTEM TABLE SYSTEM_ SYS_VIEWS_ SYSTEM TABLE SYSTEM_ SYS_VIEW_PARSE_ SYSTEM TABLE SYSTEM_ SYS_VIEW_RELATED_ SYSTEM TABLE SYSTEM_ SYS_XA_HEURISTIC_TRANS_ SYSTEM TABLE ALTIADMIN ALTITBL TABLE SYS CUSTOMER TABLE SYS DEPARTMENT TABLE SYS DUAL TABLE SYS EMPLOYEE TABLE SYS GOODS TABLE SYS ORDERS TABLE SYS SAVEPT TABLE SYS SYSTBL TABLE 32 rows selected. 접속 해제 현재 세션을 종료하고 서버와의 연결을 끊는다. 이후에 수행되는 SQL문의 결과는 모두 “Not connected.”이며, 다시 서버와 연결을 시도할 때는 CONNECT userID/password;를 수행한다. DISCONNECT; iSQL> INSERT INTO systbl VALUES(1, 'A1'); 1 row inserted. iSQL> INSERT INTO systbl VALUES(2, 'A2'); 1 row inserted. iSQL> SELECT * FROM systbl; SYSTBL.I1 SYSTBL.I2 -------------------------- 1 A1 2 A2 iSQL 사용 예 29 2 rows selected. iSQL> DISCONNECT; Disconnect success. iSQL> INSERT INTO systbl VALUES(3, 'A3'); [ERR-91020 : No Connection State] iSQL> SELECT * FROM systbl; [ERR-91020 : No Connection State] iSQL> CONNECT sys/manager; Connect success. 30 ALTIBASE5 iSQL User’s Manual 데이터베이스와 객체 정보 조회 성능 뷰 조회 성능 뷰는 서버의 상태 및 데이터베이스 정보를 조회할 수 있는 데이터 딕셔너리 테이블의 일종으로 알티베이스가 제공하는 성능 뷰의 목록을 확인하기 위해서는 다음 명령어를 사용한다. iSQL> SELECT * FROM V$TAB; TABLE NAME TYPE --------------------------------------------- V$ALLCOLUMN PERFORMANCE VIEW V$ARCHIVE PERFORMANCE VIEW V$BUFFPOOL_STAT PERFORMANCE VIEW V$DATABASE PERFORMANCE VIEW V$DATAFILES PERFORMANCE VIEW V$DISKGC PERFORMANCE VIEW V$DISKTBL_INFO PERFORMANCE VIEW V$FLUSHINFO PERFORMANCE VIEW . . 알티베이스가 제공하는 전체 성능 뷰의 목록과 칼럼의 의미 등은 General Reference의 데이터 딕셔너리 설명을 참조한다. 각 성능 뷰의 데이터는 일반 테이블 조회와 동일한 SELECT문을 사용하여 조회할 수 있으며 조인 등을 사용해 다양한 형태로 결과를 출력할 수 있다. 테이블 목록 보기 데이터베이스에 존재하는 모든 테이블에 대한 정보를 알고 싶으면 아래와 같은 명령을 사용하면 된다. sys_tables_ 메타 테이블은 알티베이스에서 제공하는 데이터베이스 카탈로그 정보를 수록하는 시스템 내부 테이블이다. iSQL> SELECT * FROM system_.sys_tables_; . . iSQL> SELECT * FROM tab; -> 이 명령어는 iSQL 에서만 사용가능. iSQL 사용 예 31 USER NAME TABLE NAME TYPE ----------------------------------------------- . .. 테이블 구조 보기 사용자가 생성한 테이블에 관한 정보를 알고 싶으면 아래와 같은 명령을 사용한다. DESC table_name; CREATE TABLE department ( DNO SMALLINT PRIMARY KEY, DNAME CHAR(30) NOT NULL, DEP_LOCATION CHAR(9), MGR_NO INTEGER ); iSQL> DESC department; -> table_name: 테이블 정보(테이블 구조)를 알고 싶은 테이블명. [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ----------------------------------------------------------- NAME TYPE IS NULL ----------------------------------------------------------- DNO SMALLINT FIXED NOT NULL DNAME CHAR(30) FIXED NOT NULL DEP_LOCATION CHAR(9) FIXED MGR_NO INTEGER FIXED [ INDEX ] ----------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- __SYS_IDX_ID_122 BTREE UNIQUE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- DNO 시퀀스 정보 보기 데이터베이스에 존재하는 모든 시퀀스에 대한 정보를 알고 싶으면 32 ALTIBASE5 iSQL User’s Manual 아래와 같은 명령을 사용하면 된다. SELECT * FROM seq; iSQL> CONNECT sys/manager; Connect success. iSQL> CREATE USER user1 IDENTIFIED BY user1; Create success. iSQL> CONNECT user1/user1; Connect success. iSQL> CREATE SEQUENCE seq1 MAXVALUE 100 CYCLE; Create success. iSQL> CREATE SEQUENCE seq2; Create success. iSQL> CONNECT sys/manager; Connect success. iSQL> CREATE SEQUENCE seq2 START WITH 20 INCREMENT BY 30; Create success. iSQL> CREATE SEQUENCE seq3 CACHE 40; Create success. iSQL> SELECT * FROM seq; -> SYS 계정으로 데이터베이스에 접속한 경우 생성된 모든 sequence 들의 정보를 출력한다. USER_NAME -------------------------------------------- SEQUENCE_NAME CURRENT_VALUE INCREMENT_BY ------------------------------------------------ MIN_VALUE MAX_VALUE CYCLE CACHE_SIZE ------------------------------------------------ SYS SEQ2 20 30 1 9223372036854775806 NO 20 SYS SEQ3 1 1 1 9223372036854775806 NO 40 USER1 SEQ1 1 1 1 100 YES 20 USER1 SEQ2 1 1 1 9223372036854775806 NO 20 4 rows selected. iSQL 사용 예 33 iSQL> CONNECT user1/user1; Connect success. iSQL> SELECT * FROM seq; -> user1이 생성한 모든 sequence 들의 정보를 출력한다. SEQUENCE_NAME CURRENT_VALUE INCREMENT_BY ------------------------------------------------ MIN_VALUE MAX_VALUE CYCLE CACHE_SIZE ------------------------------------------------ SEQ1 1 1 1 100 YES 20 SEQ2 1 1 1 9223372036854775806 NO 20 2 rows selected. 34 ALTIBASE5 iSQL User’s Manual 트랜잭션 제어 트랜잭션 모드 설정 한 번 명령어를 수행할 때마다 자동으로 commit 할 것인지 여부를 결정하는 기능이다. iSQL> AUTOCOMMIT OFF; -> 사용자가 commit 하기 전에는 commit 되지 않음 Set autocommit off success. iSQL> AUTOCOMMIT ON; -> 명령어를 수행할 때마다 자동으로 commit Set autocommit on success. PLANCOMMIT SET PLANCOMMIT ON/OFF; autocommit off (non-autocommit) 모드에서 explain plan이 on (또는 only) 조건일 때, desc, select * from tab; 또는 select * from seq; 등과 같은 명령어를 수행했을 때 자동으로 commit 할지를 결정하는 기능이다. 기본값은 OFF 이다. * 참고: 기본값이 OFF 이므로 autocommit off 세션에서 explain plan이 on (또는 only) 조건일 때 알티베이스는 위의 명령어(desc, select * from tab; 또는 select * from seq;)를 자동 commit 하지 않고 오류 메시지를 발생한다. 이 값이 ON이면, iSQL은 이런 명령어들을 실행한 후 commit을 수행해서 에러가 발생하지 않도록 한다. iSQL 사용 예 35 파일 관리 작업 결과 저장 iSQL을 통해 작업한 결과를 지정한 파일로 저장하는 기능을 제공한다. 다음과 같이 spool 명령을 이용하면 지정한 book.txt 파일에 작업한 결과가 저장된다. 이 기능을 해제하고 싶으면 SPOOL OFF 명령을 사용한다. iSQL> SPOOL book.txt Spool start. [book.txt] -> 이후의 모든 명령과 그 결과들이 book.txt 파일에 저장된다. 이 파일은 현재 디렉터리에 생성된다. iSQL> SPOOL OFF Spool Stop -> 더 이상 명령과 그 결과들을 파일에 저장하지 않는다. 스크립트 파일 실행 @ 명령어 @file_name[.sql] 또는 START file_name[.sql] file_name[.sql]: 수행 될 스크립트 파일, 확장자를 생략하면 iSQL은 기본 스크립트 파일 확장자(.sql)로 간주한다. iSQL 명령어와 SQL구문들이 저장된 스크립트 파일을 실행하면, 한번에 파일내의 명령어들을 순차적으로 실행한다. @ 명령어는 START와 같은 기능을 갖는다. 스크립트 파일내의 exit 또는 quit 명령어는 iSQL을 종료시킨다 . 스크립트 파일내에는 일반적으로 SQL문, iSQL 명령어, 또는 Stored Procedure 블록 등이 포함될 수 있다. 다음은 $ALTIBASE_HOME/sample/APRE/schema 디렉터리에 있는 스크립트 schema.sql을 현재 디렉터리에서 수행하는 예이다. 36 ALTIBASE5 iSQL User’s Manual iSQL> START schema.sql <- 파일내의 sql 문이 실행된다. 또는 iSQL> @schema.sql 스크립트 파일을 명시할 때, 사용자 계정의 알티베이스 홈 디렉터리($ALTIBASE_HOME)를 의미하는 물음표(“?”)를 사용할 수 있다. 다음은 $ALTIBASE_HOME/sample/APRE/schema 디렉터리에 있는 스크립트 schema.sql을 다른 디렉터리에서 수행하는 예이다. iSQL> @?/sample/schema.sql 물음표(“?”)는 다음 iSQL 명령어에서도 사용할 수 있다: edit, save, load, spool, start * 스크립트 파일 내에서 주석의 사용은 -- 또는 /* */으로 가능하다. --는 이 표시 다음부터 그 라인의 끝까지를 주석으로 처리하고 여러 라인을 주석으로 처리할 때는 주석부분을 /*와 */ 사이에 넣으면 된다. @@ 명령어 @@file_name[.sql] file_name[.sql]: 수행될 내포형 스크립트를 나타낸다. 확장자를 생략하면 iSQL은 기본 명령어 파일 확장자(.sql)로 간주한다. 명시된 스크립트를 수행한다. @@ 명령어는 @ 명령어와 유사한 기능을 갖는다. 이 명령어는 수행될 스크립트와 같은 경로에서 명시된 스크립트를 찾는 기능을 가지고 있기 때문에 내포형 스크립트를 수행하는데 유용하다. @@ 명령어는 다음과 같은 용도로 쓰일 수 있다. 사용자가 임의의 스크립트 파일 내에 @@file_name.sql을 입력 하고 그 스크립트 파일을 실행하면, iSQL은 file_name.sql을 호 출한 스크립트 파일과 동일한 디렉터리에서 file_name.sql을 찾 아서 그 내용을 수행한다. file_name.sql 은 이를 호출한 스크립 트 파일과 같은 디렉터리에 있어야 한다. 만일 그런 파일이 존재 하지 않으면, iSQL은 오류 메시지를 보여준다. 사용자가 iSQL 프롬프트 상에서 @@file_name.sql을 입력하여 실행하는 것은 @file_name.sql을 실행하는 것과 동일하다. 스크립트에는 일반적으로 SQL문, iSQL 명령어, 또는 Stored Procedure 블록 등이 포함될 수 있다. 스크립트 내에 exit 또는 quit 명령어는 iSQL을 종료시킨다. iSQL 사용 예 37 다음은 $ALTIBASE_HOME 디렉터리에서 a.sql 스크립트 파일을 실행하는 예제로, 이 파일 내에서 schema.sql 스크립트 파일을 실행한다. 이 예제가 에러 없이 제대로 수행되려면, a.sql은 schema.sql파일이 위치하는 $ALTIBASE_HOME/sample/APRE/schema 디렉터리에 같이 있어야 한다. iSQL> @sample/APRE/schema/a.sql $ cat a.sql @@schema.sql * 참고: 이 후의 예제는 위의 스크립트를 실행해서 생성된 테이블들을 (부록 Schema 참고) 가지고 iSQL 환경에서 질의에 따른 결과를 편집한 것이다. SQL문의 저장 현재 iSQLbuffer에 있는 명령어 중 가장 최근에 수행한 명령어를 파일로 저장하는 기능이다. 이 파일은 현재 디렉터리에 생성된다. iSQL> SELECT * FROM book; iSQL> SAVE book.sql; -> book.sql 파일에 ‘SELECT * FROM book;’가 저장된다. Save completed. SQL문의 로드 지정한 파일의 첫 번째 명령어를 iSQL버퍼의 마지막 위치에 로드시키는 기능이다. iSQL> LOAD book.sql iSQL> SELECT * FROM book; Load completed. iSQL> / -> SELECT * FROM book; 문이 실행된 것을 볼 수 있다. DML문 저장 38 ALTIBASE5 iSQL User’s Manual INSERT, UPDATE, DELETE, MOVE 등의 DML문 실행시 이를 $ALTIBASE_HOME/trc/isql_query.log에 기록한다. 이 기능을 설정하려면 SET QUERYLOGGING을 ON으로 하고, 해제하려면 OFF하면 된다. iSQL> SET QUERYLOGGING ON; -> 이후의 모든 DML 문이 $ALTIBASE_HOME/trc/isql_query.log에 저장된다. iSQL> CREATE TABLE T1 ( I1 INTEGER ); Create success. iSQL> INSERT INTO T1 VALUES ( 1 ); 1 row inserted. iSQL> UPDATE T1 SET I1 = 2; 1 row updated. iSQL> SELECT * FROM T1; I1 -------------- 2 1 row selected. iSQL> DELETE FROM T1; 1 row deleted. iSQL> DROP TABLE T1; Drop success. iSQL> EXIT % cat $ALTIBASE_HOME/trc/isql_query.log -> SET QUERYLOGGING ON으로 실행한 후의 DML을 확인할 수 있다. [2009/09/16 10:36:14] [127.0.0.1:25310 SYS] INSERT INTO T1 VALUES ( 1 ) [2009/09/16 10:36:31] [127.0.0.1:25310 SYS] UPDATE T1 SET I1 = 2 [2009/09/16 10:36:37] [127.0.0.1:25310 SYS] DELETE FROM T1 질의문 편집 최근 질의문 편집 iSQL 상에서 파일을 생성하고 편집할 수 있도록 명령어 ed를 제공한다. 인수 없이 ed를 실행하면 가장 최근 실행된 질의문이 iSQL.buf 라는 임시 파일로 생성되며 다음과 같은 화면을 볼 수 있다. (지면을 절약하기 위해 몇 줄만 화면으로 표시한다.) iSQL> SELECT sysdate FROM dual; SYSDATE iSQL 사용 예 39 --------------- 01-JAN-2000 1 row selected. iSQL> ED SELECT sysdate FROM dual; ~ ~ ~ "iSQL.buf" 1L, 26C 기존 파일 편집 존재하는 파일을 편집하기 위해서는 iSQL 상에서 ed 실행 시 그 파일 이름을 뒤에 넣으면 된다. 화면이 초기화 되어 있을 때 빈 줄 표시는 ~(tilde) 문자로 표시된다. iSQL> ED myquery.sql "myquery.sql" INSERT INTO employee(ENO, ENAME, SEX) VALUES(21, 'MSJUNG', 'F'); INSERT INTO employee(ENO, ENAME, SEX, JOIN_DATE) VALUES(22, 'MHJUNG', 'F', TO_DATE('2001-11-19 00:00:00', 'YYYY-MM-DD HH:MI:SS')); ~ ~"myquery.sql" 히스토리 목록에 있는 질의문 편집 히스토리 목록에서 해당 번호를 사용하여 이전에 수행했던 명령을 편집할 수 있다. 즉, 해당 번호의 질의문이 iSQL.buf 임시 파일로 생성되어 편집을 할 수 있으며, 편집 결과는 히스토리의 마지막에 등록되어 가장 마지막 명령을 재수행하는 ‘/’ 으로도 실행이 가능하다. iSQL> h 1 : SELECT * FROM customer; 2 : SELECT * FROM employee; iSQL> 2ed or iSQL> 2 ed SELECT * FROM employee; ~ ~ "iSQL.buf" * 파일을 편집하기 위해서 명령 줄에 인수 2라는 파일 이름을 넣은 (iSQL> ed 2) 명령어와 구분된다. 40 ALTIBASE5 iSQL User’s Manual 편집 후 (employee를 orders로 변경) iSQL> h <- 현재 isql buffer에 있는 히스토리 목록 1 : SELECT * FROM customer; 2 : SELECT * FROM employee; : SELECT * FROM orders; <- 2 ed 명령어에 의해 편집된 질의문이 히스토리 목록에 가장 마지막 명령어로 저장된다. iSQL> / <- 가장 최근에 수행한 명령어가 실행된다. ORDERS.ONO ORDERS.ORDER_DATE ORDERS.ENO ORDERS.CNO ----------------------------------------------- ORDERS.GNO ORDERS.QTY ORDERS.ARRIVAL_DATE ORDERS.PROCESSING ----------------------------------------------- 0011290007 2000/11/29 00:00:00 12 711111-1431202 A111100002 70 2000/12/02 00:00:00 C 0011290011 2000/11/29 00:00:00 12 761001-1000001 E111100001 1000 2000/12/05 00:00:00 D … 0012310012 2000/12/31 00:00:00 19 730828-1201145 C111100001 250 2001/01/03 00:00:00 O 30 rows selected. iSQL 사용 예 41 SELECT 결과 포매팅 SELECT 문에 대한 결과들을 사용자가 보기 좋게 포매팅하는 기능이다. SET LINESIZE SELECT 문 결과 출력시 디스플레이되는 한 라인의 사이즈를 설정한다. 10 에서 200 사이의 값이어야 한다. iSQL> SET LINESIZE 100; -> 한 라인의 디스플레이 크기를 100으로 설정한다. SET LOBSIZE CLOB 칼럼을 SELECT 문으로 조회 시 디스플레이 되는 데이터의 길이를 설정한다. CLOB 칼럼의 데이터를 SELECT 문으로 조회하기 위해서 우선 트랜잭션 모드를 AUTOCOMMIT OFF로 설정해야 한다. CREATE TABLE C1(I1 INTEGER, I2 CLOB); INSERT INTO C1 VALUES(1, 'A123456789'); INSERT INTO C1 VALUES(2, 'A1234'); INSERT INTO C1 VALUES(3, 'A12345'); INSERT INTO C1 VALUES(4, 'A1234567890123'); iSQL> autocommit off; -> CLOB 칼럼 조회를 위해 트랜잭션 모드를 OFF로 설정한다. Set autocommit off success. iSQL> select * from c1; C1.I1 C1.I2 --------------------------- 1 A123456789 2 A1234 3 A12345 4 A1234567890123 4 rows selected. iSQL> set lobsize 10; -> CLOB 칼럼의 데이터를 select 문으로 조회할 때 화면에 나타나는 데이터 길이를 설정한다. 42 ALTIBASE5 iSQL User’s Manual iSQL> select * from c1; C1.I1 C1.I2 -------------------------- 1 A123456789 2 A1234 3 A12345 4 A123456789 4 rows selected. SET LOBOFFSET CLOB 칼럼을 SELECT 문으로 조회할 때 디스플레이 되는 Clob 데이터의 시작 위치를 설정한다. CLOB 칼럼의 데이터를 SELECT 문으로 조회하기 위해서 우선 트랜잭션 모드를 AUTOCOMMIT OFF로 설정해야 한다. CREATE TABLE C1(I1 INTEGER, I2 CLOB); INSERT INTO C1 VALUES(1, 'A123456789'); INSERT INTO C1 VALUES(2, 'A1234'); INSERT INTO C1 VALUES(3, 'A12345'); INSERT INTO C1 VALUES(4, 'A1234567890123'); iSQL> autocommit off; Set autocommit off success. iSQL> set loboffset 4; -> CLOB 칼럼의 데이터를 select 문으로 조회할 때 화면에 나타나는 데이터의 시작 위치를 설정한다. iSQL> select * from c1; C1.I1 C1.I2 -------------------------- 1 456789 2 4 3 45 4 4567890123 4 rows selected. SET FEEDBACK SELECT 문 결과 출력시 선택된 결과 건수를 출력한다. SET FEEDBACK ON|OFF|n iSQL 사용 예 43 ON: SELECT문 수행 후 결과 데이터 건수를 출력한다. OFF: SELECT문 수행 후 결과 데이터 건수를 출력하지 않는다. n: 결과 건수가 n이상일 경우에만 출력한다. iSQL> SET FEEDBACK ON; iSQL> SELECT * FROM employee WHERE ENO < 3; ENO ENAME EMP_JOB EMP_TEL ------------------------------------------------------------------------- DNO SALARY SEX BIRTH JOIN_DATE STATUS ---------------------------------------------------------------- 1 EJJUNG CEO 01195662365 3002 M R 2 HJNO DESIGNER 0113654540 1500000 F 1219 18-NOV-1999 H 2 rows selected. SET PAGESIZE 결과 row들을 몇 개 단위로 보여줄 것인지 결정한다. iSQL> SET PAGESIZE 2; -> 결과 row를 2개 단위로 보여준다. iSQL> SELECT * FROM employee; ENO ENAME EMP_JOB EMP_TEL ------------------------------------------------------------------------- DNO SALARY SEX BIRTH JOIN_DATE STATUS ---------------------------------------------------------------- 1 EJJUNG CEO 01195662365 3002 M R 2 HJNO DESIGNER 0113654540 1500000 F 1219 18-NOV-1999 H ENO ENAME EMP_JOB EMP_TEL ------------------------------------------------------------------------- DNO SALARY SEX BIRTH JOIN_DATE STATUS ---------------------------------------------------------------- 3 HSCHOI ENGINEER 0162581369 1001 2000000 M 0226 11-JAN-2000 H 4 KSKIM PL 0182563984 3001 1800000 M 0730 H . . . 20 rows selected. 44 ALTIBASE5 iSQL User’s Manual iSQL> SET PAGESIZE 0; -> 결과 전체를 한 단위로 보여준다. iSQL> SELECT * FROM employee; ENO ENAME EMP_JOB EMP_TEL ------------------------------------------------------------------------- DNO SALARY SEX BIRTH JOIN_DATE STATUS ---------------------------------------------------------------- 1 EJJUNG CEO 01195662365 3002 M R 2 HJNO DESIGNER 0113654540 1500000 F 1219 18-NOV-1999 H 3 HSCHOI ENGINEER 0162581369 1001 2000000 M 0226 11-JAN-2000 H 4 KSKIM PL 0182563984 3001 1800000 M 0730 H . . . 20 rows selected. SET HEADING 결과에 헤더를 출력할지 결정한다. iSQL> SET HEADING OFF; -> 결과에 헤더를 출력하지 않는다. iSQL> SELECT * FROM employee; 1 EJJUNG CEO 01195662365 3002 M R 2 HJNO DESIGNER 0113654540 1500000 F 1219 18-NOV-1999 H 3 HSCHOI ENGINEER 0162581369 1001 2000000 M 0226 11-JAN-2000 H 4 KSKIM PL 0182563984 3001 1800000 M 0730 H . . . 20 rows selected. iSQL> SET HEADING ON; -> 결과에 헤더를 출력한다. iSQL> SELECT * FROM employee; iSQL 사용 예 45 ENO ENAME EMP_JOB EMP_TEL ------------------------------------------------------------------------- DNO SALARY SEX BIRTH JOIN_DATE STATUS ---------------------------------------------------------------- 1 EJJUNG CEO 01195662365 3002 M R 2 HJNO DESIGNER 0113654540 1500000 F 1219 18-NOV-1999 H 3 HSCHOI ENGINEER 0162581369 1001 2000000 M 0226 11-JAN-2000 H 4 KSKIM PL 0182563984 3001 1800000 M 0730 H . . . 20 rows selected. SET COLSIZE SELECT 문 결과 출력시 디스플레이되는 CHAR, VARCHAR 타입 칼럼의 사이즈를 설정하여, 길이가 긴 문자열을 포함하는 칼럼이 존재할 경우 인식을 용이하게 한다. iSQL> CREATE TABLE LOCATION( ID INTEGER, NAME CHAR(20), ADDRESS VARCHAR(500), PHONE CHAR(20)); Create success. iSQL> INSERT INTO LOCATION VALUES(1, 'ALTIBASE', 'Inyoung Bldg, 5fl 44-11 Youido-dong Youngdungpo-qu seoul, 150-890. Korea', '82-2-769-7500'); 1 row inserted. 아래는 CHAR 또는 VARCHAR 타입 칼럼의 디스플레이 사이즈를 7로 설정하여 조회하는 예제이다. iSQL> SET COLSIZE 7; iSQL> SELECT ID,NAME,ADDRESS,PHONE FROM LOCATION; ID NAME ADDRESS PHONE -------------------------------------------- 1 ALTIBAS 10Fl., 82-2-20 E Daerung 82-1000 post-to 46 ALTIBASE5 iSQL User’s Manual wer II, Guro-d ong, Gu ro-qu, Seoul 1 52-790. Korea 1 row selected. iSQL 사용 예 47 출력 옵션 제어 수행시간 출력 SQL 문을 실행하는데 걸린 시간을 알려주는 기능이다. iSQL> SET TIMING ON; -> 명령 실행 후 마지막 라인에 실행시간을 출력한다. iSQL> SELECT * FROM employee; ENO ENAME EMP_JOB EMP_TEL ------------------------------------------------------------------------- DNO SALARY SEX BIRTH JOIN_DATE STATUS ---------------------------------------------------------------- 1 EJJUNG CEO 01195662365 3002 M R 2 HJNO DESIGNER 0113654540 1500000 F 1219 18-NOV-1999 H . . . 20 rows selected. elapsed time : 0.01 iSQL> SET TIMING OFF; -> 실행시간을 출력하지 않는다. 수행시간 단위 설정 SQL문의 쿼리 수행 시간 단위를 설정하는 기능이다. 설정할 수 있는 단위는 다음과 같다. 초 밀리초 마이크로초 나노초 iSQL> SET TIMING ON iSQL> SET TIMESCALE SEC; iSQL> SELECT * FROM employee; ENO ENAME EMP_JOB EMP_TEL ------------------------------------------------------------------------- DNO SALARY SEX BIRTH JOIN_DATE STATUS ---------------------------------------------------------------- 48 ALTIBASE5 iSQL User’s Manual 1 EJJUNG CEO 01195662365 3002 M R ... 20 rows selected. elapsed time : 0.00 iSQL> SET TIMESCALE MILSEC; iSQL> SELECT * FROM employee; ENO ENAME EMP_JOB EMP_TEL ------------------------------------------------------------------------- DNO SALARY SEX BIRTH JOIN_DATE STATUS ---------------------------------------------------------------- 1 EJJUNG CEO 01195662365 3002 M R ... ... 20 rows selected. elapsed time : 0.72 iSQL> SET TIMESCALE MICSEC; iSQL> SELECT * FROM employee; ENO ENAME EMP_JOB EMP_TEL ------------------------------------------------------------------------- DNO SALARY SEX BIRTH JOIN_DATE STATUS ---------------------------------------------------------------- 1 EJJUNG CEO 01195662365 3002 M R ... 20 rows selected. elapsed time : 966.00 iSQL> SET TIMESCALE NANSEC; iSQL> SELECT * FROM employee; ENO ENAME EMP_JOB EMP_TEL ------------------------------------------------------------------------- DNO SALARY SEX BIRTH JOIN_DATE STATUS ---------------------------------------------------------------- 1 EJJUNG CEO 01195662365 3002 M R ... 20 rows selected. elapsed time : 681000.00 iSQL 사용 예 49 외래키 출력 DESC 명령어를 사용하여 테이블 구조를 볼 때 외래 키에 대한 정보를 보여주는 기능이다. iSQL> SET FOREIGNKEYS ON; -> 외래 키에 대한 정보를 출력한다. iSQL> DESC employee; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ---------------------------------------------------------------------- NAME TYPE IS NULL ---------------------------------------------------------------------- ENO INTEGER FIXED NOT NULL ENAME CHAR(20) FIXED NOT NULL EMP_JOB VARCHAR(15) FIXED EMP_TEL CHAR(15) FIXED DNO SMALLINT FIXED SALARY NUMERIC(10, 2) FIXED SEX CHAR(1) FIXED NOT NULL BIRTH CHAR(4) FIXED JOIN_DATE DATE FIXED STATUS CHAR(1) FIXED [ INDEX ] ---------------------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ---------------------------------------------------------------------- __SYS_IDX_ID_123 BTREE UNIQUE ENO ASC EMP_IDX1 BTREE DNO ASC [ PRIMARY KEY ] ---------------------------------------------------------------------- ENO [ FOREIGN KEYS ] ---------------------------------------------------------------------- iSQL> SET FOREIGNKEYS OFF; -> 외래 키에 대한 정보를 출력하지 않는다. iSQL> DESC employee; [ TABLESPACE : SYS_TBS_MEM_DATA ] 50 ALTIBASE5 iSQL User’s Manual [ ATTRIBUTE ] ---------------------------------------------------------------------- NAME TYPE IS NULL ---------------------------------------------------------------------- ENO INTEGER FIXED NOT NULL ENAME CHAR(20) FIXED NOT NULL EMP_JOB VARCHAR(15) FIXED EMP_TEL CHAR(15) FIXED DNO SMALLINT FIXED SALARY NUMERIC(10, 2) FIXED SEX CHAR(1) FIXED NOT NULL BIRTH CHAR(4) FIXED JOIN_DATE DATE FIXED STATUS CHAR(1) FIXED [ INDEX ] ---------------------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ---------------------------------------------------------------------- __SYS_IDX_ID_123 BTREE UNIQUE ENO ASC EMP_IDX1 BTREE DNO ASC [ PRIMARY KEY ] ---------------------------------------------------------------------- ENO 스크립트 파일 실행결과 출력 스크립트 파일 실행의 결과를 화면상에 보여줄지를 결정한다. OFF 기능은 iSQL 상에서 스크립트 실행 시 생성된 결과가 화면에 출력되는 것을 막는다. 그러나, OFF가 설정되어 있더라도 질의를 직접 입력하는 경우 (예: iSQL> select * from t1;) 질의 결과는 화면에 출력 되며, 스크립트 명령을 이용하는 경우에만 (예: iSQL> @t.sql ) 화면에 출력되지 않는다. iSQL> SET TERM OFF; iSQL> SET TIMING ON; -> 실행시간이 화면에 출력되지 않는다. iSQL> @schema.sql iSQL 사용 예 51 -> 스크립트 실행 결과를 출력하지 않는다. iSQL> SELECT * FROM employee; -> 질의를 직접 입력하는 경우 결과는 출력된다. ENO ENAME EMP_JOB EMP_TEL ------------------------------------------------------------------------- DNO SALARY SEX BIRTH JOIN_DATE STATUS ---------------------------------------------------------------- 1 EJJUNG CEO 01195662365 3002 M R 2 HJNO DESIGNER 0113654540 1500000 F 1219 18-NOV-1999 H . . . iSQL> SET TERM ON; -> 스크립트 실행 결과를 출력한다. iSQL> @schema.sql iSQL> ALTER SESSION SET AUTOCOMMIT = TRUE; ->결과 시작 Alter success. iSQL> DROP TABLE ORDERS; Drop success. elapsed time : 0.00 iSQL> DROP TABLE EMPLOYEE; Drop success. elapsed time : 0.00 . . . iSQL> CREATE INDEX ODR_IDX3 ON ORDERS (GNO ASC); Create success. elapsed time : 0.00 -> 결과 끝 실행 계획 출력 SQL 튜닝을 위하여 iSQL상에서 실행 계획 (Explain Plan)을 출력하는 기능이다. SQL 문의 실행 계획은 SELECT, INSERT, UPDATE, DELETE 등의 DML 문에 대해서 확인이 가능하다. 이를 위해서 SELECT 등의 구문을 수행하기 전에 다음 명령을 수행하여야 한다. ALTER SESSION SET EXPLAIN PLAN = option; 52 ALTIBASE5 iSQL User’s Manual 여기서 option은 ON, OFF, ONLY의 세 가지 설정이 있으며, 기본 설정값은 OFF이다. ON: SELECT문 실행 후 결과 레코드와 함께 Execution Plan 을 보여준다. ONLY: SELECT문에 대해 Prepare 과정만 수행한 후 Execution 과정을 수행하지 않고 실행 계획만 보여준다. 주 언 어 변수 바인딩이 존재하는 SELECT 문 또는 실행 수행 시간이 오래 걸리는 질의에 대해 단순히 실행 계획만 확인할 경우 이 기 능을 사용한다. OFF: SELECT문 실행 후 결과 레코드만 보여준다. 사용자가 기술한 WHERE절에 존재하는 조건들의 처리 방법 등의 보다 자세한 정보가 필요한 경우는 다음 명령을 사용한다. ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 1; 위의 구문처럼 해당 프로퍼티를 1로 설정하여 ON시키면, 실행 계획 정보에 WHERE절의 조건들이 FIXED KEY RANGE, VARIABLE KEY RANGE, FILTER 등으로 자세하게 분류되어 표시된다. 따라서 WHERE절을 복잡하게 사용한 경우 어떤 술어들이 인덱스 스캔을 통해 수행되는지 확인할 수 있다. 단, 특정 최적화 기법에 의해 질의가 변경된 경우는 이러한 정보가 출력되지 않을 수 있다. 다음은 해당 SQL문을 사용한 출력 예이다. TRCLOG_DETAIL_PREDICATE을 설정하고 EXPLAIN PLAN = ON으로 한 경우 iSQL> alter system set trclog_detail_predicate = 1; Alter success. iSQL> alter session set explain plan = on; Alter success. iSQL> SELECT * FROM employee WHERE eno = 1; ENO ENAME EMP_JOB EMP_TEL ----------------------------------------------------------------------- DNO SALARY SEX BIRTH JOIN_DATE STATUS ---------------------------------------------------------------- 1 EJJUNG CEO 01195662365 3002 M R 1 row selected. ------------------------------------------------------------ PROJECT ( COLUMN_COUNT: 10, TUPLE_SIZE: 95 ) SCAN ( TABLE: EMPLOYEE, INDEX: __SYS_IDX_ID_280, ACCESS: 1, SELF_ID: 2 ) [ FIXED KEY ] AND OR iSQL 사용 예 53 ENO = 1 ------------------------------------------------------------ TRCLOG_DETAIL_PREDICATE을 설정하지 않고, EXPLAIN PLAN = ON으로 한 경우 iSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. iSQL> ALTER SESSION SET EXPLAIN PLAN = ON; Alter success. iSQL> SELECT * FROM employee WHERE eno = 1; ENO ENAME EMP_JOB EMP_TEL ----------------------------------------------------------------------- DNO SALARY SEX BIRTH JOIN_DATE STATUS ---------------------------------------------------------------- 1 EJJUNG CEO 01195662365 3002 M R 1 row selected. ------------------------------------------------------------ PROJECT ( COLUMN_COUNT: 10, TUPLE_SIZE: 95 ) SCAN ( TABLE: EMPLOYEE, INDEX: __SYS_IDX_ID_280, ACCESS: 1, SELF_ID: 2 ) ------------------------------------------------------------ TRCLOG_DETAIL_PREDICATE을 설정하지 않고, EXPLAIN PLAN = ONLY로 한 경우 iSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. iSQL> ALTER SESSION SET EXPLAIN PLAN = ONLY; Alter success. iSQL> SELECT * FROM employee WHERE eno = 1; ENO ENAME EMP_JOB EMP_TEL ----------------------------------------------------------------------- DNO SALARY SEX BIRTH JOIN_DATE STATUS ---------------------------------------------------------------- No rows selected. ------------------------------------------------------------ PROJECT ( COLUMN_COUNT: 10, TUPLE_SIZE: 95 ) SCAN ( TABLE: EMPLOYEE, INDEX: __SYS_IDX_ID_280, ACCESS: ??, SELF_ID: 2 ) ------------------------------------------------------------ EXPLAIN PLAN = ONLY인 경우 질의 실행 없이 실행 계획만 생성하므로 ACCESS 항목과 같이 실제 실행 후 그 값이 결정되는 항목들은 물음표 (“??”)로 표시된다. 54 ALTIBASE5 iSQL User’s Manual 결과 출력 방향 설정 iSQL에서 SELECT 구문으로 조회할 경우, 결과를 세로로 보여줄 것인가 가로로 보여줄 것인가를 선택할 수 있다. 조회 결과가 행이 적고, 열이 많을 경우에 적합한 출력이다. 일반적으로 이러한 경우에 가로로 출력되면 해당하는 열을 맞춰 값을 보기가 어렵다. 하지만 출력 결과의 방향을 세로로 설정하면 보기가 편리하다. iSQL>SET VERTICAL ON; -> 출력 결과 모드를 세로로 설정한다. iSQL> SELECT * FROM employee WHERE eno = 1; ENO : 1 ENAME : EJJUNG EMP_JOB : CEO EMP_TEL : 01195662365 DNO : 3002 SALARY : SEX : M BIRTH : JOIN_DATE : STATUS : R 1 row selected. iSQL 화면 설정 보기 다음은 현재 세션에서 iSQL 화면 설정 값을 보는 예를 보여준다. iSQL> SHOW USER -> 현재 세션에 접속한 사용자 User : SYS iSQL> SHOW COLSIZE ColSize : 0 iSQL> SHOW LOBOFFSET LobOffset: 0 iSQL> SHOW LINESIZE Linesize : 100 iSQL> SHOW LOBSIZE LobSize : 80 iSQL> SHOW PAGESIZE Pagesize : 0 iSQL> SHOW TIMESCALE TimeScale : Second iSQL> SHOW HEADING Heading : On iSQL> SHOW TIMING iSQL 사용 예 55 Timing : Off iSQL> SHOW VERTICAL Vertical : Off iSQL> SHOW FOREIGNKEYS ForeignKeys : Off iSQL> SHOW PLANCOMMIT PlanCommit : Off iSQL> SHOW QUERYLOGGING QueryLogging : Off iSQL> SHOW TERM Term : On iSQL> SHOW FEEDBACK Feedback : 1 iSQL> SHOW ALL User : SYS ColSize : 0 LobOffset : 0 LineSize : 80 LobSize : 80 PageSize : 0 TimeScale : Second Heading : On Timing : Off Vertical : Off ForeignKeys : Off PlanCommit : Off 56 ALTIBASE5 iSQL User’s Manual 호스트 변수 호스트 변수를 선언하여 사용할 수 있다. 호스트 변수는 프로시저나 함수 실행 시 유용하다. 호스트 변수 선언하기 구문 VAR[IABLE] var_name var_type 타입 변수 선언 시 사용할 수 있는 타입은 다음과 같다. INTEGER, BYTE(n), NIBBLE(n), NUMBER, NUMBER(n), NUMBER(n,m), NUMERIC, NUMERIC(n), NUMERIC(n,m), CHAR(n), VARCHAR(n), NCHAR(n), NVARCHAR(n), DATE DECIMAL, DECIMAL(n), DECIMAL(n,m), FLOAT, FLOAT(n), DOUBLE, REAL BIGINT, SMALLINT 예제 아래는 변수를 선언하는 예를 보여준다. iSQL> VAR p1 INTEGER iSQL> VAR p2 CHAR(10) iSQL> VAR v_double DOUBLE iSQL> VAR v_real REAL 호스트 변수에 값 할당하기 구문 EXEC[UTE] :var_name := value; 예제 iSQL 사용 예 57 아래는 변수에 값을 할당하는 예를 보여준다. iSQL> EXECUTE :p1 := 100; Execute success iSQL> EXEC :p2 := ‘abc’; Execute success 호스트 변수 보기 구문 PRINT VAR[IABLE] -> 선언된 모든 변수를 보여준다. PRINT var_name -> var_name의 타입과 값을 보여준다. 예제 다음은 선언된 모든 변수값을 보여준다. iSQL> PRINT VAR [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- P1 INTEGER 100 P2 CHAR(10) abc V_REAL REAL V_DOUBLE DOUBLE iSQL> PRINT p2 -> 변수 p2에 관한 정보만 출력한다. NAME TYPE VALUE ------------------------------------------- P2 CHAR ( 10 ) abc 58 ALTIBASE5 iSQL User’s Manual PREPARE SQL문 수행 Prepared SQL문 수행과 Direct SQL문 수행의 차이 iSQL상에서 SQL문을 수행하면 기본적으로 Direct Execution 방법으로 수행된다. Direct Execution 이란 질의에 대한 구문 분석, 정당성 검사, 최적화 및 수행을 한번에 수행하는 것을 의미한다. 이에 반해 Prepared Execution 방법은 prepare시에 질의에 대한 구문 분석, 정당성 검사, 최적화까지만을 수행해 질의에 대한 실행 계획을 수립해 두고 이후에 클라이언트로부터 실행 요구 메시지를 받으면 수행을 하는 방법이다. ODBC를 사용한 응용프로그램 작성의 경우 Prepared Execution 방법이 일반적이며 호스트 변수 바인딩을 통해 한 SQL문에 대한 반복적인 수행이 필요한 경우 속도의 이점이 있다. iSQL 상에서는 이 두 방법의 차이는 변수 사용 여부의 차이만 존재하며 속도의 이점은 존재하지 않는다. Prepared SQL문 구문 PREPARE SQL_statement; 예제 다음은 PREPARE 명령어를 사용한 SQL문 수행 예제이다. iSQL> VAR t1 INTEGER; iSQL> EXEC :t1 := 1; Execute success. iSQL> PREPARE SELECT eno, ename, sex FROM employee WHERE eno=:t1; ENO ENAME SEX ------------------------------------------- 1 EJJUNG M 1 row selected. iSQL 사용 예 59 프로시저 생성과 실행 및 삭제 프로시저 생성 프로시저를 생성하는 기능을 제공한다. 프로시저 생성시 반드시 END; / 구문으로 끝나야 한다. 생성된 프로시저는 sys_procedures_ 메타 테이블을 참조하여 확인할 수 있다. 프로시저 실행 프로시저를 실행하는 기능을 제공한다. 프로시저를 실행함으로써 다양한 쿼리를 한꺼번에 수행할 수 있다. 실행할 프로시저에 파라미터가 있는 경우 반드시 프로시저 실행전에 파라미터 개수만큼 변수가 선언되어 있어야 한다. 예제1 다음은 INSERT 문을 수행하는 프로시저 emp_proc를 생성하는 예를 보여준다. (IN 파라미터 이용) iSQL> CREATE OR REPLACE PROCEDURE emp_proc(p1 IN INTEGER, p2 IN CHAR(20), p3 IN CHAR(1)) AS BEGIN INSERT INTO employee(eno, ename, sex) VALUES(p1, p2, p3); END; / Create success. iSQL> SELECT * FROM system_.sys_procedures_; USER_ID PROC_OID PROC_NAME ------------------------------------------------------------------------------- OBJECT_TYPE STATUS PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID -------------------------------------------------------------------------- 60 ALTIBASE5 iSQL User’s Manual RETURN_SIZE RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN ------------------------------------------------------------------------ CREATED LAST_DDL_TIME ------------------------------ 1 2026712 PRINT 0 0 1 4 354 15-SEP-2010 15-SEP-2010 1 2029032 PRINTLN 0 0 1 4 364 15-SEP-2010 15-SEP-2010 . . . 2 3286104 EMP_PROC 0 0 3 2 154 15-SEP-2010 15-SEP-2010 3 rows selected. 아래는 emp_proc를 실행하는 예를 보여준다. iSQL> VAR eno INTEGER iSQL> VAR ename CHAR(20) iSQL> VAR sex CHAR(1) iSQL> EXECUTE :eno := 21; Execute success. iSQL> EXECUTE :ename := 'msjung'; Execute success. iSQL> EXECUTE :sex := 'F'; Execute success. iSQL> EXECUTE emp_proc(:eno, :ename, :sex); Execute success. iSQL> SELECT eno, ename, sex FROM employee WHERE eno = 21; ENO ENAME SEX ------------------------------------------- 21 msjung F 1 row selected. 예제2 다음은 SELECT 문을 수행하는 프로시저 outProc를 생성하는 예를 보여준다. iSQL 사용 예 61 iSQL> CREATE TABLE outTbl(i1 INTEGER, i2 INTEGER); Create success. iSQL> INSERT INTO outTbl VALUES(1,1); 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> SELECT * FROM outTbl; OUTTBL.I1 OUTTBL.I2 --------------------------- 1 1 1 1 1 1 1 1 1 1 5 rows selected. iSQL> CREATE OR REPLACE PROCEDURE outProc(a1 OUT INTEGER, a2 IN OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO a1 FROM outTbl WHERE i2 = a2; END; / Create success. 아래는 outProc를 실행하는 예를 보여준다. iSQL> VAR t3 INTEGER iSQL> VAR t4 INTEGER iSQL> EXEC :t4 := 1; Execute success. iSQL> EXEC outProc (:t3, :t4); Execute success. iSQL> PRINT t3; NAME TYPE VALUE ----------------------------------------------- T3 INTEGER 5 예제3 62 ALTIBASE5 iSQL User’s Manual 다음은 프로시저 outProc1을 생성하는 예를 보여준다. iSQL> CREATE OR REPLACE PROCEDURE outProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1; p3 := p1 + 100; END; / Create success. iSQL> VAR v1 INTEGER iSQL> VAR v2 INTEGER iSQL> VAR v3 INTEGER iSQL> EXEC :v1 := 3; Execute success. iSQL> EXEC outProc1(:v1, :v2, :v3); Execute success. iSQL> PRINT VAR; [ HOST VARIABLE ] ----------------------------------------------- NAME TYPE VALUE ----------------------------------------------- .. V1 INTEGER 3 V2 INTEGER 3 V3 INTEGER 103 .. 예제4 다음은 SELECT 문을 수행하는 프로시저 inoutProc를 생성하는 예를 보여준다. iSQL> CREATE TABLE inoutTbl(i1 INTEGER); Create success. iSQL> INSERT INTO inoutTbl VALUES(1); 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> SELECT * FROM inoutTbl; INOUTTBL.I1 -------------- iSQL 사용 예 63 1 1 1 3 rows selected. iSQL> CREATE OR REPLACE PROCEDURE inoutProc (a1 IN OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO a1 FROM inoutTbl WHERE i1 = a1; END; / Create success. iSQL> VAR t3 INTEGER iSQL> EXEC :t3 := 1; Execute success. iSQL> EXEC inoutProc(:t3); Execute success. iSQL> PRINT t3; NAME TYPE VALUE ----------------------------------------------- T3 INTEGER 3 예제5 다음은 프로시저 inoutProc1을 생성하는 예를 보여준다. iSQL> CREATE OR REPLACE PROCEDURE inoutProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1 + p2; p3 := p1 + 100; END; / Create success. 아래는 inoutProc1을 실행하는 예를 보여준다. iSQL> VAR v1 INTEGER iSQL> VAR v2 INTEGER iSQL> VAR v3 INTEGER iSQL> EXEC :v1 := 3; Execute success. iSQL> EXEC :v2 := 5; Execute success. iSQL> EXEC inoutProc1(:v1, :v2, :v3); 64 ALTIBASE5 iSQL User’s Manual Execute success. iSQL> PRINT VAR; [ HOST VARIABLE ] ----------------------------------------------- NAME TYPE VALUE ----------------------------------------------- .. V1 INTEGER 3 V2 INTEGER 8 V3 INTEGER 103 .. 프로시저 삭제 프로시저를 삭제하는 기능을 제공한다. 다음은 emp_proc를 삭제하는 예를 보여준다. iSQL> DROP PROCEDURE emp_proc; Drop success iSQL 사용 예 65 함수 생성과 실행 및 삭제 함수 생성 함수를 생성하는 기능을 제공한다. 함수 생성시 반드시 END; / 구문으로 끝나야 하며 리턴 타입이 정의되어 있어야 한다. 생성된 함수는 sys_procedures_ 메타 테이블을 참조하여 확인할 수 있다. 다음은 UPDATE 문과 SELECT 문을 수행하는 함수 emp_func를 생성하는 예를 보여준다. iSQL> CREATE OR REPLACE FUNCTION emp_func(f1 IN INTEGER) RETURN NUMBER AS f2 NUMBER; BEGIN UPDATE employee SET salary = 1000000 WHERE eno = f1; SELECT salary INTO f2 FROM employee WHERE eno = f1; RETURN f2; END; / Create success. iSQL> SELECT * FROM system_.sys_procedures_; USER_ID PROC_OID PROC_NAME ------------------------------------------------------------------------------- OBJECT_TYPE STATUS PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID -------------------------------------------------------------------------- RETURN_SIZE RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN ------------------------------------------------------------------------ CREATED LAST_DDL_TIME ------------------------------ . . . 66 ALTIBASE5 iSQL User’s Manual 2 3300024 INOUTPROC1 0 0 3 2 132 15-SEP-2010 15-SEP-2010 2 3302344 EMP_FUNC 1 0 1 6 30000 23 38 0 3 209 15-SEP-2010 15-SEP-2010 36 rows selected. 함수 실행 함수를 실행하는 기능을 제공한다. 함수를 실행함으로써 다양한 쿼리를 한꺼번에 수행할 수 있다. 실행할 함수에 파라미터가 있는 경우 반드시 함수 실행전에 파라미터 개수만큼 변수가 선언되어 있어야 한다. 또한, 함수의 실행 결과를 저장할 변수도 정의되어 있어야 한다. 다음은 emp_func를 실행하는 예를 보여준다. iSQL> VAR eno INTEGER iSQL> VAR ret NUMBER iSQL> EXEC :eno := 11; Execute success. iSQL> EXEC :ret := emp_func(:eno); Execute success. iSQL> SELECT eno, salary FROM employee WHERE eno = 11; ENO SALARY --------------------------- 11 1000000 1 row selected. 함수 삭제 함수를 삭제하는 기능을 제공한다. 다음은 emp_func를 삭제하는 예를 보여준다. iSQL> DROP FUNCTION emp_func; Drop success iSQL 사용 예 67 사용자 편의 기능 히스토리 이전에 수행했던 명령들의 리스트를 보여 준다. 해당 번호를 사용하여 이전에 수행했던 명령을 간단하게 실행할 수 있다. iSQL> HISTORY; -> history 목록보기 또는 iSQL> H; 1 : SELECT * FROM tab; 2 : SELECT * FROM book; 3 : HISTORY; iSQL> / -> 가장 마지막 명령(HISTORY;)을 재수행 iSQL> 2/ -> history 목록의 2번에 해당하는 명령(SELECT * FROM book;)실행 쉘 명령 iSQL에서 !다음에 바로 쉘 명령을 수행할 수 있는 편리한 기능이다. iSQL> !ls -al total 3417 -rw-r----- 1 wlgml337 section 1198 Nov 1 13:30 .aliases -rw------- 1 wlgml337 section 5353 Oct 18 21:17 .bash_history -rw-r----- 1 wlgml337 section 1436 Nov 2 15:42 .bashrc -rw-r----- 1 wlgml337 section 1549 Dec 13 17:36 .profile drwxr-x--- 2 wlgml337 section 512 Nov 2 02:00 TEMP drwxr-xr-x 2 root root 512 Oct 16 11:29 TT_DB -rw------- 1 wlgml337 section 3446548 Dec 18 13:19 core drwxr-x--- 2 wlgml337 section 512 Nov 11 16:33 cron drwxr-x--- 2 wlgml337 section 512 Nov 15 10:52 test drwxr-xr-x 6 wlgml337 section 512 Nov 11 11:45 work 68 ALTIBASE5 iSQL User’s Manual 도움말 iSQL이 제공하는 명령에 대한 도움말을 제공한다. HELP 명령은 도움말 사용법을 보여 주며 특정 명령에 대한 도움말은 HELP 명령 다음에 정보를 알고자 하는 명령을 입력하면 된다. iSQL> HELP; Use 'help [command]' Enter 'help index' for a list of command iSQL> HELP INDEX; @ EDIT QUIT / EXIT ROLLBACK ALTER HEADING SAVE AUTOCOMMIT H[ISTORY] SELECT COMMIT INSERT SPOOL CREATE LINESIZE START DELETE LOAD TIMING DESC LOBOFFSET UPDATE DROP LOBSIZE VAR[IABLE] EXECUTE MOVE TERM EXPLANINPLAN PAGESIZE VERTICAL iSQL> HELP EXIT; exit; or quit; - exit iSQL iSQL 사용 예 69 내셔널 캐릭터 사용법 NCHAR 및 NVARCHAR 타입의 내셔널 캐릭터 상수 문자를 사용하기 위해서 아래와 같은 방법으로 환경변수 등을 설정해야 데이터의 손실 염려가 없다. 환경변수 ALTIBASE_NLS_NCHAR_LITERAL_REPLACE의 값을 1로 설정한다. $ export ALTIBASE_NLS_NCHAR_LITERAL_REPLACE =1 SQL 구문에서 NCHAR 타입 상수 문자열을 사용하기 위해 해당 문자열 바로 앞에 “N”을 붙여 사용한다. iSQL> create table t1 (c1 nvarchar(10)); Create success. iSQL> insert into t1 values (N'AB가나'); 1 row inserted. iSQL> select * from t1; C1 ------------------------ AB가나 1 row selected. 찾아보기 71 찾아보기 ! ! 명령어 ..........................................................13 / / 명령어 .................................................. 13, 67 @ @ 명령어 ................................................. 9, 35 @@ ..................................................................... 9 @@ 명령어...................................................36 A ALTIBASE_DATE_FORMAT ......................16 ALTIBASE_HOME.........................................14 ALTIBASE_IPC_FILEPATH ..........................16 ALTIBASE_NLS_NCHAR_LITERAL_REPLA CE ..................................................................15 ALTIBASE_NLS_USE ....................................14 ALTIBASE_PORT_NO..................................14 AUTOCOMMIT OFF ...................................34 AUTOCOMMIT ON ....................................34 C comment ........................................................13 D DESC .................................................................31 disconnect ....................................................... 8 E ed 명령어 .............................................. 10, 40 exit ...................................................................... 8 G glogin.sql ....................................................... 18 H help .................................................................. 13 history ..................................................... 13, 67 host variable ................................................. 56 I iSQL 구성....................................................... 18 iSQL 명령어 .................................................... 8 iSQL 설정......................................................... 3 iSQL 화면 설정 ........................................... 54 iSQL 환경변수 ............................................. 12 ISQL_BUFFER_SIZE ..................................... 16 ISQL_CONNECTION .................................. 15 ISQL_EDITOR ................................................ 16 L LOBOFFSET ........................................... 10, 42 LOBSIZE .................................................. 10, 41 login.sql .......................................................... 18 P PAGESIZE ....................................................... 43 PREPARE SQL문 .......................................... 58 Q quit ..................................................................... 8 S SELECT 결과 포매팅 ................................. 41 72 ALTIBASE5 iSQL User’s Manual set foreignkeys............................................ 11 set linesize .................................................... 10 set pagesize ................................................. 10 set term .......................................................... 11 shell command ........................................... 67 show all .......................................................... 12 SQL문의 로드 .............................................. 37 SQL문의 저장 .............................................. 37 START .............................................................. 35 SYSDBA ........................................................... 22 T tab................................................................ 9, 30 ㄴ 내셔널 캐릭
-
- [Altibase 6.3.1] iSQL User's Manual ㅣ 2014-01-13
- ALTIBASE® HDB™ Tools iSQL User ’s Manual Release 6.3.1 April 17, 2015 ALTIBASE HDB Tools iSQL User ’s Manual Release 6.3.1 Copyright 2001~2015 Altibase Corporation. All rights reserved. This manual contains proprietary information of Altibas
-
미리보기
ALTIBASE® HDB™ Tools iSQL User ’s Manual Release 6.3.1 April 17, 2015 ALTIBASE HDB Tools iSQL User ’s Manual Release 6.3.1 Copyright 2001~2015 Altibase Corporation. All rights reserved. This manual contains proprietary information of Altibase® Corporation; it is provided under a license agreement containing restric- tions on use and disclosure and is also protected by copyright patent and other intellectual property law. Reverse engineering of the software is prohibited. All trademarks, registered or otherwise, are the property of their respective owners Altibase Corporation 10F, Daerung PostTower II, 182-13, Guro-dong Guro-gu Seoul, 152-847, South Korea Telephone: +82-2-2082-1000 Fax: 82-2-2082-1099 Homepage: http://www.altibase.com iii Contents Preface ............................................................................................................................................................................ v About This Manual ................................................................................................................................................................................... vi Intended Audience ................................................................................................................................................................... vi Software Environment ............................................................................................................................................................ vi Organization ............................................................................................................................................................................... vi Documentation Conventions ............................................................................................................................................... vi Related Documents .................................................................................................................................................................. ix Online Manuals .......................................................................................................................................................................... ix Altibase Welcomes Your Comments.................................................................................................................................. ix 1. Using iSQL .................................................................................................................................................................. 1 1.1 iSQL Overview ..................................................................................................................................................................................... 2 1.1.1 iSQL Main Functionality ................................................................................................................................................ 2 1.2 Setting Up iSQL ................................................................................................................................................................................... 3 1.3 iSQL Command-line Options ......................................................................................................................................................... 5 1.4 iSQL Commands ................................................................................................................................................................................. 8 1.5 iSQL Environment Variables ........................................................................................................................................................ 14 1.5.1 ALTIBASE_HOME .......................................................................................................................................................... 14 1.5.2 ALTIBASE_PORT_NO .................................................................................................................................................. 14 1.5.3 ALTIBASE_NLS_USE ..................................................................................................................................................... 14 1.5.4 ALTIBASE_NLS_NCHAR_LITERAL_REPLACE ...................................................................................................... 15 1.5.5 ISQL_CONNECTION ..................................................................................................................................................... 15 1.5.6 ISQL_BUFFER_SIZE ....................................................................................................................................................... 15 1.5.7 ALTIBASE_DATE_FORMAT ....................................................................................................................................... 15 1.5.8 ISQL_EDITOR ................................................................................................................................................................ 16 1.5.9 ALTIBASE_IPC_FILEPATH .......................................................................................................................................... 16 1.5.10 ALTIBASE_TIME_ZONE ............................................................................................................................................. 16 1.6 Personalizing iSQL .......................................................................................................................................................................... 17 1.6.1 glogin.sql ......................................................................................................................................................................... 17 1.6.2 login.sql ............................................................................................................................................................................ 17 1.6.3 Editing the LOGIN File ................................................................................................................................................. 17 1.6.4 Notes ................................................................................................................................................................................. 18 2. Examples of iSQL in Use .......................................................................................................................................... 19 2.1 Logging In to iSQL .......................................................................................................................................................................... 20 2.1.1 Login Restrictions ......................................................................................................................................................... 20 2.2 Starting Up and Shutting Down ALTIBASE HDB .................................................................................................................. 21 2.2.1 Starting Up ALTIBASE HDB ........................................................................................................................................ 21 2.2.2 Shutting Down ALTIBASE HDB ................................................................................................................................ 21 2.3 Connecting and Disconnecting ................................................................................................................................................. 23 2.3.1 Connecting to a Database ......................................................................................................................................... 23 2.3.2 Disconnecting from a Database .............................................................................................................................. 26 2.4 Retrieving Information Related to the Database and Database Objects .................................................................... 27 2.4.1 Performance Views ...................................................................................................................................................... 27 2.4.2 Viewing the List of Tables .......................................................................................................................................... 27 2.4.3 Viewing a Table Structure ......................................................................................................................................... 28 2.4.4 Viewing Sequence Information ............................................................................................................................... 28 2.5 Controlling Transactions .............................................................................................................................................................. 30 2.5.1 Defining Transaction Modes .................................................................................................................................... 30 2.5.2 PLANCOMMIT ................................................................................................................................................................ 30 2.6 File Management ............................................................................................................................................................................ 31 2.6.1 Saving Results ................................................................................................................................................................ 31 2.6.2 Running Scripts ............................................................................................................................................................. 31 2.6.3 Saving SQL Statements .............................................................................................................................................. 32 2.6.4 Loading SQL Statements ........................................................................................................................................... 33 2.6.5 Saving DML Statements ............................................................................................................................................. 33 2.6.6 Editing Query Statements ......................................................................................................................................... 33 iv 2.7 Formatting SELECT Query Results ............................................................................................................................................. 36 2.7.1 SET LINESIZE ................................................................................................................................................................... 36 2.7.2 SET LOBSIZE .................................................................................................................................................................... 36 2.7.3 SET LOBOFFSET ............................................................................................................................................................. 37 2.7.4 SET FEEDBACK .............................................................................................................................................................. 37 2.7.5 SET PAGESIZE ................................................................................................................................................................. 38 2.7.6 SET HEADING.................................................................................................................................................................. 38 2.7.7 SET COLSIZE .................................................................................................................................................................... 39 2.7.8 SET NUM[WIDTH] .......................................................................................................................................................... 39 2.8 Setting Output Options ................................................................................................................................................................ 41 2.8.1 Getting the Elapsed Time .......................................................................................................................................... 41 2.8.2 Setting Execution Time Units for Output ............................................................................................................. 41 2.8.3 Describing Foreign Key Information ..................................................................................................................... 42 2.8.4 Describing CHECK Constraints Information........................................................................................................ 43 2.8.5 Outputting Script Execution Results ..................................................................................................................... 44 2.8.6 Outputting an Execution Plan ................................................................................................................................. 45 2.8.7 Setting Result Output Orientation ......................................................................................................................... 47 2.9 Viewing iSQL Display Settings .................................................................................................................................................... 48 2.10 Host Variables ................................................................................................................................................................................ 50 2.10.1 Declaring a Host Variable ........................................................................................................................................ 50 2.10.2 Assigning a Value to a Host Variable ................................................................................................................... 50 2.10.3 Viewing Host Variables ............................................................................................................................................ 51 2.11 Executing Prepared SQL Statements ..................................................................................................................................... 52 2.11.1 Prepared SQL versus Dynamic SQL Statements ............................................................................................. 52 2.11.2 Prepared SQL Statements ....................................................................................................................................... 52 2.12 Creating, Executing, and Dropping Stored Procedures.................................................................................................. 53 2.12.1 Creating Procedures ................................................................................................................................................. 53 2.12.2 Executing Procedures ............................................................................................................................................... 53 2.12.3 Dropping Procedures ............................................................................................................................................... 57 2.13 Creating, Executing, and Dropping Functions ................................................................................................................... 58 2.13.1 Creating Functions .................................................................................................................................................... 58 2.13.2 Executing Functions.................................................................................................................................................. 58 2.13.3 Dropping Functions .................................................................................................................................................. 59 2.14 Convenient User Functions ....................................................................................................................................................... 60 2.14.1 History ............................................................................................................................................................................ 60 2.14.2 Shell Commands ........................................................................................................................................................ 60 2.14.3 Getting Help ................................................................................................................................................................. 60 2.15 Using National Character Sets .................................................................................................................................................. 62 vPreface Preface About This Manual iSQL User’s Manual vi About This Manual This manual describes how to use iSQL to access a database. Intended Audience The following ALTIBASE HDB users will find this manual useful: Database administrators Per formance managers Database administrators Application developers T ec hn ica l suppor t w o rker s It is recommended that those reading this manual possess the following background knowledge: Basic knowledge in the use of computers, operating systems, and operating system utilities. Experience in using relational databases and an understanding of database concepts. Computer programming experience. Experience in database ser ver, operating system or network administration. Software Environment This manual has been prepared assuming that ALTIBASE HDB 6 is used as the database ser ver. Organization This manual is organized as follows: Chapter1: Using iSQL This chapter presents an over view of iSQL and explains the commands and how to use iSQL. Chapter2: Examples of iSQL in Use This chapter provides in- depth examples of each of the commands provided with iSQL. Documentation Conventions This section describes the conventions used in this manual. Understanding these conventions will make it easier to find information in this manual and other manuals in the series. There are two sets of conventions: About This Manual vii Preface Syntax diagrams S a m pl e c o de con v e n t i ons Syntax D iagrams This manual describes command syntax using diagrams composed of the following elements: Element Meaning The star t of a command. If a syntactic element star ts with an arrow, it is not a complete command. The command continues to the next line. If a syntactic ele - ment ends with this symbol, it is not a complete command. The command continues from the previous line. If a syn- tactic element star ts with this symbol, it is not a complete command. The end of a statement. Indicates a mandator y element. Indicates an optional element. Indicates a mandator y element comprised of options. One, and only one, option must be specified. Indicates an optional element comprised of options. ; SELECT NOT ADD DROP ASC DESC About This Manual iSQL User’s Manual viii Sample Code Conventions The code examples explain SQL, stored procedures, iSQL, and other command line statements. The following table describes the printing conventions used in the code examples. Indicates an optional element in which multiple elements may be specified. A comma must precede all but the first option. Element Meaning , ASC DESC Rule Meaning Example [ ] Indicates an optional item. VARCHAR [(size)] [[FIXED |] VARIABLE] { } Indicates a mandator y field for which one or more items must be selected. { ENABLE | DISABLE | COMPILE } | A delimiter between optional or mandator y arguments. { ENABLE | DISABLE | COMPILE } [ ENABLE | DISABLE | COMPILE ] . . . Indicates that the previous argu- ment is repeated, or that sample code has been omitted. iSQL> select e_lastname from employees; E_LASTNAME ------------------------ Moon Davenport Kobain . . . 20 rows selected. O ther Symbols Symbols other than those shown above are par t of the actual code. EXEC :p1 := 1; acc NUMBER(11,2); Italics Statement elements in italics indi- cate variables and special values specified by the user. SELECT * FROM table_name; CONNECT userID/password; Lower Case Char- acters Indicate program elements set by the user, such as table names, col- umn names, file names, etc. SELECT e_lastname FROM employees; About This Manual ix Preface Related Documents For more detailed information, please re fe r to th e fol low ing documents: ALTIBASE HDB Administrators’ Manual ALTIBASE HDB Application Program Inter face Users’ Manual ALTIBASE HDB Error Message Reference ALTIBASE HDB Getting Star ted Guide ALTIBASE HDB Installation Guide ALTIBASE HDB iSQL Users’ Manual A L T IB ASE HDB ODBC Ref e r e nce ALTIBASE HDB Precompiler Users’ Manual ALTIBASE HDB Replication Manual ALTIBASE HDB Utilities Manual Online Manuals Online versions of our manuals (PDF or HTML) are available from Altibase's Customer Suppor t site (http://suppor t.altibase.com/). Altibase Welcomes Your Comments Please let us know what you like or dislike about our manuals. To help us with future versions of our manuals, please tell us about any corrections or classifications that you would find useful. Include the following information : The name and version of the manual that you are using. Any comments that you have about the manual. Your name, address, and phone number. When you need immediate assistance regarding technical issues, please contact Altibase’s Customer Support site (http://suppor t.altibase.com/). Thank you. We appreciate your feedback and suggestions. Upper Case Char- acters Keywords and all elements pro- vided by the system appear in upper case. DESC SYSTEM_.SYS_INDICES_; Rule Meaning Example About This Manual iSQL User’s Manual x 1Using iSQL 1 Using iSQL 1.1 iSQL Overview iSQL User’s Manual 2 1.1 iSQL Overview iSQL is a user tool for accessing ALTIBASE HDB and retrieving and modifying stored data using SQL statements and a number of additional commands. 1.1.1 iSQL Main Func tionality ALTIBASE HDB Star tup and Shutdown iSQL allows you to per form database management tasks, such as star ting up and shutting down the ser ver, and execute SQL statements using the same command prompt. Database Connection tion After ALTIBASE HDB starts up, you can use various user names to connect to and disconnect from the database. Database Object Information Inquiry iSQL allows you to use SQL statements to quer y all database object information, and suppor ts con- venient commands for inquiring about main objects. Database Management via SQL Statements Because iSQL can be used to execute any kind of SQL statement, you can control transactions and alter databases quickly and conveniently. Functions to Improve User Convenience The above tasks can be easily and conveniently accomplished using the file management and edit- ing functions, the ability to execute shell commands over iSQL, and the HISTORY function. 1.2 Setting Up iSQL 3Using iSQL 1.2 S e tting Up iSQL In order for iSQL to access a ser ver, the following information is necessar y. ALTIBASE_HOME A path to a ser ver or client installation. server_name The name (or IP address) of a computer on which the ALTIBASE HDB ser ver is running. port_no The por t number to be used when connecting via TCP or IPC. user_id A user ID registered in the database. password The password corresponding to the user ID. NLS_USE The character set with which to display retrieved data to the user. ALTIBASE_HOME can only be set using an environment variable, while the other settings may be made using command-line options. (For more information, please refer to 1.3 iSQL Command-line Options.) The ALTIBASE_HOME environment variable must be set in order to use iSQL. In the case of Win- dows, this is set automatically when the ser ver is installed, but, in the case of the client, must be set manually by the user. We strongly suggest that you verify that this setting has been properly made, as the application may not run properly if this setting is not made. port_no and NLS_USE can be set using the environment variables or the ser ver settings file (altibase.properties). If these settings are made via all three methods, they will take priority as follows, in descending order: 1. command-line options 2. environment variables (ALTIBASE_PORT_NO, ALTIBASE_NLS_USE) 3. ser ver settings file (altibase.properties) Therefore, when it is desired to connect using options other than those that have been previously set, the command-line options can be used, so that it is not necessar y to change the settings in the ser ver setting file or the environment variables. If any options have not been set, when iSQL is executed for the first time, the user will be prompted to enter the corresponding variables. At this time, it is essential to enter values that are valid and fol- low the proper format, other wise iSQL may not run properly. However, if the NLS_USE option in par ticular has not been set, no command prompt will appear at the time of execution. Instead, US7ASCII will be used, and a connection attempt will be made. In this case, if the character set of the database is not US7ASCII, the application will not execute properly, or some of the user ’s data may become corrupted. Thus it is paramount that NLS_USE be set to a suit- able value for the usage environment. In order to ensure stable iSQL operation, we recommend that the following environment variables 1.2 Setting Up iSQL iSQL User’s Manual 4 be set: ALTIBASE_HOME: The path to a ser ver or client installation. ALTIBASE_PORT_NO: The por t number to use to connect to the ser ver. ALTIBASE_NLS_USE: The character set to use to display retrieved data to the user. PATH: The path containing the executable file, which must equal $ALTIBASE_HOME/bin. 1.3 iSQL Command-line Options 5Using iSQL 1.3 iSQL Command-line Options The ALTIBASE HDB ser ver must be star ted before iSQL is executed. The following options are case - insensitive. isql [-H] [-S server_name] [-U user_id] [-P password] [-PORT port_no] [-UNIXDOMAIN-FILEPATH filepath] [-IPC-FILEPATH filepath] [-SILENT] [-F infile_name] [-O outfile_name] [-NLS_USE] [-NLS_NCHAR_LITERAL_REPLACE 0|1] [-prefer_ipv6] [-TIME_ZONE timezone] -S server_name S p ec i fi e s t he n a m e (o r I P a dd re s s ) of a co m pu te r on wh i ch t he A LT I B A S E HD B s e r ver i s r u nni n g. If connection is attempted while the ISQL_CONNECTION environment variable is set to IPC or UNIX, and the remote ser ver is specified for this option, iSQL ignores the ISQL_CONNECTION specification and connects to the remote ser ver via TCP, and outputs a warning message that the ISQL_CONNECTION specification has been ignored. It can be a host name, an IPv4 address, or an IPv6 address. An IPv6 address must be enclosed by a left square bracket([) and a right square bracket(]). For example, in the case of localhost (meaning this computer), localhost can be specified as the host name, 127.0.0.1 as the IPv4 address, or [::1] as the IPv6 address. For more information about the IPv6 address notation, please refer to the ALTIBASE HDB Administrator's Manual. -U user_id Specifies a user ID registered in the database. -P password Specifies the password corresponding to the user ID. -PORT port_no Specifies the por t number for connecting via TCP/IP or IPC. However, when connecting in a Unix environment via IPC, this option must not be specified. After a warning message is out- put, connection to the ser ver is made. To connect via TCP, first set ISQL_CONNECTION=TCP on the client and then enter PORT_NO. To connect via IPC in a Windows environment, set the environment variable ISQL_CONNECTION=IPC and specify the por t number using one of the following: the -PORT option the ALTIBASE_I PC_PORT_NO environment variable the IPC_PORT_N O proper ty in altibase.properties If the environment variable ISQL_CONNECTION is not set to IPC and the -PORT option is omitted, the por t number will be checked for first in the environment variable 1.3 iSQL Command-line Options iSQL User’s Manual 6 ALTIBASE_PORT_NO and then in the PORT_NO proper ty in altibase.properties, and if it is not set in either of those places, a prompt to enter it will be raised. -UNIXDOMAIN-FILEPATH filepath When a ser ver and client connect using a Unix domain socket in a Unix environment (ISQL_CONNECTION=UNIX), the connection will fail if the ser ver and client have different values for ALTIBASE_HOME and also have different Unix domain socket paths. In this case, if the ser ver and client use corresponding files (e.g. ALTIBASE_HOME/trc/cm-unix), Unix domain communication is possible. -IPC-FILEPATH filepath When the client and the ser ver are to connect via IPC (ISQL_CONNECTION=IPC) in a Unix environment, if ALTIBASE_HOME is set differently on them, they will not be able to connect if they have different socket paths. In this case, Unix domain communication can be achived using the ALTIBASE_HOME/trc/cm-ipc file, and then information about shared memor y can be retrieved. However, this option can be omitted if ALTIBASE_IPC_FILEPATH is set. -F infile_name Specifies a script file to be executed immediately after iSQL is launched. -O outfile_name Specifies a file in which to store the results of the executed iSQL commands. This file will be created in the current directory. If the file already exists, it will be over written. -H Outputs help information for iSQL execution. -SILENT This option turns on silent mode. If silent mode is on, noncritical messages, such as the copy- right notice, etc. will not be displayed. -NLS_USE Specifies the character set with which to display data to the user. The following character sets may be specified: US7ASCII K O16 K SC 56 01 MS949 BIG5 G B 231 28 0 UTF8 SHIFTJIS EUCJP I f omit t e d , the en vir onmen t v a riable ALTIBASE_NLS_USE or altibase.properties will be used, in descending order of preference, and if it is still not specified, the basic character set (US7ASCII) will be used. 1.3 iSQL Command-line Options 7Using iSQL -NLS_NCHAR_LITERAL_REPLACE 0: Conver t all strings to the database character set without checking for the "N" charac- ter. 1: Do not conver t strings that are preceded by the "N" character to the database charac- ter set. -prefer_ipv6 This option determines the IP address to be connected first when a host name is given for the -s option. If this option is specified and a host name is given for the -s option, this means that resolving the host name to the IPv6 address is preferred. If this option is omitted, iSQL connects to the IPv4 address by default. If it fails to connect to the preferred IP version address, an attempt is made to connect using the other IP version address. For example, when localhost is given for the -s option and this option is specified, iSQL first tries to connect to the [::1] IPv6 address. If this attempt fails, iSQL proceeds to connect to the 127.0.0.1 IPv4 address. -TIME_ZONE timezone This option sets the time zone of the client. If DB_TZ is specified for this option, the time zone is defaulted to that of the database ser ver. Time zone names like Asia/Seoul, abbreviations such as KST, and UTC offset values as +09:00 are valid for specification. If this option is omitted, the time zone set for the ALTIBASE_TIME_ZONE environment vari- able is defaulted to the time zone of the client; on omission of the environment variable, the time zone is defaulted to that of the database ser ver. If any of the -S, -U, or -P option is missing from the above command, the user will be prompted to input the option value. 1.4 iSQL Commands iSQL User’s Manual 8 1.4 iSQL Commands When iSQL is star ted, an iSQL command prompt will appear, and when iSQL commands are entered, the results of execution will be displayed. The iSQL commands are described individually in the following table. Categor y Type Command Description iSQL Star tup and Shut- down Star tup $ iSQL [option] If you execute this command in a shell, iSQL will star t up. For information about the available options, please refer to 1.3 iSQL Command-line Options. PromptiSQL>Type a command at the iSQL prompt and press the ENTER key. ShutdownEXIT QUIT Used to shut down iSQL. ALTIBASE HDB Star tup and Shutdown ALTIBASE HDB Star tup STARTUPUse the PRE-PROCESS, PROCESS, CONTROL, META, or SERVICE option to star t ALTIBASE HDB up to the corre - sponding stage. ALTIBASE HDB Shutdown SHUTDOWNUse one of the NORMAL, IMMEDIATE, or ABORT options to shut down ALTI- BASE HDB. Database Connec tion and Discon- nection Access the Server as Another User CONNECT [logon][nls][AS sysdba]; where logon has the syntax: user1[/pass1] where nls has the syn- tax: NLS=character_set This command allows access to the database as user1 with password pass1 after having already accessed the database as another user in iSQL. If CONNECT is successful, the information related to the previous session is cleared.The AS clause allows the user SYS to access the ser ver in sysdba manager mode. Only one user is allowed to connect as sysdba at a time. The nls option specifies the character set. For detailed information about character sets, please refer to1.3 iSQL Command-line Options: -NLS_USE option. Terminate a Connec tion DISCONNECT;Ends the current session and terminates the connection with the ser ver. 1.4 iSQL Commands 9Using iSQL Database Object Infor- mation Inquiry Display Per- formance View List SELECT * FROM V$TAB; Displays the list of all of the per for- mance views provided by the system. This command is available only in iSQL. Display Table List SELECT * FROM TAB;Displays the list of currently created tables. This command is only available in iSQL. Display Table Structure DESC samp;Lists the column definitions for the table samp Display Sequence Information SELECT * FROM V$SEQ; If you accessed the server with the SYS account, information about all sequences is displayed. If you accessed the ser ver as another user, only the information about the sequences gen- erated by that user will be displayed. This command is available only in iSQL. Tr a n s a c t i o n Control Setting Trans- action Mode AUTOCOMMIT ON; AUTOCOMMIT OFF; Determines whether to commit com- mands automatically at the time that they are executed. Default: ON Other SET Fu n c t i o n s SET PLANCOMMIT ON; SET PLANCOMMIT OFF; Determines whether to automatically commit commands such as DESC, SELECT * FROM TAB, or SELECT * FROM seq_name when EXPLAIN PLAN is ON (or ONLY) and AUTOCOM- MIT is OFF. Default: OFF Categor y Type Command Description 1.4 iSQL Commands iSQL User’s Manual 10 Fi l e M a n a g e - ment Output Data to a File SPOOL file_name;Star ts writing the results shown on the screen to the file file_name. SPOOL OFF;Stops writing the results shown on the screen to the file file_name. SQL Script Execution START file_name;Reads a script file and executes the SQL statements in sequence. @ file_name;Per forms a function similar to that of startup when executed via an iSQL prompt. @@ file_name;When used in a script, this command executes the file file_name in the same director y as the calling script. Save SQL Statement to Fi l e SAVE abc.sql;Saves the last of the commands cur- rently in the iSQL buffer to a file. Lo ad S QL Statement LOAD abc.sql;Loads the first of the commands saved in a file at the end of the command buf- fer. Save DML Statements to Fi l e SET QUERLOGGING ON; SET QUERYLOGGIN OFF; This writes executed DML statements, such as INSERT, UPDATE, DELETE, MODE in $ALTIBASE_HOME/trc/ isql_query.log. Edit Quer y Statements EDFor creating and editing temporar y files. ED file_name[.sql]For editing existing files or creating new files. 2ED or 2 EDEdits quer y command number 2 in the histor y list. Categor y Type Command Description 1.4 iSQL Commands 11 Using iSQL Control Out- put Option Fo r m a t SELEC T Result Column SET LINESIZE 100;Sets the length of a display line for out- putting the result of a SELECT quer y. Must be between 10 and 32767 inclu- sive. Default: 80 Fo r m a t SELEC T Result Column of Ty p e C LO B SET LOBSIZE 10;Sets the number of characters to display when a CLOB column is output. Default : 80 SET LOBOFFSET 3;Sets the number of characters by which to offset the display when a CLOB col- umn is output. Default : 0 Output SELEC T Result Count SET FEED[BACK] ON; SET FEED[BACK] n; Determines whether to output the number of rows in a quer y result. Fo r m a t R o w s of SELEC T Result SET PAGESIZE 10;S ets how many records of a SELECT quer y result are output at one time. When set to 0, all resultant records are output. Default: 0 Show/Hide SELEC T Result Header SET HEADING ON; SET HEADING OFF; Sets whether to output the header of a SELECT result Default: ON Set SELEC T Result Output Size SET COLSIZE N;Sets the number of characters to output when CHAR or VARCHAR type columns are output as a SELECT quer y result. SET NUM[WIDTH] N;Sets the number of characters to out- put when data of NUMERIC, DECIMAL, NUMBER, FLOAT type columns are out- put as a SELECT query result. Default : 11 Show SQL Statement Execution Time SET TIMING ON; SET TIMING OFF; Sets whether to output the amount of time taken to execute a SQL command. Default: OFF Set the SQL Statement Execution Time Units for Output SET TIMESCALE SEC; SET TIMESCALE MIL- SEC; SET TIME MICSEC; SET TIMESCALE NAN- SEC; Sets the unit of time for executing SQL statements as seconds, milliseconds, microseconds or nanoseconds. Show/Hide CHECK Con- straint Infor- mation SET CHKCONSTRAINTS ON; SET CHKCONSTRAINTS OFF; Sets whether to output CHECK con- straint output including information when displaying the table structure (using DESC). Default: OFF Categor y Type Command Description 1.4 iSQL Commands iSQL User’s Manual 12 Control Out- put Option Show/Hide Script Execu- tion Result SET TERM ON; SET TERM OFF; Determines whether to display the results of execution of a script file on the screen. Default: ON Output Execu- tion Plan Tree ALTER SESSION SET EXPLAIN PLAN=ON; ALTER SESSION SET EXPLAIN PLAN=ONLY; ALTER SESSION SET EXPLAIN PLAN=OFF; Determines whether to output an exe - cution plan for a SELECT statement. Default: OFF SELEC T Result Output Direc- tion SET VERTICAL ON; SET VERTICAL OFF; Displays SELECT results ver tically when set to ON. Default: OFF Show Value of iSQL Display Settings SHOW LINESIZE Displays the current LINESIZE value. SHOW COLSIZE Displays the current COLSIZE value. SHOW LOBOFFSETDisplays the current LOBOFFSET value. SHOW LOBSIZEDisplays the current LOBSIZE value. SHOW PAGESIZE Displays the current PAGESIZE value. SHOW PLANCOMMITShows whether PLANCOMMIT is ON or OFF. SHOW QUERYLOGGING Shows whether DML statements wil be written to ALTIBASE_HOME/trc/ isql_query.log when executed. SHOW FEEDBACK Shows the current FEEDBACK value. SHOW HEADINGShows the current HEADING setting. SHOW TERMShows the current TERM setting. SHOW TIMING Shows the current TIMING setting. SHOW TIMESCALEThis shows the current time units for the execution of SQL statements. SHOW USERShows the current user. SHOW CHKCON- STRAINTS Shows whether the current check con- straint is set or not. SHOW FOREIGNKEYS Shows the current foreign key display setting. SHOW VERTICALL Shows whether the results of a SELECT quer y will be output ver tically. SHOW ALLShows the set values of the display set- tings for the current session. Categor y Type Command Description 1.4 iSQL Commands 13 Using iSQL Variable and Prepared SQL Statements Va r i a b l e D e c - laration VAR p1 INTEGER;Declares the variable p1 as integer type. VARIABLE p2 CHAR(10); Declares the variable p2 as CHAR type. Assign Values to Variables EXECUTE :p1:=100;Assigns the value 100 to variable p1. EXEC :p2:=’abc’;Assigns the text ’abc’ to variable p2. Va r i a b l e D i s - play PRINT VAR[IABLE];Shows the currently declared variables. PRINT p1;Shows the type and value of variable p1. Prepared SQL Statement Execution PREPARE SQL state- ment; Separates the processes of quer y opti- mization and execution, and executes the quer y as a prepared SQL statement. In iSQL, the default execution method for executing SQL statements is the Direct Execution method, in which opti- mization and execution are per formed at once. There is no difference between the two execution methods in iSQL in terms of the results obtained, however, prepared SQL statements can be used to bind variables to values and execute SQL statements based thereon. Functions for User Conve - nience Histor y List Display HISTORY; H; Shows a list of the commands currently saved in the iSQL buffer. Repeat Execu- tion /Repeats execution of the command cur- rently in the iSQL buffer. The most recently executed command will be executed again. 2/Executes the second command in a list output using the HISTORY command. Shell Com- mand Execu- tion ! shell command! A shell command that follows an excla- mation point will be immediately exe - cuted from within iSQL. Comment/*comment*/ --comment Indicate a multiple -line comment and a single -line comment, respectively. HelpHELP; HELP INDEX; HELP EXIT; Provides information about how to use help, outputs a list of commands, and describes the EXIT command, respec- tively. Categor y Type Command Description 1.5 iSQL Environment Variables iSQL User’s Manual 14 1.5 iSQL Environment Variables 1.5.1 ALTIBASE_HOME Sets the director y in which the package is installed. In the case of MS Windows, this is set automatically when the ser ver is installed, however, when the client is installed, this is not automatically set due to the danger of a conflict with the environment variables for the ser ver. When installing the client, the user must manually set this director y. This environmental variable must be set in order to use iSQL. Ex) Windows (Server): ‘set ALTIBASE_HOME=C:/Program Files/Altibase/ Altibase5_Server/altibase_home’, Windows (Client): ‘set ALTIBASE_HOME=C:/Program Files/Altibase/ Altibase5_Client/altibase_home_client’) 1.5.2 ALTIBASE_PORT_NO This is the por t number of the ser ver to connect to. This can be specified either by using the -PORT option or in altibase.properties. If no designated por t number can be found (in descending order of precedence) in the -PORT option, in the environment variable ALTIBASE_PORT_NO, or in altibase.properties, a prompt to enter the por t number will appear. 1.5.3 ALTIBASE_NLS_USE This is the character set used to display retrieved results to the user. US7ASCII K O16 K SC 56 01 MS949 BIG5 G B 231 28 0 UTF8 SHIFTJIS EUCJP T h is ca n b e set ei th er using the -NLS_USE option or in altibase.properties. If NLS_USE is not specified using the -NLS_USE option, the environment variable ALTIBASE_NLS_USE, or altibase.properties (in descending order of precedence), 1.5 iSQL Environment Variables 15 Using iSQL US7ASCII is used as the default character set. 1.5.4 ALTIBASE_NLS_NCHAR_LITERAL_REPLACE By default, iSQL conver ts an entire quer y string to the database character set before sending the data to the database. This behavior can be prevented for a given string literal by setting the ALTIBASE_NLS_NCHAR_LITERAL_REPLACE proper ty to 1 and placing the “N” character in front of the string literal. A proper ty setting of 1 instructs iSQL to search for the “N” character in front of every string literal. If the “N” character is found, iSQL sends the string to the database without conver ting it to the database character set. This is useful when it is desired to use NCHAR type data that is encoded dif- ferently from the database character set. 0: Conver t all strings to the database character set without checking for the “N” character. 1: Do not conver t strings that are preceded by the “N” character to the database character set. Note: Setting this variable to 1 can be expensive in terms of usage of client resources. 1.5.5 ISQL_CONNECTION When ALTIBASE HDB is used in a client-server arrangement, the user can set environment variables to select the client-ser ver protocol that is suitable for the operating environment. ALTIBASE HDB suppor ts the TCP/IP, IPC, and Unix domain socket protocols. The default protocol for communication with ALTIBASE HDB ser vers is TCP/IP. Note that when using the IPC protocol the value of ALTIBASE HDB proper ties related to the IPC channel (IPC_CHANNEL_COUNT) must be considered. The following example shows how to set the environment variable when using the IPC protocol: CSH: setenv ISQL_CONNECTION IPC SH: ISQL_CONNECTION=IPC; export ISQL_CONNECTION Note: If the remote ser ver is specified for the -s option and iSQL is executed, a warning message that the ISQL_CONNECTION setting has been ignored is output and iSQL connects to the remote ser ver, regardless of the value set to the ISQL_CONNECTION environment variable. 1.5.6 ISQL_BUFFER_SIZE The size of the buffer in which to store queries can be set using this environment variable. Ex) CSH: setenv ISQL_BUFFER_SIZE 128000 SH: ISQL_BUFFER_SIZE = 128000; export ISQL_BUFFER_SIZE 1.5.7 ALTIBASE_DATE_FORMAT When retrieving Date type data using a SELECT statement, the environment variable ALTIBASE_DATE_FORMAT can be used to change the default date format, which is YYYY/MM/DD HH:MI:SS, to some other date format. 1.5 iSQL Environment Variables iSQL User’s Manual 16 Ex) For Born, Korn, or Bash Shell export ALTIBASE_DATE_FORMAT=’DD-MON-YYYY’ 1.5.8 ISQL_EDITOR This environment variable can be used to change the default editor ( Windows: notepad, the others: /bin/vi ). Ex) CSH: setenv ISQL_EDITOR /usr/bin/ed SH: ISQL_EDITOR=/usr/bin/ed; export ISQL_EDITOR 1.5.9 ALTIBASE_IPC_FILEPATH In a Unix environment, if a client and the ser ver have different values for ALTIBASE_HOME, they will not be able to connect via IPC if they have different Unix domain socket paths. In this case, in order to be able to connect via IPC, it will be necessar y to set the ALTIBASE_IPC_FILEPATH environ- ment variable or the -IPC-FILEPATH iSQL option to the $ALTIBASE_HOME/trc/cm-ipc file used by the ser ver. 1.5.10 ALTIBASE_TIME_ZONE This environment variable sets the time zone of the client. If DB_TZ is specified for this option, the time zone is defaulted to that of the database ser ver. This environment variable can be set with time zone names like Asia/Seoul, abbreviations such as KST and UTC offset values as +09:00 are valid for specification. 1.6 Personalizing iSQL 17 Using iSQL 1.6 Personalizing iSQL iSQL users can customize their iSQL environment and use the same settings for each session. For example, using the OS file, the user can specify a desired output format so that each quer y result dis- plays the current time whenever quer y results are output. These files can be categorized into the fol- lowing two types. 1.6.1 glogin.sql For initialization tasks that must be conducted when iSQL is star ted, iSQL suppor ts the creation of a global script file, glogin.sql, by the DB administrator. iSQL executes this script whenever any user executes iSQL or attempts to connect to ALTIBASE HDB for the first time. The global file allows the DB administrator to make site -specific iSQL environment settings for all users. The global script file is located in $ALTIBASE_HOME/conf. 1.6.2 login.sql iSQL also supports the login.sql file, which is executed after glogin.sql. If both the glogin.sql file and the login.sql file exist, login.sql is executed after glogin.sql dur- ing iSQL star tup, so the commands in login.sql will take precedence. If several people share one Unix account, it will be impossible for them to personalize the glogin.sql file. In this case, individual users may add SQL commands, stored procedures, or iSQL commands to their respective login.sql files in their personal work directories. When a user star ts up iSQL, iSQL automatically searches the current director y for the login.sql file and executes the commands in it. The login.sql file cannot modify initial iSQL settings or individual session actions. 1.6.3 Editing the LOGIN Fil e The user may change the LOGIN file, like any other script. The following is an example of user1 creat- ing a LOGIN file that turns off autocommit mode and executes SQL statements: $ vi glogin.sql AUTOCOMMIT ON SET HEADING OFF SELECT sysdate FROM dual; $ vi login.sql AUTOCOMMIT OFF SET HEADING ON DROP TABLE savept; CREATE TABLE savept(num INTEGER); INSERT INTO savept VALUES(1); SAVEPOINT sp1; INSERT INTO savept VALUES(2); SELECT * FROM savept; ROLLBACK TO SAVEPOINT sp1; SELECT * FROM savept; COMMIT; $ isql 1.6 Personalizing iSQL iSQL User’s Manual 18 ----------------------------------------------- Altibase Client Query utility. Release Version 6.3.1 Copyright 2015, Altibase Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : user1 Write Password : ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 Set autocommit on success. -> Executing glogin.sql first 28-DEC-2004 -> Heading off 1 row selected. Set autocommit off success. -> Execute login.sql in the current work director y of the user after glogin.sql is executed. Drop success. Create success. 1 row inserted. Savepoint success. -> It is executable only when autocommit mode is off 1 row inserted. NUM -> Heading on -------------- 1 2 2 rows selected. Rollback success. NUM -------------- 1 1 row selected. Commit success. 1.6.4 Notes Fo r s e c u r i t y r e a s o n s , t h e CONNECT command which inputs both the user name and password can- not be used with the LOGIN file. If the CONNECT command is included in the LOGIN file, the follow- ing warning message is output and the command is not executed. WARNING: CONNECT command in glogin.sql file ignored 19 Examples of iSQL in Use 2 Examples of iSQL in Use This chapter describes several examples of the use of iSQL to manipulate databases. 2.1 Logging In to iSQL iSQL User’s Manual 20 2.1 Logging In to iSQL To u s e iSQL, users must first be logged in. Connection information may be input directly via a com- mand line, or via the iSQL input prompt. isql -U userID -P password [-SYSDBA] or isql [-SYSDBA] Additional information necessar y for connection with the ser ver is the ser ver name (-S), user ID (- U), and password (-P). The user ID and password are case -insensitive. In order for the user SYS to use iSQL as an administrator, the SYSDBA option is used. The SYSDBA option can be used for remote access. 2.1.1 Login Restric tions Only one user is permitted to connect in SYSDBA mode at one time. Two or more users cannot connec t in SYSDBA mode at the same time. You can access the database remotely in SYSDBA mode, but can' t star t up the database. For detailed information about system privileges, please refer to the ALTIBASE HDB SQL Reference. For detailed information about errors that may arise during iSQL execution, please refer to the ALTIBASE HDB Error Message Reference. $ isql -S 127.0.0.1 -U sys -P manager [-SYSDBA] or $ isql [-sysdba] ----------------------------------------------- Altibase Client Query utility. Release Version 6.3.1 Copyright 2015, Altibase Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------- Write Server Name (default: 127.0.0.1) : Write UserID : sys Write Password : manager -> The password on the screen is not displayed. ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL(sysdba)> -> iSQL is connected to the ser ver, and SQL, iSQL, and PSM commands can be input and executed here. 2.2 Starting Up and Shutting Down ALTIBASE HDB 21 Examples of iSQL in Use 2.2 Star ting Up and Shutting Down ALTIBASE HDB iSQL can be used to star t up and shut down ALTIBASE HDB. 2.2.1 Star ting Up ALTIBASE HDB To s t a r t u p A LT I B A S E H D B , iSQL must first be launched with the -sysdba option, in the same way as when a database is created. Note: ALTIBASE HDB star tup commands can be executed only with the UNIX account with which ALTI- BASE HDB (including iSQL) was installed. The following is an example of the use of iSQL to star t up ALTIBASE HDB. For more information about star ting up ALTIBASE HDB, please refer to Chapter 4: Star tup and Shutdown in the ALTIBASE HDB Administrators’ Manual. $ isql -s 127.0.0.1 -u sys -p manager -sysdba ------------------------------------------------ Altibase Client Query utility. Release Version 6.3.1. Copyright 2015, Altibase Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------ ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1, PORT_NO = 20300 [ERR-910FB : Connected to idle instance] iSQL(sysdba)> startup service Connecting to the DB server... Connected. TRANSITION TO PHASE : PROCESS TRANSITION TO PHASE : CONTROL TRANSITION TO PHASE : META [SM] Recovery Phase - 1 : Preparing Database : Dynamic Memory Version => Parallel Loading [SM] Recovery Phase - 2 : Loading Database [SM] Recovery Phase - 3 : Skipping Recovery Threads... Refining Disk Table [SM] Refine Memory Table : ............................................................................ ........................ [SUCCESS] [SM] Rebuilding Indices [Total Count:101] ............................................................................ ......................... [SUCCESS] TRANSITION TO PHASE : SERVICE [CM] Listener started : TCP on port 20300 [CM] Listener started : UNIX [RP] Initialization : [PASS] --- STARTUP Process SUCCESS --- Command execute success. 2.2.2 Shutting Down ALTIBASE HDB Use the SHUTDOWN command to shut down a running ALTIBASE HDB ser ver. 2.2 Starting Up and Shutting Down ALTIBASE HDB iSQL User’s Manual 22 The following is an example of the use of iSQL to shut down ALTIBASE HDB. For more information about shutting down ALTIBASE HDB, please refer to Chapter 4: Star tup and Shutdown in the ALTIBASE HDB Administrators’ Manual. iSQL(sysdba)> shutdown normal Ok..Shutdown Proceeding.... TRANSITION TO PHASE : Shutdown Altibase [RP] Finalization : PASS shutdown normal success. 2.3 Connecting and Disconnecting 23 Examples of iSQL in Use 2.3 Connec ting and Disconnec ting 2.3.1 Connec ting to a Database The CONNECT command is used to connect to ALTIBASE HDB with a specified user ID. If the first con- nection attempt fails, the CONNECT command does not prompt again for the user ID or password. CONNECT [logon] [nls] [AS SYSDBA]; where logon has the syntax: userID[/password] and nls has the syntax: NLS=character_set 2.3.1.1 userID/password The user ID and password with which to establish a connection to ALTIBASE HDB. 2.3.1.2 NLS=character_set The NLS option specifies the character set. iSQL> CONNECT sys/manager NLS=US7ASCII Connect success. 2.3.1.3 AS SYSDBA The AS clause permits the user SYS to access the ser ver in sysdba manager mode. If CONNECT is successful, the current session is terminated, and a connection is established to the ser ver using the specified user ID and password and the information in altibase.properties. Accordingly, the session information is cleared before connecting. For instance, if autocommit mode is set to TRUE in altibase.properties and autocommit mode is changed to FALSE in iSQL, when the CONNECT statement is executed, autocommit mode will be changed to TRUE, because of the value in altibase.properties. If CONNECT fails, the previous session is terminated and the connection with the ser ver is closed. In other words, the result of all SQL statements executed thereafter will be a “Not connected” mes- sage. Execute “CONNECT user ID/password [AS SYSDBA]” to attempt to re - establish a con- nection with the ser ver. $ isql ----------------------------------------------- Altibase Client Query utility. Release Version 6.3.1. Copyright 2015, Altibase Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------- Write Server Name (default:127.0.0.1) : 2.3 Connecting and Disconnecting iSQL User’s Manual 24 Write UserID : SYS Write Password : ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL> SHOW USER; User : SYS iSQL> CREATE USER altiadmin IDENTIFIED BY alti1234; Create success. iSQL> CONNECT altiadmin/alti1234; Connect success. iSQL> SHOW USER; User : ALTIADMIN iSQL> CREATE TABLE altitbl(i1 INTEGER, i2 CHAR(5)); Create success. iSQL> SELECT * FROM tab; TABLE NAME TYPE --------------------------------------------- ALTITBL TABLE CLEAR_DP SYNONYM DUAL SYNONYM EXPORT_PARTITION_TO_FILE SYNONYM EXPORT_TO_FILE SYNONYM EXPORT_USER_TABLES SYNONYM FCLOSE SYNONYM FCLOSE_ALL SYNONYM FCOPY SYNONYM FFLUSH SYNONYM FOPEN SYNONYM FREMOVE SYNONYM FRENAME SYNONYM GET_LINE SYNONYM IMPORT_FROM_FILE SYNONYM IS_OPEN SYNONYM NEW_LINE SYNONYM PRINT SYNONYM PRINTLN SYNONYM PUT SYNONYM PUT_LINE SYNONYM RAISE_APPLICATION_ERROR SYNONYM REGISTER SYNONYM REMOVE SYNONYM REMOVEALL SYNONYM REMOVE_DP SYNONYM REMOVE_XID SYNONYM RESUME_DP SYNONYM SET_DEFAULTS SYNONYM SIGNAL SYNONYM SLEEP SYNONYM WAITANY SYNONYM WAITONE SYNONYM 33 rows selected. iSQL> CONNECT sys/manager; Connect success. iSQL> SHOW USER; User : SYS iSQL> CREATE TABLE systbl(i1 INTEGER, i2 CHAR(5)); Create success. 2.3 Connecting and Disconnecting 25 Examples of iSQL in Use iSQL> SELECT * FROM tab; USER NAME TABLE NAME TYPE -------------------------------------------------- SYSTEM_ STO_COLUMNS_ SYSTEM TABLE SYSTEM_ STO_DATUMS_ SYSTEM TABLE SYSTEM_ STO_ELLIPSOIDS_ SYSTEM TABLE SYSTEM_ STO_GEOCCS_ SYSTEM TABLE SYSTEM_ STO_GEOGCS_ SYSTEM TABLE SYSTEM_ STO_PRIMEMS_ SYSTEM TABLE SYSTEM_ STO_PROJCS_ SYSTEM TABLE SYSTEM_ STO_PROJECTIONS_ SYSTEM TABLE SYSTEM_ STO_SRS_ SYSTEM TABLE SYSTEM_ STO_USER_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_COMMENTS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINTS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINT_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_DATABASE_ SYSTEM TABLE SYSTEM_ SYS_DATABASE_LINKS_ SYSTEM TABLE SYSTEM_ SYS_DATA_PORTS_ SYSTEM TABLE SYSTEM_ SYS_DIRECTORIES_ SYSTEM TABLE SYSTEM_ SYS_DN_USERS_ SYSTEM TABLE SYSTEM_ SYS_DUMMY_ SYSTEM TABLE SYSTEM_ SYS_ENCRYPTED_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_GRANT_OBJECT_ SYSTEM TABLE SYSTEM_ SYS_GRANT_SYSTEM_ SYSTEM TABLE SYSTEM_ SYS_INDEX_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_INDEX_PARTITIONS_ SYSTEM TABLE SYSTEM_ SYS_INDICES_ SYSTEM TABLE SYSTEM_ SYS_LOBS_ SYSTEM TABLE SYSTEM_ SYS_PART_INDICES_ SYSTEM TABLE SYSTEM_ SYS_PART_KEY_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_PART_LOBS_ SYSTEM TABLE SYSTEM_ SYS_PART_TABLES_ SYSTEM TABLE SYSTEM_ SYS_PRIVILEGES_ SYSTEM TABLE SYSTEM_ SYS_PROCEDURES_ SYSTEM TABLE SYSTEM_ SYS_PROC_PARAS_ SYSTEM TABLE SYSTEM_ SYS_PROC_PARSE_ SYSTEM TABLE SYSTEM_ SYS_PROC_RELATED_ SYSTEM TABLE SYSTEM_ SYS_REPLICATIONS_ SYSTEM TABLE SYSTEM_ SYS_REPL_HOSTS_ SYSTEM TABLE SYSTEM_ SYS_REPL_ITEMS_ SYSTEM TABLE SYSTEM_ SYS_REPL_OFFLINE_DIR_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_INDEX_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_INDICES_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_ITEMS_ SYSTEM TABLE SYSTEM_ SYS_REPL_RECOVERY_INFOS_ SYSTEM TABLE SYSTEM_ SYS_SECURITY_ SYSTEM TABLE SYSTEM_ SYS_SYNONYMS_ SYSTEM TABLE SYSTEM_ SYS_TABLES_ SYSTEM TABLE SYSTEM_ SYS_TABLE_PARTITIONS_ SYSTEM TABLE SYSTEM_ SYS_TBS_USERS_ SYSTEM TABLE SYSTEM_ SYS_TRIGGERS_ SYSTEM TABLE SYSTEM_ SYS_TRIGGER_DML_TABLES_ SYSTEM TABLE SYSTEM_ SYS_TRIGGER_STRINGS_ SYSTEM TABLE SYSTEM_ SYS_TRIGGER_UPDATE_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_USERS_ SYSTEM TABLE SYSTEM_ SYS_VIEWS_ SYSTEM TABLE SYSTEM_ SYS_VIEW_PARSE_ SYSTEM TABLE SYSTEM_ SYS_VIEW_RELATED_ SYSTEM TABLE SYSTEM_ SYS_XA_HEURISTIC_TRANS_ SYSTEM TABLE ALTIADMIN ALTITBL TABLE SYS SYSTBL TABLE 2.3 Connecting and Disconnecting iSQL User’s Manual 26 CLEAR_DP SYNONYM DUAL SYNONYM EXPORT_PARTITION_TO_FILE SYNONYM EXPORT_TO_FILE SYNONYM EXPORT_USER_TABLES SYNONYM FCLOSE SYNONYM FCLOSE_ALL SYNONYM FCOPY SYNONYM FFLUSH SYNONYM FOPEN SYNONYM FREMOVE SYNONYM FRENAME SYNONYM GET_LINE SYNONYM IMPORT_FROM_FILE SYNONYM IS_OPEN SYNONYM NEW_LINE SYNONYM PRINT SYNONYM PRINTLN SYNONYM PUT SYNONYM PUT_LINE SYNONYM RAISE_APPLICATION_ERROR SYNONYM REGISTER SYNONYM REMOVE SYNONYM REMOVEALL SYNONYM REMOVE_DP SYNONYM REMOVE_XID SYNONYM RESUME_DP SYNONYM SET_DEFAULTS SYNONYM SIGNAL SYNONYM SLEEP SYNONYM WAITANY SYNONYM WAITONE SYNONYM 93 rows selected. 2.3.2 Disconnec ting from a Database DISCONNECT is used to terminate the current session and disconnect from the ser ver. The result of all subsequently executed SQL statements will be a “Not connected” message, and “CONNECT user ID/password” must be executed in order to connect to the server again. DISCONNECT; iSQL> INSERT INTO systbl VALUES(1, 'A1'); 1 row inserted. iSQL> INSERT INTO systbl VALUES(2, 'A2'); 1 row inserted. iSQL> SELECT * FROM systbl; I1 I2 ---------------------- 1 A1 2 A2 2 rows selected. iSQL> DISCONNECT; Disconnect success. iSQL> INSERT INTO systbl VALUES(3, 'A3'); [ERR-91020 : No Connection State] iSQL> SELECT * FROM systbl; [ERR-91020 : No Connection State] iSQL> CONNECT sys/manager; Connect success. 2.4 Retrieving Information Related to the Database and Database Objects 27 Examples of iSQL in Use 2.4 Retrieving Information Related to the Database and Database Objec ts 2.4.1 Per formance Views A per formance view is a type of data dictionar y table capable of inquiring about the ser ver status and database information. The following SELECT statement can be used to view the list of per for- mance views provided by ALTIBASE HDB: iSQL> SELECT * FROM v$tab; TABLE NAME TYPE --------------------------------------------- V$ALLCOLUMN PERFORMANCE VIEW V$ARCHIVE PERFORMANCE VIEW V$BUFFPAGEINFO PERFORMANCE VIEW V$BUFFPOOL_STAT PERFORMANCE VIEW V$CATALOG PERFORMANCE VIEW V$DATABASE PERFORMANCE VIEW V$DATAFILES PERFORMANCE VIEW V$DATATYPE PERFORMANCE VIEW V$DBA_2PC_PENDING PERFORMANCE VIEW V$DBLINK_REMOTE_STATEMENT_INFO PERFORMANCE VIEW V$DBLINK_REMOTE_TRANSACTION_INFO PERFORMANCE VIEW V$DBLINK_TRANSACTION_INFO PERFORMANCE VIEW V$DB_FREEPAGELISTS PERFORMANCE VIEW V$DB_PROTOCOL PERFORMANCE VIEW V$DIRECT_PATH_INSERT PERFORMANCE VIEW V$DISKTBL_INFO PERFORMANCE VIEW V$DISK_BTREE_HEADER PERFORMANCE VIEW V$DISK_RTREE_HEADER PERFORMANCE VIEW V$EVENT_NAME PERFORMANCE VIEW V$FILESTAT PERFORMANCE VIEW V$FLUSHER PERFORMANCE VIEW V$FLUSHINFO PERFORMANCE VIEW . . For the complete list of the per formance views provided with ALTIBASE HDB and the meanings of the columns, please refer to Chapter 3: Data Dictionary in the ALTIBASE HDB General Reference. Data in a par ticular per formance view can be queried in the same way as an ordinar y table using a SELECT statement, and using joins, etc., results can be output in various forms. 2.4.2 Viewing the List of Tables Information about all of the tables that exist in the database can be retrieved using the following SELECT statement. The SYS_TABLES_ meta table is an internal system table that contains infor- mation about the database catalog provided by ALTIBASE HDB. iSQL> SELECT * FROM system_.sys_tables_; . . iSQL> SELECT * FROM tab; -> This command is available in iSQL only. USER NAME TABLE NAME TYPE -------------------------------------------------- . . 2.4 Retrieving Information Related to the Database and Database Objects iSQL User’s Manual 28 2.4.3 Viewing a Table Struc ture The following command is used to retrieve information on user-created tables: DESC table_name; CREATE TABLE departments ( DNO SMALLINT PRIMARY KEY, DNAME CHAR(30) NOT NULL, DEP_LOCATION CHAR(9), MGR_NO INTEGER ); iSQL> DESC departments; -> table_name: The name of a table whose information (table structure) you want to know. [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ----------------------------------------------------------- NAME TYPE IS NULL ----------------------------------------------------------- DNO SMALLINT FIXED NOT NULL DNAME CHAR(30) FIXED NOT NULL DEP_LOCATION CHAR(9) FIXED MGR_NO INTEGER FIXED [ INDEX ] ----------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- __SYS_IDX_ID_122 BTREE UNIQUE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- DNO 2.4.4 Viewing Sequence Information The following commands are used to obtain information on all sequences that exist in the database: SELECT * FROM seq; iSQL> CONNECT sys/manager; Connect success. iSQL> CREATE USER user1 IDENTIFIED BY user1; Create success. iSQL> CONNECT user1/user1; Connect success. iSQL> CREATE SEQUENCE seq1 MAXVALUE 100 CYCLE; Create success. iSQL> CREATE SEQUENCE seq2; Create success. iSQL> CONNECT sys/manager; Connect success. iSQL> CREATE SEQUENCE seq2 START WITH 20 INCREMENT BY 30; Create success. iSQL> CREATE SEQUENCE seq3 CACHE 40; Create success. iSQL> SELECT * FROM seq; -> When accessing the database using the SYS account, information of all sequences will be displayed. USER_NAME -------------------------------------------- SEQUENCE_NAME CURRENT_VALUE -------------------------------------------------------------------- INCREMENT_BY MIN_VALUE MAX_VALUE CYCLE 2.4 Retrieving Information Related to the Database and Database Objects 29 Examples of iSQL in Use ---------------------------------------------------------------------------- CACHE_SIZE ------------------------- SYS SEQ2 30 1 9223372036854775806 NO 20 SYS SEQ3 1 1 9223372036854775806 NO 40 USER1 SEQ1 1 1 100 YES 20 USER1 SEQ2 1 1 9223372036854775806 NO 20 4 rows selected. iSQL> CONNECT user1/user1; Connect success. iSQL> SELECT * FROM seq; -> Information of all sequences created by user1 will be displayed. SEQUENCE_NAME CURRENT_VALUE -------------------------------------------------------------------- INCREMENT_BY MIN_VALUE MAX_VALUE CYCLE ---------------------------------------------------------------------------- CACHE_SIZE ------------------------- SEQ1 1 1 100 YES 20 SEQ2 1 1 9223372036854775806 NO 20 2 rows selected. 2.5 Controlling Transactions iSQL User’s Manual 30 2.5 Controlling Transac tions 2.5.1 Defining Transac tion Modes AUTOCOMMIT determines whether to automatically commit the results of a command at the time of execution. iSQL> AUTOCOMMIT OFF; -> Commands are not automatically committed before being manually committed by the user. Set autocommit off success. iSQL> AUTOCOMMIT ON; -> Commands are automatically committed at the time of execution. Set autocommit on success. 2.5.2 PLANCOMMIT SET PLANCOMMIT [ON/OFF]; When EXPLAIN PLAN has been set to ON or ONLY, there is the possibility that the iSQL com- mands DESC, SELECT * FROM TAB, SELECT * FROM SEQ will be committed, even if AUTO- COMMIT has been set to OFF. This setting determines whether to commit them automatically. This setting has been provided to overcome the misunderstanding where the user believes that such a command has not been prepared, but the system prepares the command in order to gener- ate the execution plan. The command would then be committed, without the user knowing it, when a COMMIT command is executed later. When this value is OFF (which is the default) in a session for which EXPLAIN PLAN is ON (or ONLY) and AUTOCOMMIT is OFF, ALTIBASE HDB does not auto- commit the above commands (DESC, SELECT * FROM TAB, SELECT * FROM SEQ). When this value is ON, iSQL issues a special COMMIT command to commit these commands. 2.6 File Management 31 Examples of iSQL in Use 2.6 File Management 2.6.1 Saving Results iSQL enables results returned through iSQL to b e s aved i n a d e s i gna ted fi l e. I n t he foll ow i ng ex a m - ple, results are stored in the designated file, book.txt, using the SPOOL command. To cancel this command, use the SPOOL OFF command. iSQL> SPOOL book.txt Spool start. [book.txt] -> All subsequently executed commands and their results will be written to book.txt. The file is created in the current director y. iSQL> SPOOL OFF Spool Stop -> From this point on, no more commands or results will be saved in the file. 2.6.2 Running Scripts 2.6.2.1 @ Command @ file_name[.sql] or START file_name[.sql] file_name[.sql]: The script file to be executed. If the filename extension is omitted, iSQL assumes the default command file extension (.sql). When this command is executed, , iSQL executes all of the commands in the specified script file in sequence. The @ command per forms the same function as START. An EXIT or QUIT command in the script file terminates iSQL. The script file may include general SQL statements, iSQL commands, references to stored pro - cedures, etc. The following is an example in which the schema.sql script, which can be found in the $ALTIBASE_HOME/sample/APRE/schema director y, which is the current director y, is exe - cuted. iSQL> START schema.sql -> The SQL statements in the file are executed. or iSQL> @schema.sql When specifying a script file, you can use a question mark (“?”) to indicate the ALTIBASE HDB home director y ($ALTIBASE_HOME) of the user account. The following is an example in which the schema.sql script, which can be found in the $ALTIBASE_HOME/sample/APRE/schema director y, is executed regardless of which director y is the current directory. 2.6 File Management iSQL User’s Manual 32 iSQL> @?/sample/APRE/schema/schema.sql The question mark (“?”) can also be used with the following iSQL commands: EDIT, SAVE, LOAD, SPOOL, START The -- or /**/ characters can be used to inser t comments in script files. -- means that everything that follows until the end of the line will be handled as a comment, whereas comments that span several lines are placed between /* and */. 2.6.2.2 @@ Command @@ file_name[.sql] file_name[.sql]: This indicates the embedded script to be executed. If the extension is omit- ted, iSQL assumes the default command file extension(.sql). Executes the specified script. The functionality of the @@ command is similar to that of the @ com- mand. This command searches for script files in the same path as the script currently being executed, and is thus useful for executing embedded scripts. The @@ command can be used for the following purposes: If a script file that contains the text @@file_name.sql is executed, iSQL looks for the file specified by file_name.sql, and executes its contents in sequence. file_name.sql must be located in the same director y as the script file that called it. If no such file exists, iSQL raises an error. If a user inputs @@file_name.sql at the iSQL prompt, the result will be the same as when using iSQL to execute @file_name.sql. The script typically may include SQL statements, iSQL commands, or stored procedures. An EXIT or QUIT command in the script terminates iSQL. The following is an example of the execution of a.sql, in which schema.sql is referenced, from the $ALTIBASE_HOME director y. In order for this example to be executed without error, a.sql must exist in the $ALTIBASE_HOME/sample/APRE/schema director y alongside schema.sql. iSQL> @sample/APRE/schema/a.sql $ cat a.sql @@schema.sql Note: The following chapter provides examples of editing the results of a query in an iSQL environment based on the tables created by execution of the above script. 2.6.3 Saving SQL Statements Of the commands currently in the iSQL buffer, the SAVE command saves the most recently exe - cuted one in a file. 2.6 File Management 33 Examples of iSQL in Use This file will be created in the current directory. iSQL> SELECT * FROM book; iSQL> SAVE book.sql -> ‘SELECT * FROM book;’ is saved in the file book.sql. Save completed. 2.6.4 Loading SQL Statements This function loads the first command in the specified file to the last position in the iSQL buffer. iSQL> LOAD book.sql iSQL> SELECT * FROM book; Load completed. iSQL> / -> The results of execution of SELECT * FROM book; can be seen. 2.6.5 Saving DML Statements Executed DML statements such as INSERT, UPDATE, DELETE, MOVE are saved in $ALTIBASE_HOME/trc/isql_query.log. Specify SET QUERYLOGGING ON to use this functionality and OFF to disable it. iSQL> SET QUERYLOGGING ON; -> From this point on, all executed DML statements will be saved in $ALTIBASE_HOME/trc/isql_query.log. iSQL> CREATE TABLE t1 ( I1 INTEGER ); Create success. iSQL> INSERT INTO t1 VALUES ( 1 ); 1 row inserted. iSQL> UPDATE t1 SET i1 = 2; 1 row updated. iSQL> SELECT * FROM t1; I1 -------------- 2 1 row selected. iSQL> DELETE FROM t1; 1 row deleted. iSQL> DROP TABLE t1; Drop success. iSQL> EXIT $ cat $ALTIBASE_HOME/trc/isql_query.log -> All queries executed since SET QUERYLOGGING ON was executed can be obser ved. [2009/09/16 10:36:14] [127.0.0.1:20300 SYS] INSERT INTO t1 VALUES ( 1 ) [2009/09/16 10:36:25] [127.0.0.1:20300 SYS] UPDATE t1 SET i1 = 2 [2009/09/16 10:36:31] [127.0.0.1:20300 SYS] DELETE FROM t1 2.6.6 Editing Quer y Statements 2.6.6.1 Editing the Most Recent Quer y Statement The command ed is provided for creating and editing files in iSQL. If you execute ed without parameters, a temporar y file named iSQL.buf containing the most recently executed quer y statements will be created, and the following screen will be visible. ( To save 2.6 File Management iSQL User’s Manual 34 space, only a few of the blank lines that would be displayed on the screen are shown here.) iSQL> SELECT sysdate FROM dual; SYSDATE --------------- 01-JAN-2000 1 row selected. iSQL> ED SELECT sysdate FROM dual; ~ ~ ~ "iSQL.buf" 1L, 26C 2.6.6.2 Editing Existing Files If you want to edit an existing file, type the file name in iSQL as a parameter when launching the text editor using the ED command. When the screen is initialized, blank lines will be displayed as ~ (tilde) characters. iSQL> ED myquery.sql "myquery.sql" INSERT INTO employees(ENO, E_FIRSTNAME, E_LASTNAME, GENDER) VALUES(21, 'Shi- loh', 'Reynolds', 'F'); INSERT INTO employees(ENO, E_FIRSTNAME, E_LASTNAME, GENDER, JOIN_DATE) VAL- UES(22, 'Joshua', 'Baldwin', 'M', TO_DATE('2001-11-19 00:00:00', 'YYYY-MM-DD HH:MI:SS')); ~ ~"myquery.sql" 2.6.6.3 Editing Quer y Statements in Histor y Lists You can use the number in the histor y list to edit previously executed commands. In detail, the query statements are stored in the temporary file iSQL.buf in association with numbers, and can be edited with reference to them. The edited quer y will be stored again as the most recent record in the histor y list, and can be executed by entering the ‘/’ (re -execute) character. iSQL> H 1 : SELECT * FROM customers; 2 : SELECT * FROM employees; iSQL> 2ed or iSQL> 2 ed SELECT * FROM employees; ~ ~ "iSQL.buf" Note: The command-line parameter 2, which is the name of the file to be edited (iSQL> 2 ed), must be distinguished from the number indicating the line in the file to edit. After editing (employees was replaced with orders) iSQL> h -> The histor y list currently in the iSQL buffer 1 : SELECT * FROM customers; 2 : SELECT * FROM employees; 2.6 File Management 35 Examples of iSQL in Use 3 : SELECT * FROM orders; -> The query statement edited using the 2 ed command will be saved as the last command in the histor y list. iSQL> / -> The most recently executed command will be executed. ONO ORDER_DATE ENO CNO ------------------------------------------------------------------------ GNO QTY ARRIVAL_DATE PROCESSING ------------------------------------------------------ 11290007 29-NOV-2010 12 7111111431202 A111100002 70 02-DEC-2010 C 11290011 29-NOV-2010 12 7610011000001 E111100001 1000 05-DEC-2010 D 11290100 29-NOV-2010 19 7001011001001 E111100001 500 07-DEC-2010 D 12100277 10-DEC-2010 19 7610121220475 . . 12310012 31-DEC-2010 19 7308281201145 C111100001 250 03-JAN-2011 O 30 rows selected. 2.7 Formatting SELECT Query Results iSQL User’s Manual 36 2.7 Formatting SELECT Quer y Results The results of a SELECT quer y can be formatted as desired by the user. 2.7.1 SET LINESIZE SET LINESIZE sets the size (number of characters) of one line to be displayed when the results of a SELECT statement are output. It must be between 10 and 32767. iSQL> set linesize 70; iSQL> select * from employees; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ EMP_JOB EMP_TEL DNO SALARY GENDER --------------------------------------------------------------------- BIRTH JOIN_DATE STATUS --------------------------------- 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H . . 20 rows selected. 2.7.2 SET LOBSIZE SET LOBSIZE specifies the number of characters to display when a CLOB column is queried using a SELECT statement. In order to quer y CLOB column data using a SELECT statement, the transaction mode must first be set to AUTOCOMMIT OFF. iSQL> CREATE TABLE c1(I1 INTEGER, I2 CLOB); INSERT INTO c1 VALUES(1, 'A123456789'); INSERT INTO c1 VALUES(2, 'A1234'); INSERT INTO c1 VALUES(3, 'A12345'); INSERT INTO c1 VALUES(4, 'A1234567890123'); iSQL> AUTOCOMMIT OFF -> This sets the transaction mode to OFF so that a CLOB column can be queried. Set autocommit off success. iSQL> SELECT * FROM c1; I 1 I 2 ---------------------------------------------------------------------------- -------------------- 1 A123456789 2 A 1 2 3 4 3 A12345 4 A1234567890123 4 rows selected. 2.7 Formatting SELECT Query Results 37 Examples of iSQL in Use iSQL> SET LOBSIZE 10; -> This specifies the number of characters to display on the screen when quer ying a CLOB column using a SELECT statement. iSQL> SELECT * FROM c1; I1 I2 -------------------------- 1 A123456789 2 A1234 3 A12345 4 A123456789 4 rows selected. 2.7.3 SET LOBOFFSET SET LOBOFFSET specifies the star ting location from which to display CLOB data when a CLOB col- umn is queried using a SELECT statement. In order to quer y CLOB column data using a SELECT statement, the transaction mode must first be set to AUTOCOMMIT OFF. iSQL> CREATE TABLE c1(I1 INTEGER, I2 CLOB); INSERT INTO c1 VALUES(1, 'A123456789'); INSERT INTO c1 VALUES(2, 'A1234'); INSERT INTO c1 VALUES(3, 'A12345'); INSERT INTO c1 VALUES(4, 'A1234567890123'); iSQL> AUTOCOMMIT OFF Set autocommit off success. iSQL> SET LOBOFFSET 4; -> This specifies the starting location of data to be shown on the screen when quer ying a CLOB column using a SELECT statement. iSQL> SELECT * FROM c1; I1 I2 -------------------------- 1 456789 2 4 3 45 4 4567890123 4 rows selected. 2.7.4 SET FEEDBACK SET FEEDBACK outputs the number of records found when the results of a SELECT statement are output. SET FEEDBACK ON|OFF|n; ON: Output the number of resultant records after execution of a SELECT statement. OFF: Do not output the number of resultant records after execution of a SELECT statement. n: Output the number of resultant records when the number is n or greater. iSQL> set feedback on; iSQL> select * from employees where eno < 3; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ EMP_JOB EMP_TEL DNO SALARY GENDER 2.7 Formatting SELECT Query Results iSQL User’s Manual 38 --------------------------------------------------------------------- BIRTH JOIN_DATE STATUS --------------------------------- 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 2 rows selected. 2.7.5 SET PAGESIZE SET PAGESIZE specifies the number of resultant rows to display at one time. iSQL> SET PAGESIZE 2; -> Show results in groups comprising two rows each. iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 3 Ken Kobain 4 Aaron Foster ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. iSQL> SET PAGESIZE 0; -> Show all of the results on one page. iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. 2.7.6 SET HEADING SET HEADING sets whether to output the header with a SELECT result. iSQL> SET HEADING OFF; -> Header is not displayed with the result. iSQL> select eno, e_firstname, e_lastname from employees; 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 2.7 Formatting SELECT Query Results 39 Examples of iSQL in Use 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. iSQL> SET HEADING ON; -> Outputs header in result. iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. 2.7.7 SET COLSIZE When the results of a SELECT statement are output, SET COLSIZE sets the number of characters from a column of type CHAR or VARCHAR to display so that columns containing long lines of text can be easily viewed. I n t he fo llowi n g ex am p le, t he nu m b er of ch arac ter s of a co lu m n o f t y pe C HA R or VA R C H A R i s s e t to 7: iSQL> CREATE TABLE location( ID INTEGER, NAME CHAR(20), ADDRESS VARCHAR(500), PHONE CHAR(20)); Create success. iSQL> INSERT INTO location VALUES(1, 'ALTIBASE', '10Fl., Daerungpost-tower II, Guro-dong, Guro-qu, Seoul 152-790. Korea', '82-2-2082-1000'); 1 row inserted. iSQL> SET COLSIZE 7; iSQL> SELECT id, name, address, phone FROM location; ID NAME ADDRESS PHONE -------------------------------------------- 1 ALTIBAS 10Fl., 82-2-20 E Daerung 82-1000 post-to wer II, Guro-d ong, Gu ro-qu, Seoul 1 52-790. Korea 1 row selected. 2.7.8 SET NUM[WIDTH] SET NUM[WIDTH] sets the number of characters to display for data of NUMERIC, DECIMAL, NUM- BER and FLOAT columns in SELECT result sets. Data with many significant digits can be made more 2.7 Formatting SELECT Query Results iSQL User’s Manual 40 legible by setting this value high. The following example sets NUMWIDTH to 30, and then queries NUMERIC, DECIMAL, NUMBER and FLOAT columns. iSQL> CREATE TABLE t1 ( c_numeric NUMERIC(38, 0), c_decimal DECIMAL(38, 0), c_number NUMBER(38, 0), c_float FLOAT(38) ); Create success. iSQL> INSERT INTO t1 VALUES(12345678901234567890, 12345678901234567890, 12345678901234567890, 12345678901234567890); 1 row inserted. iSQL> SET NUMWIDTH 30 iSQL> SELECT c_numeric, c_decimal, c_number, c_float FROM t1; C_NUMERIC C_DECIMAL ----------------------------------------------------------------- C_NUMBER C_FLOAT ----------------------------------------------------------------- 12345678901234567890 12345678901234567890 12345678901234567890 12345678901234567890 1 row selected. 2.8 Setting Output Options 41 Examples of iSQL in Use 2.8 Setting Output Options 2.8.1 Getting the Elapsed Time This function displays the time it took to execute the SQL statement. iSQL> SET TIMING ON; -> Output the execution time in the last line after the command is executed. iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 0.01 iSQL> SET TIMING OFF; -> Execution time is not displayed. 2.8.2 Setting Execution Time Units for Output This function sets the units with which to output SQL statement execution time. Can be set to the following units: Seconds M illise c o nds Microseconds N a nose c o n ds iSQL> SET TIMING ON iSQL> SET TIMESCALE SEC; iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 0.00 iSQL> SET TIMESCALE MILSEC; iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2.8 Setting Output Options iSQL User’s Manual 42 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 0.72 iSQL> SET TIMESCALE MICSEC; iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 966.00 iSQL> SET TIMESCALE NANSEC; iSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 681000.00 2.8.3 Describing Foreign Key Information This function displays information on foreign keys when the DESC command is used to view the table structure. iSQL> SET FOREIGNKEYS ON; -> The foreign key information will be output. iSQL> DESC bikes_ive_seen; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ---------------------------------------------------------------------------- NAME TYPE IS NULL ---------------------------------------------------------------------------- MID SMALLINT FIXED YEAR SMALLINT FIXED NOT NULL USED BIT(1) FIXED NOT NULL SOLD BIT(1) FIXED KMS INTEGER FIXED SAW_WHERE VARCHAR(20) FIXED ITEM_ID INTEGER FIXED NOT NULL 2.8 Setting Output Options 43 Examples of iSQL in Use COMMENT VARCHAR(100) FIXED PRICE INTEGER FIXED NOT NULL DATE_SEEN DATE FIXED [ INDEX ] ---------------------------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ---------------------------------------------------------------------------- __SYS_IDX_ID_143 BTREE UNIQUE ITEM_ID ASC [ PRIMARY KEY ] ---------------------------------------------------------------------------- ITEM_ID [ FOREIGN KEYS ] ---------------------------------------------------------------------------- * MODEL_ID * __SYS_IDX_ID_142 ( MID ) ---> SYS.CANDIDATE_MODELS ( MID ) iSQL> SET FOREIGNKEYS OFF; -> The foreign key information will not be output. iSQL> DESC bikes_ive_seen; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ---------------------------------------------------------------------------- NAME TYPE IS NULL ---------------------------------------------------------------------------- MID SMALLINT FIXED YEAR SMALLINT FIXED NOT NULL USED BIT(1) FIXED NOT NULL SOLD BIT(1) FIXED KMS INTEGER FIXED SAW_WHERE VARCHAR(20) FIXED ITEM_ID INTEGER FIXED NOT NULL COMMENT VARCHAR(100) FIXED PRICE INTEGER FIXED NOT NULL DATE_SEEN DATE FIXED [ INDEX ] ---------------------------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ---------------------------------------------------------------------------- __SYS_IDX_ID_143 BTREE UNIQUE ITEM_ID ASC [ PRIMARY KEY ] ---------------------------------------------------------------------------- ITEM_ID iSQL> 2.8.4 Describing CHECK Constraints Information This function displays information on CHECK constraints when the DESC command is used to view the table structure. iSQL> SET CHKCONSTRAINTS ON; -> Check constraint information is output. iSQL> DESC employees; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ---------------------------------------------------------------------------- -- NAME TYPE IS NULL ---------------------------------------------------------------------------- -- ENO INTEGER FIXED NOT NULL E_LASTNAME CHAR(20) FIXED NOT NULL E_FIRSTNAME CHAR(20) FIXED NOT NULL EMP_JOB VARCHAR(15) FIXED EMP_TEL CHAR(15) FIXED 2.8 Setting Output Options iSQL User’s Manual 44 DNO SMALLINT FIXED SALARY NUMERIC(10, 2) FIXED GENDER CHAR(1) FIXED BIRTH CHAR(6) FIXED JOIN_DATE DATE FIXED STATUS CHAR(1) FIXED [ INDEX ] ---------------------------------------------------------------------------- -- NAME TYPE IS UNIQUE COLUMN ---------------------------------------------------------------------------- -- __SYS_IDX_ID_238 BTREE UNIQUE ENO ASC EMP_IDX1 BTREE DNO ASC [ PRIMARY KEY ] ---------------------------------------------------------------------------- -- ENO [ CHECK CONSTRAINTS ] ---------------------------------------------------------------------------- -- NAME : EMP_CHECK_SEX1 CONDITION : GENDER in ('M', 'F') iSQL> SET CHKCONSTRAINTS OFF; -> Check constraint information is not output. iSQL> DESC employees; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ---------------------------------------------------------------------------- -- NAME TYPE IS NULL ---------------------------------------------------------------------------- -- ENO INTEGER FIXED NOT NULL E_LASTNAME CHAR(20) FIXED NOT NULL E_FIRSTNAME CHAR(20) FIXED NOT NULL EMP_JOB VARCHAR(15) FIXED EMP_TEL CHAR(15) FIXED DNO SMALLINT FIXED SALARY NUMERIC(10, 2) FIXED GENDER CHAR(1) FIXED BIRTH CHAR(6) FIXED JOIN_DATE DATE FIXED STATUS CHAR(1) FIXED [ INDEX ] ---------------------------------------------------------------------------- -- NAME TYPE IS UNIQUE COLUMN ---------------------------------------------------------------------------- -- __SYS_IDX_ID_238 BTREE UNIQUE ENO ASC EMP_IDX1 BTREE DNO ASC [ PRIMARY KEY ] ---------------------------------------------------------------------------- -- ENO 2.8.5 Outputting Script Execution Results Commands can be used to control the output of created results. 2.8 Setting Output Options 45 Examples of iSQL in Use When set to OFF, this function prevents the result of a script command executed in iSQL from being displayed on the screen. However, even if it is set OFF, the results of queries that are directly entered (e.g. iSQL> SELECT * FROM t1;) will still be displayed on the screen; the OFF setting only prevents script execution results (e.g.: iSQL> @.sql) from being displayed. iSQL> SET TERM OFF; iSQL> SET TIMING ON; -> The execution time is not output to the screen. iSQL> @schema.sql -> The script execution results are not output. iSQL> select eno, e_firstname, e_lastname from employees; -> The results of directly input queries will be output. ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 0.00 iSQL> SET TERM ON; -> Script execution results will be output. iSQL> @schema.sql iSQL> ALTER SESSION SET AUTOCOMMIT = TRUE; -> Star t of results. Alter success. iSQL> DROP TABLE ORDERS; Drop success. elapsed time : 0.00 iSQL> DROP TABLE EMPLOYEES; Drop success. elapsed time : 0.00 . . . iSQL> CREATE INDEX ODR_IDX3 ON ORDERS (GNO ASC); Create success. elapsed time : 0.00 -> End of results. 2.8.6 Outputting an Execution Plan In iSQL, an execution plan can be output to fine -tune SQL statements. Using an execution plan, DML statements such as SELECT, INSERT, UPDATE, and DELETE can be checked. In order to accomplish this, the following command must be executed before a statement such as a SELECT statement is executed. ALTER SESSION SET EXPLAIN PLAN = option This option can be set to ON, OFF, or ONLY. The default is OFF. ON: After the SELECT statement is executed, the execution plan information is displayed along with the resultant records. ONLY: The SELECT statement is prepared but not executed, and only the execution plan information is output.This can be used to check the execution plan for a SELECT statement 2.8 Setting Output Options iSQL User’s Manual 46 that involves host variable binding, or to quickly check the execution plan for queries that take a long time to execute. OFF: After the SELECT statement is executed, only the resultant records are displayed. The following command is used to obtain detailed information about how conditions included in WHERE clauses written by the user will be executed: ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 1 If this proper ty is set to 1, signifying “ON”, as in the above statement, the execution plan’s WHERE clause conditions, including FIXED KEY RANGE, VARIABLE KEY RANGE, and FILTER are classified and displayed in detail. Therefore, if the WHERE clause is complicated, you can check which predicates will be executed by scanning the sorted indexes. However, this information may not be output if queries are changed to optimize them in some way. The following example shows the output when the given SQL statement is executed: When TRCLOG_DETAIL_PREDICATE has been set to 1 (ON), and EXPLAIN PLAN=ON, the following is output in addition to the results. iSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 1; Alter success. iSQL> ALTER SESSION SET EXPLAIN PLAN = ON; Alter success. iSQL> select eno, e_lastname, e_firstname from employees where eno = 1; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ 1 Moon Chan-seung 1 row selected. ------------------------------------------------------------ PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_164, ACCESS: 1, SELF_ID: 2 ) [ FIXED KEY ] AND OR ENO = 1 ------------------------------------------------------------ iSQL> When TRCLOG_DETAIL_PREDICATE is not set to 1, and EXPLAIN PLAN=ON, the follow- ing is output in addition to the results. iSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. iSQL> ALTER SESSION SET EXPLAIN PLAN = ON; Alter success. iSQL> select eno, e_lastname, e_firstname from employees where eno = 1; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ 1 Moon Chan-seung 1 row selected. ------------------------------------------------------------ PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_164, ACCESS: 1, SELF_ID: 2 ------------------------------------------------------------ iSQL> 2.8 Setting Output Options 47 Examples of iSQL in Use When TRCLOG_DETAIL_PREDICATE is not set to 1, and EXPLAIN PLAN=ONLY, only the following is output. iSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. iSQL> ALTER SESSION SET EXPLAIN PLAN = ONLY; Alter success. iSQL> select eno, e_lastname, e_firstname from employees where eno = 1; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ No rows selected. ------------------------------------------------------------ PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_164, ACCESS: 1, SELF_ID: 2 ------------------------------------------------------------ iSQL> If EXPLAIN PLAN=ONLY, because only an execution plan is created and the quer y is not executed, values that would be determined after actual execution are indicated using question marks (“??”), like an ACCESS clause. 2.8.7 Setting Result Output Orientation When quer ying data using a SELECT statement in iSQL, the results can be displayed either hori- zontally or ver tically. This function is suitable for outputting results that comprise a small number of rows and many col- umns. If such a result set is output horizontally, as is usually the case, it is difficult to compare columns and check the values. However, it is easy to see when output ver tically. iSQL> SET VERTICAL ON; --> This sets the print direction ver tically. iSQL> SELECT * FROM employees WHERE eno = 2; ENO : 2 E_LASTNAME : Davenport E_FIRSTNAME : Susan EMP_JOB : designer EMP_TEL : 0113654540 DNO : SALARY : 1500 GENDER : F BIRTH : 721219 JOIN_DATE : 18-NOV-2009 STATUS : H 1 row selected. 2.9 Viewing iSQL Display Settings iSQL User’s Manual 48 2.9 Viewing iSQL Display Settings The following is an example of viewing the values of the iSQL environment variables for the current session: iSQL> SHOW USER -> This is the current user. User : SYS iSQL> SHOW COLSIZE ColSize : 0 iSQL> SHOW LOBOFFSET LobOffset: 0 iSQL> SHOW LINESIZE LineSize : 80 iSQL> SHOW LOBSIZE LobSize : 80 iSQL> SHOW NUMWIDTH NumWidth : 11 iSQL> SHOW PAGESIZE PageSize : 0 iSQL> SHOW TIMESCALE TimeScale : Second iSQL> SHOW HEADING Heading : On iSQL> SHOW TIMING Timing : Off iSQL> SHOW VERTICAL Vertical : Off iSQL> SHOW CHKCONSTRAINTS ChkConstraints : Off iSQL> SHOW FOREIGNKEYS ForeignKeys : Off iSQL> SHOW PLANCOMMIT PlanCommit : Off iSQL> SHOW QUERYLOGGING QueryLogging : Off iSQL> SHOW TERM Term : On iSQL> SHOW FEEDBACK Feedback : 1 iSQL> SHOW ALL User : SYS ColSize : 0 LobOffset : 0 LineSize : 80 LobSize : 80 NumWidth : 11 2.9 Viewing iSQL Display Settings 49 Examples of iSQL in Use PageSize : 0 TimeScale : Second Heading : On Timing : Off Vertical : Off ChkConstraints : Off ForeignKeys : Off PlanCommit : Off QueryLogging : Off Term : On Feedback : 1 2.10 Host Variables iSQL User’s Manual 50 2.10 Host Variables Host variables are first declared and then used. Host variables are useful when executing procedures or functions. 2.10.1 Declaring a Host Variable 2.10.1.1 Syntax VAR[IABLE] var_name[INPUT|OUTPUT|INOUTPUT] var_type On omission of INPUT or OUTPUT specification, the default value is INPUT. 2.10.1.2 Types The following types can be used when declaring variables: INTEGER, BYTE(n), NIBBLE(n), NUMBER, NUMBER(n), NUMBER(n,m), NUMERIC, NUMERIC(n), NUMERIC(n,m), CHAR(n), VARCHAR(n), NCHAR(n), NVARCHAR(n), DATE DECIMAL, DECIMAL(n), DECIMAL(n,m), FLOAT, FLOAT(n), DOUBLE, REAL BIGINT, SMALLINT 2.10.1.3 Example The following examples demonstrate how to declare variables: iSQL> VAR p1 INTEGER iSQL> VAR p2 CHAR(10) iSQL> VAR v_double DOUBLE iSQL> VAR v_real REAL 2.10.2 Assigning a Value to a Host Variable 2.10.2.1 Syntax EXEC[UTE] :var_name := value; 2.10.2.2 Example The following example shows how to assign a value to a variable: iSQL> EXECUTE :p1 := 100; Execute success. iSQL> EXEC :p2 := 'abc'; Execute success. 2.10 Host Variables 51 Examples of iSQL in Use 2.10.3 Viewing Host Variables 2.10.3.1 Syntax PRINT VAR[IABLE] -> Shows all declared variables. PRINT var_name -> Shows the type and value of the variable var_name. 2.10.3.2 Example The following shows the values of all declared variables: iSQL> PRINT VAR [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- P1 INTEGER 100 P2 CHAR(10) abc V_REAL REAL V_DOUBLE DOUBLE iSQL> PRINT p2 -> Outputs only variable p2 information. NAME TYPE VALUE ------------------------------------------------------- P2 CHAR(10) abc 2.11 Executing Prepared SQL Statements iSQL User’s Manual 52 2.11 Executing Prepared SQL Statements 2.11.1 Prepared SQL versus Dynamic SQL Statements SQL statements executed in iSQL are usually executed according to the so-called “direct execution” method. In direct execution, syntax analysis, validity testing, optimization, and execution of a quer y are all per formed at once. However, in prepared execution, only the syntax analysis, validity testing, and optimization of the quer y are per formed to set up an execution plan for the quer y, which is then executed when requested by the client. When creating an application that uses ODBC, the prepared execution method is typically used, and is more advantageous in terms of speed when a SQL state - ment is to be repeatedly executed using host variable binding. In iSQL, the difference between these two methods lies only in whether variables are used or not; there is no advantage in terms of speed. 2.11.2 Prepared SQL Statements 2.11.2.1 Syntax PREPARE SQL_statement 2.11.2.2 Example The following is an example of the use of the PREPARE command to execute a SQL statement: iSQL> VAR t1 INTEGER; iSQL> EXEC :t1 := 3; Execute success. iSQL> PREPARE SELECT eno, e_firstname, e_lastname, gender FROM employees WHERE eno=:t1; ENO : 3 E_FIRSTNAME : Ken E_LASTNAME : Kobain GENDER : M 1 row selected. 2.12 Creating, Executing, and Dropping Stored Procedures 53 Examples of iSQL in Use 2.12 Creating, Executing, and Dropping Stored Proce - dures 2.12.1 Creating Procedures Suppor t is provided for the creation and execution of stored procedures. A stored procedure must end with the following: END; / Successful creation of the procedures can be confirmed by checking the sys_procedures_ meta table. 2.12.2 Executing Procedures Procedures are executed in order to execute multiple queries at one time. If the procedure to be exe - cuted has parameters, as many variables as there are parameters must be declared before the proce - dure is executed. 2.12.2.1 Example 1 In the following example, a procedure named emp_proc, which executes an INSERT statement using IN parameters, is created: iSQL> CREATE OR REPLACE PROCEDURE emp_proc(p1 IN INTEGER, p2 IN CHAR(20), p3 IN CHAR(20), p4 IN CHAR(1)) AS BEGIN INSERT INTO employees(eno, e_firstname, e_lastname, gender) VALUES(p1, p2, p3, p4); END; / Create success. iSQL> SELECT * FROM system_.sys_procedures_ order by created desc limit 1; USER_ID PROC_OID ------------------------------------ PROC_NAME OBJECT_TYPE STATUS ---------------------------------------------------------------------- PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID RETURN_SIZE ------------------------------------------------------------- RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN CREATED ------------------------------------------------------------------------- LAST_DDL_TIME ---------------- 2 3208680 EMP_PROC 0 0 4 2 192 29-FEB-2012 29-FEB-2012 1 row selected. emp_proc, which was created above, is executed: 2.12 Creating, Executing, and Dropping Stored Procedures iSQL User’s Manual 54 iSQL> VAR eno INTEGER iSQL> VAR first_name CHAR(20) iSQL> VAR last_name CHAR(20) iSQL> VAR gender CHAR(1) iSQL> EXECUTE :eno := 21; Execute success. iSQL> EXECUTE :first_name := 'Joel'; Execute success. iSQL> EXECUTE :last_name := 'Johnson'; Execute success. iSQL> EXECUTE :gender := 'M'; Execute success. iSQL> EXECUTE emp_proc(:eno, :first_name, :last_name, :gender); Execute success. iSQL> SELECT eno, e_firstname, e_lastname, gender FROM employees WHERE eno = 21; ENO E_FIRSTNAME E_LASTNAME GENDER ----------------------------------------------------------------- 21 Joel Johnson M 1 row selected. 2.12.2.2 Example 2 In the following example, a procedure called outProc, which executes a SELECT statement, is cre - ated: iSQL> CREATE TABLE outTbl(i1 INTEGER, i2 INTEGER); Create success. iSQL> INSERT INTO outTbl VALUES(1,1); 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> SELECT * FROM outTbl; I1 I2 --------------------------- 1 1 1 1 1 1 1 1 1 1 5 rows selected. iSQL> CREATE OR REPLACE PROCEDURE outProc(a1 OUT INTEGER, a2 IN OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO a1 FROM outTbl WHERE i2 = a2; END; / Create success. In the following example, outProc is executed: iSQL> VAR t3 INTEGER iSQL> VAR t4 INTEGER iSQL> EXEC :t4 := 1; Execute success. iSQL> EXEC outProc (:t3, :t4); Execute success. 2.12 Creating, Executing, and Dropping Stored Procedures 55 Examples of iSQL in Use iSQL> PRINT t3; NAME TYPE VALUE ------------------------------------------------------ T3 INTEGER 5 2.12.2.3 Example 3 In the following example, the procedure outProc1 is created: iSQL> CREATE OR REPLACE PROCEDURE outProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1; p3 := p1 + 100; END; / Create success. iSQL> VAR v1 INTEGER iSQL> VAR v2 INTEGER iSQL> VAR v3 INTEGER iSQL> EXEC :v1 := 3; Execute success. iSQL> EXEC outProc1(:v1, :v2, :v3); Execute success. iSQL> PRINT VAR; [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- . . V1 INTEGER 3 V2 INTEGER 3 V3 INTEGER 103 . . 2.12.2.4 Example 4 In the following example, a procedure called inoutProc1, which executes a SELECT s t ate m ent , i s c re - ated: iSQL> CREATE TABLE inoutTbl(i1 INTEGER); Create success. iSQL> INSERT INTO inoutTbl VALUES(1); 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> SELECT * FROM inoutTbl; I1 -------------- 1 1 1 3 rows selected. iSQL> CREATE OR REPLACE PROCEDURE inoutProc (a1 IN OUT INTEGER) 2.12 Creating, Executing, and Dropping Stored Procedures iSQL User’s Manual 56 AS BEGIN SELECT COUNT(*) INTO a1 FROM inoutTbl WHERE i1 = a1; END; / Create success. iSQL> VAR t3 INTEGER iSQL> EXEC :t3 := 1; Execute success. iSQL> EXEC inoutProc(:t3); Execute success. iSQL> PRINT t3; NAME TYPE VALUE ------------------------------------------------------- T3 INTEGER 3 2.12.2.5 Example 5 In the following example, the procedure inoutProc1 is created: iSQL> CREATE OR REPLACE PROCEDURE inoutProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1 + p2; p3 := p1 + 100; END; / Create success. In the following example, the procedure inoutProc1 is executed: iSQL> VAR v1 INTEGER iSQL> VAR v2 INTEGER iSQL> VAR v3 INTEGER iSQL> EXEC :v1 := 3; Execute success. iSQL> EXEC :v2 := 5; Execute success. iSQL> EXEC inoutProc1(:v1, :v2, :v3); Execute success. iSQL> PRINT VAR; [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- . . V1 INTEGER 3 V2 INTEGER 8 V3 INTEGER 103 . . 2.12 Creating, Executing, and Dropping Stored Procedures 57 Examples of iSQL in Use 2.12.3 Dropping Procedures The DROP command is used to drop (delete) procedures. In the following example, the procedure emp_proc is deleted: iSQL> DROP PROCEDURE emp_proc; Drop success. 2.13 Creating, Executing, and Dropping Functions iSQL User’s Manual 58 2.13 Creating, Executing, and Dropping Func tions 2.13.1 Creating Func tions A function is provided to create functions. When creating a function, you must end with the follow- ing syntax, and the return type must be defined. END; / Successful creation of the function can be confirmed by checking the sys_procedures_ meta table. In the following example, the function emp_func, which executes an UPDATE statement and a SELECT statement, is created: iSQL> CREATE OR REPLACE FUNCTION emp_func(f1 IN INTEGER) RETURN NUMBER AS f2 NUMBER; BEGIN UPDATE employees SET salary = 1000000 WHERE eno = f1; SELECT salary INTO f2 FROM employees WHERE eno = f1; RETURN f2; END; / Create success. iSQL> SELECT * FROM system_.sys_procedures_; USER_ID PROC_OID PROC_NAME ---------------------------------------------------------------------------- --- OBJECT_TYPE STATUS PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID -------------------------------------------------------------------------- RETURN_SIZE RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN ------------------------------------------------------------------------ CREATED LAST_DDL_TIME ------------------------------ . . . 2 3300024 INOUTPROC1 0 0 3 2 132 15-SEP-2010 15-SEP-2010 2 3302344 EMP_FUNC 1 0 1 6 30000 23 38 0 3 209 15-SEP-2010 15-SEP-2010 36 rows selected. 2.13.2 Executing Func tions Functions can be executed to simultaneously execute multiple queries. If the function to be exe - c u t e d h a s p a r a m e t e r s, a s m a ny v a r i a b l e s a s t h e re a re f u n c t i o n s m u s t b e d e c l a re d b e fo re t h e f u n c t i o n is executed. Additionally, a variable for saving the result of the function must also be defined. 2.13 Creating, Executing, and Dropping Functions 59 Examples of iSQL in Use The following is an example of executing the function emp_func: iSQL> VAR eno INTEGER iSQL> VAR ret NUMBER iSQL> EXEC :eno := 11; Execute success. iSQL> EXEC :ret := emp_func(:eno); Execute success. iSQL> SELECT eno, salary FROM employees WHERE eno = 11; ENO SALARY --------------------------- 11 1000000 1 row selected. 2.13.3 Dropping Func tions The DROP FUNCTION statement is used to drop functions. In the following example, the function emp_func is deleted: iSQL> DROP FUNCTION emp_func; Drop success. 2.14 Convenient User Functions iSQL User’s Manual 60 2.14 Convenient User Func tions 2.14.1 Histor y A list of all previously executed commands can be displayed using the HISTORY command. The number corresponding to a previously executed command can be used to easily execute that com- mand again. iSQL> HISTORY; -> View history list. or iSQL> H; 1 : SELECT * FROM tab; 2 : SELECT * FROM v$tab; iSQL> / -> Re - execute the most recent command (HISTORY;) iSQL> 2/ -> Execute command number 2 in histor y list (SELECT * FROM book;) 2.14.2 Shell Commands The exclamation point (“!”) is a convenient function that allows direct execution of most shell com- mands from within iSQL. iSQL> !ls -al total 3417 -rw-r----- 1 wlgml337 section 1198 Nov 1 13:30 .aliases -rw------- 1 wlgml337 section 5353 Oct 18 21:17 .bash_history -rw-r----- 1 wlgml337 section 1436 Nov 2 15:42 .bashrc -rw-r----- 1 wlgml337 section 1549 Dec 13 17:36 .profile drwxr-x--- 2 wlgml337 section 512 Nov 2 02:00 TEMP drwxr-xr-x 2 root root 512 Oct 16 11:29 TT_DB -rw------- 1 wlgml337 section 3446548 Dec 18 13:19 core drwxr-x--- 2 wlgml337 section 512 Nov 11 16:33 cron drwxr-x--- 2 wlgml337 section 512 Nov 15 10:52 test drwxr-xr-x 6 wlgml337 section 512 Nov 11 11:45 work 2.14.3 Getting Help Help is available for the commands provided with iSQL. The HELP command without parameters outputs information about how to use help. For help on specific commands, enter HELP followed by the name of the command for which help is desired. iSQL> HELP; Use 'help [command]' Enter 'help index' for a list of command iSQL> HELP INDEX; @ EDIT QUIT / EXIT ROLLBACK ALTER HEADING SAVE AUTOCOMMIT H[ISTORY] SELECT COMMIT INSERT SPOOL CREATE LINESIZE START DELETE LOAD TIMING DESC LOBOFFSET UPDATE 2.14 Convenient User Functions 61 Examples of iSQL in Use DROP LOBSIZE VAR[IABLE] EXECUTE MOVE TERM EXPLAINPLAN N
-
- [ALTIBASE XDB 6.1.3] iSQL User's Manual ㅣ 2014-04-18
- ALTIBASE XDB Tools iSQL User’s Manual Release 6.1.3 (April 14, 2014) ----------------------------------------------------------- ALTIBASE XDB Tools iSQL User's Manual Release 6.1.3 Copyright ⓒ 2001~2014 ALTIBASE Corp. All Rights Reserved.
-
미리보기
ALTIBASE XDB Tools iSQL User’s Manual Release 6.1.3 (April 14, 2014) ----------------------------------------------------------- ALTIBASE XDB Tools iSQL User's Manual Release 6.1.3 Copyright ⓒ 2001~2014 ALTIBASE Corp. All Rights Reserved. 본 문서의 저작권은 ㈜알티베이스에 있습니다. 이 문서에 대하여 당사의 동의 없이 무단으로 복제 또는 전용할 수 없습니다. ㈜알티베이스 152-790 서울시 구로구 구로동 182-13 대륭포스트타워Ⅱ 10층 전화: 02-2082-1114 팩스: 02-2082-1099 고객서비스포털: http://support.altibase.com homepage: http://www.altibase.com ----------------------------------------------------------- 목차 I 목 차 서문 .......................................................................................................................... i 이 매뉴얼에 대하여 .......................................................................................................................... ii 1. iSQL 이용방법 ................................................................................................ 1 iSQL의 개요 ......................................................................................................................................... 2 iSQL 설정.............................................................................................................................................. 3 iSQL 커맨드 라인 옵션 .................................................................................................................. 5 iSQL 명령어 ......................................................................................................................................... 8 iSQL 관련 환경변수 ....................................................................................................................... 14 개인별 iSQL 환경 설정 ................................................................................................................ 18 2. iSQL 사용 예 ............................................................................................... 21 로그인 ................................................................................................................................................... 22 알티베이스의 구동 및 종료 ....................................................................................................... 24 접속 연결 및 해제 ......................................................................................................................... 26 데이터베이스와 객체 정보 조회 ............................................................................................. 29 트랜잭션 제어 .................................................................................................................................. 32 파일 관리 ............................................................................................................................................ 33 SELECT 결과 포매팅 ...................................................................................................................... 39 출력 옵션 제어 ................................................................................................................................ 44 iSQL 화면 설정 보기 .................................................................................................................... 51 호스트 변수 ....................................................................................................................................... 52 PREPARE SQL문 수행 .................................................................................................................... 54 프로시저 생성과 실행 및 삭제 ................................................................................................ 55 함수 생성과 실행 및 삭제 ......................................................................................................... 60 사용자 편의 기능............................................................................................................................ 62 내셔널 캐릭터 사용법 .................................................................................................................. 64 II iSQL User’s Manual 찾아보기 .............................................................................................................. 65 서문 i 서문 ii iSQL User’s Manual 이 매뉴얼에 대하여 이 매뉴얼은 데이터베이스에 접속해 데이터베이스 정보와 서버의 정보를 조회하고 제어할 수 있는 도구인 iSQL의 사용법에 대해 설명한다. 대상 사용자 이 매뉴얼은 다음과 같은 알티베이스 사용자를 대상으로 작성되었다. 데이터베이스 관리자 성능 관리자 데이터베이스 사용자 응용 프로그램 개발자 기술지원부 다음과 같은 배경 지식을 가지고 이 매뉴얼을 읽는 것이 좋다. 컴퓨터, 운영 체제 및 운영 체제 유틸리티 운용에 필요한 기본 지식 관계형 데이터베이스 사용 경험 또는 데이터베이스 개념에 대한 이해 컴퓨터 프로그래밍 경험 데이터베이스 서버 관리, 운영 체제 관리 또는 네트워크 관리 경험 소프트웨어 환경 이 매뉴얼은 데이터베이스 서버로 알티베이스 XDB 버전 6을 사용한다는 가정 하에 작성되었다. 이 매뉴얼의 구성 이 매뉴얼은 다음과 같이 구성되어 있다. 제 1장 iSQL 이용방법 이 장은 iSQL의 개요와 제공하는 명령어 및 사용방법에 대해 설명한다. 제 2장 iSQL 사용 예 서문 iii 이 장은 iSQL이 제공하는 각각의 명령어 대해 자세한 사용 예를 들어 설명한다. 문서화 규칙 이 절에서는 이 매뉴얼에서 사용하는 규칙에 대해 설명한다. 이 규칙을 이해하면 이 매뉴얼과 설명서 세트의 다른 매뉴얼에서 정보를 쉽게 찾을 수 있다. 여기서 설명하는 규칙은 다음과 같다. 구문 다이어그램 샘플 코드 규칙 구문 다이어그램 이 매뉴얼에서는 다음 구성 요소로 구축된 다이어그램을 사용하여, 명령문의 구문을 설명한다. 구성 요소 의미 예약어 명령문이 시작한다. 완전한 명령문이 아닌 구문 요 소는 화살표로 시작한다. 명령문이 다음 라인에 계속된다. 완전한 명령문이 아닌 구문 요소는 이 기호로 종료한다. 명령문이 이전 라인으로부터 계속된다. 완전한 명령 문이 아닌 구문 요소는 이 기호로 시작한다. ; 명령문이 종료한다. SELECT 필수 항목 NOT 선택적 항목 ADD DROP 선택사항이 있는 필수 항목. 한 항목만 제공해야 한 다. ASC DESC 선택사항이 있는 선택적 항목 iv iSQL User’s Manual , ASC DESC 선택적 항목. 여러 항목이 허용된다. 각 반복 앞부 분에 콤마가 와야 한다. 샘플 코드 규칙 코드 예제는 SQL, Stored Procedure, iSQL 또는 다른 명령 라인 구문들을 예를 들어 설명한다. 아래 테이블은 코드 예제에서 사용된 인쇄 규칙에 대해 설명한다. 규칙 의미 예제 [ ] 선택 항목을 표시 VARCHAR [(size)] [[FIXED |] VARIABLE] { } 필수 항목 표시. 반드시 하나 이 상을 선택해야 되는 표시 { ENABLE | DISABLE | COMPILE } | 선택 또는 필수 항목 표시의 인 자 구분 표시 { ENABLE | DISABLE | COMPILE } [ ENABLE | DISABLE | COMPILE ] . . . 그 이전 인자의 반복 표시 예제 코드들의 생략되는 것을 표 시 SQL> SELECT ename FROM employee; ENAME ----------------------- SWNO HJNO HSCHOI . . . 20 rows selected. 그 밖에 기 호 위에서 보여진 기호 이 외에 기 호들 EXEC :p1 := 1; acc NUMBER(11,2); 기울임 꼴 구문 요소에서 사용자가 지정해 야 하는 변수, 특수한 값을 제공 해야만 하는 위치 지정자 SELECT * FROM table_name; CONNECT userID/password; 소문자 사용자가 제공하는 프로그램의 요소들, 예를 들어 테이블 이름, 칼럼 이름, 파일 이름 등 SELECT ename FROM employee; 서문 v 대문자 시스템에서 제공하는 요소들 또 는 구문에 나타나는 키워드 DESC SYSTEM_.SYS_INDICES_; 관련 자료 자세한 정보를 위하여 다음 문서 목록을 참조하기 바란다. Installation Guide Getting Started Guide Administrator’s Manual Replication Manual SQL Reference Stored Procedures Manual Error Message Reference 온라인 매뉴얼 알티베이스 고객서비스포털(http://support.altibase.com/)에서 국문 및 영문 매뉴얼(PDF, HTML)을 받을 수 있다. 알티베이스는 여러분의 의견을 환영합니다. 이 매뉴얼에 대한 여러분의 의견을 보내주시기 바랍니다. 사용자의 의견은 다음 버전의 매뉴얼을 작성하는데 많은 도움이 됩니다. 보내실 때에는 아래 내용과 함께 고객서비스포털(http://support.altibase.com/)로 보내주시기 바랍니다. 사용 중인 매뉴얼의 이름과 버전 매뉴얼에 대한 의견 사용자의 성함, 주소, 전화번호 이 외에도 알티베이스 기술지원 설명서의 오류와 누락된 부분 및 기타 기술적인 문제들에 대해서 이 주소로 보내주시면 정성껏 처리하겠습니다. 기술적인 부분과 관련하여 즉각적인 도움이 필요한 경우에는 기술지원센터로 연락하시기 바랍니다. 여러분의 의견에 항상 감사드립니다. iSQL 이용방법 1 1. iSQL 이용방법 2 iSQL User’s Manual iSQL의 개요 iSQL은 알티베이스 데이터베이스에 접속하여 SQL 문과 부가적인 여러 명령어를 통해 서버에 저장되어 있는 자료를 얻고, 수정하는 작업을 수행할 수 있는 사용자 도구이다. iSQL의 주요 기능 알티베이스의 구동 및 종료 기능 알티베이스 서버의 구동 및 종료 등의 데이터 베이스 관리를 하기 위해서 여러 개의 커맨드라인 명령어를 사용하는 대신에, iSQL 하나의 도구만을 사용하면 된다. 데이터베이스 접속 및 해제 기능 알티베이스 구동 이후 데이터베이스 접속 시 다양한 사용자명으로의 접속 및 해제가 가능하다. 데이터베이스 객체 정보 조회 기능 iSQL에서는 데이터베이스 객체에 대한 모든 정보를 SQL문으로 조회할 수 있으며, 주요 객체에 대해서는 간편한 조회 명령어를 지원한다. SQL문 수행을 통한 데이터베이스 관리 기능 iSQL을 사용해 모든 SQL문을 수행할 수 있도록 지원하므로 트랜잭션 제어, 데이터베이스 변경 등을 빠르고 간편하게 수행할 수 있다. 사용자 편의 기능 위의 기능을 쉽고 편리하게 수행할 수 있도록 파일 처리 기능, 에디터 기능, iSQL상에서의 쉘 명령어 수행 기능, HISTORY 기능 등을 지원한다. iSQL 이용방법 3 iSQL 설정 iSQL은 서버에 접속하기 위해서 다음과 같은 정보가 필요하다. ALTIBASE_XDB_HOME 서버 혹은 클라이언트가 설치된 경로 server_name 알티베이스 서버가 구동되어 있는 컴퓨터 서버의 이름(또는 IP 주소) port_no TCP 또는 IPC로 접속할 때 사용할 포트 번호 user_id 데이터베이스에 등록된 사용자 ID password 사용자 ID와 일치하는 암호 NLS_USE 데이터 검색 시, 사용자에게 보여주는 문자 집합 ALTIBASE_XDB_HOME은 환경 변수로 설정하도록 되어있으며, 나머지는 커맨드 라인 옵션을 통해서 설정할 수 있도록 되어 있다. (자세한 내용은 “iSQL 커맨드 라인 옵션”을 참고한다.) ALTIBASE_XDB_HOME은 iSQL을 사용하기 위해서 반드시 설정해야 하는 환경 변수이다. 윈도우의 경우, 서버가 설치될 때 자동으로 설정되는데 클라이언트의 경우에는 사용자가 직접 설정해야 한다. 설정되지 않았을 경우에는 올바르게 동작하지 않을 수 있으므로 실행 전에 올바르게 설정되어 있는지 확인할 것을 권한다. port_no와 NLS_USE는 환경 변수 또는 서버 설정 파일(altibase_xdb.properties)을 이용해서 설정할 수도 있다. 세 가지 방법으로 모두 설정되어 있을 경우 적용 우선 순위는 다음과 같다. 1. 커맨드 라인 옵션 2. 환경 변수(ALTIBASE_XDB_WSERVER_PORT_NO, ALTIBASE_XDB_NLS_USE) 3. 서버 설정 파일(altibase_xdb.properties) 그러므로 이미 설정된 값과 다른 옵션으로 연결하고자 할 경우, 커맨드 라인 옵션을 사용하면 서버 설정 파일이나 환경 변수를 변경하지 않아도 된다. 옵션이 설정되어 있지 않을 경우에는 iSQL이 처음 실행될 때 옵션 4 iSQL User’s Manual 입력 프롬프트를 띄우고 사용자에게서 해당 값을 입력 받는다. 이 때 바르지 않은 형식이나 유효하지 않은 값을 입력할 경우, iSQL은 올바르게 동작하지 않을 수도 있다. 특히 NLS_USE 옵션은 사용자가 설정하지 않았더라도 실행 시에 입력 프롬프트가 나타나지 않는다. 만약 사용자가 NLS_USE 옵션을 설정하지 않았다면 기본값인 US7ASCII를 이용해 접속을 시도한다. 이 때 데이터베이스의 캐릭터 셋이 US7ASCII이 아닐 경우에는 바르게 실행되지 않거나 사용자 데이터가 일부 깨질 수 있으므로 반드시 NLS_USE를 사용 환경에 맞는 값으로 설정해야 한다. 원활한 iSQL 사용을 위해 다음 환경 변수를 설정할 것을 권장한다. ALTIBASE_XDB_HOME : 서버 혹은 클라이언트가 설치된 경로 ALTIBASE_XDB_WSERVER_PORT_NO : 서버에 접속할 때 사용할 포트 번호 ALTIBASE_XDB_NLS_USE : 데이터 검색 시, 사용자에게 보여주는 문자 집합 PATH : 실행 파일이 있는 경로인 $ALTIBASE_XDB_HOME/bin 추가 iSQL 이용방법 5 iSQL 커맨드 라인 옵션 iSQL을 실행하기 위해서는 반드시 알티베이스 서버를 먼저 구동 시켜야 한다. 옵션은 대문자 또는 소문자 모두 가능하다. xdbisql [-H] [-S server_name] [-U user_id] [-P password] [-SYSDBA] [-PORT port_no] [-UNIXDOMAIN-FILEPATH filepath] [-IPC-FILEPATH filepath] [-SILENT] [-F infile_name] [-O outfile_name] [-NLS_USE] [-NLS_NCHAR_LITERAL_REPLACE 0|1] [-prefer_ipv6] -S server_name 알티베이스 서버가 구동되어 있는 컴퓨터 서버의 이름(또는 IP 주소)을 명시한다. IPC로 접속할 때 이 옵션을 명시하면, 무시하고 에러를 반환하지 않는다. IPv4 주소 또는 IPv6 주소를 사용할 수 있다. IPv6 주소는 “[“과 “]”로 에워싸여야 한다. 예를 들어, localhost 를 명시하고자 할 때, 가능한 값은 다음과 같다. localhost (호스트 이름), 127.0.0.1 (IPv4주소), [::1] (IPv6주소) -U user_id 데이터베이스에 등록된 사용자 ID를 명시한다. -P password 사용자 ID와 일치하는 암호를 명시한다. -SYSDBA SYS 사용자가 관리자 모드로 iSQL 유틸리티를 사용하기 위해서 -SYSDBA 옵션을 사용할 수 있다. 서버가 구동되어 있는 상태에서 SYSDBA 모드로 iSQL을 실행하면, iSQL은 데몬 프로세스로 접속한다. 서버가 구동되어 있지 않다면, iSQL은 idle 인스턴스로 접속할 것이며, 그 상태에서 서버를 구동할 수 있다. -PORT port_no TCP로 접속할 때 해당 포트 번호를 명시한다. 먼저 클라이언트에서 환경 변수 ‘XDB_ISQL_CONNECTION=TCP’를 설정하고, - PORT 옵션에 접속할 포트 번호를 입력한다. XDB_ISQL_CONNECTION 환경 변수의 값이 IPC가 아닌 경우에 -PORT 옵션을 생략한다면, 6 iSQL User’s Manual ALTIBASE_XDB_WSERVER_PORT_NO와 WSERVER_PORT_NO 프로퍼티를 차례로 참조하고 모두 설정되어 있지 않다면, 포트 번호 입력 프롬프트가 출력된다. -UNIXDOMAIN-FILEPATH filepath 유닉스 환경에서 서버와 클라이언트가 유닉스 도메인 소켓으로 접속할 때 (XDB_ISQL_CONNECTION=UNIX), ALTIBASE_XDB_HOME이 서로 다르다면 유닉스 도메인의 소켓 경로가 다르게 되어 접속이 불가능하다. 이 때 서버와 클라이언트가 같은 파일 (e.g. ALTIBASE_XDB_HOME/conf/cm-unixw)을 사용하도록 하면, 유닉스 도메인 통신이 가능해진다. -IPC-FILEPATH filepath 유닉스 환경에서 서버와 클라이언트가 IPC로 접속 (XDB_ISQL_CONNECTION=IPC)할 때, ALTIBASE_XDB_HOME이 서로 다르다면 유닉스 도메인의 소켓 경로가 다르게 되어 접속이 불가능하다. 이 때 ALTIBASE_XDB_HOME/conf/cm-ipcw 파일을 이용하면, 유닉스 도메인 통신이 가능해져 공유 메모리의 정보를 가져올 수 있다. 그러나 이 옵션은 환경변수 ALTIBASE_XDB_WSERVER_IPC_FILEPATH를 설정하였다면, 생략해도 된다. -F infile_name iSQL 실행 후 바로 실행할 스크립트 파일을 명시한다. -O outfile_name iSQL 실행 후 실행한 명령들에 대한 결과들을 저장할 파일을 명시한다. 이 파일은 현재 디렉터리에 생성된다. 파일이 기존에 존재할 경우, 기존 내용 위에 겹쳐 쓴다. -H iSQL의 실행 방법을 보여준다. -SILENT silent 모드를 켜는 옵션이다. silent 모드를 켜면 Copyright 등의 부가적인 설명들을 보여주지 않는다. iSQL 이용방법 7 -NLS_USE 데이터 검색 시, 사용자에게 보여주는 문자 집합(Character Set)이다. iSQL을 실행하는 터미널의 encoding을 명시하여 준다. US7ASCII KO16KSC5601 MS949 BIG5 GB231280 UTF8 SHIFTJIS EUCJP 생략 시 환경변수 ALTIBASE_XDB_NLS_USE, altibase_xdb.properties를 차례로 참조하며, 설정되지 않았을 경우에는 기본 문자 집합 (US7ASCII)을 사용한다. -NLS_NCHAR_LITERAL_REPLACE 0 : “N” 문자가 있는지 검사하지 않고 쿼리 문 전체를 데이터베이스 문자 셋으로 변환한다. 1 : “N” 문자가 붙어있는 NCHAR 리터럴은 데이터베이스 문자 셋으로 변환하지 않는다. -prefer_ipv6 -S 옵션으로 호스트 이름을 입력했을 때, 접속할 IP 주소의 버전을 결정하는 옵션이다. 이 옵션을 명시하면, 호스트 이름을 IPv6 주소로 바꾸어 접속한다. 이 옵션을 명시하지 않으면, xdbisql은 IPv4 주소로 접속한다. 선호하는 버전의 IP 주소로의 접속이 실패하면, 다른 IP 버전 주소로 접속을 다시 시도한다. 예를 들어, -S 옵션에 “localhost”를 입력하고 이 옵션을 명시하면, xdbisql 은 처음에 IPv6 주소인 [::1]로 접속하고, 이 접속이 실패하면 IPv4 주소인 127.0.0.1로 접속을 다시 시도한다. 위의 커맨드 라인 중 -S, -U, -P 옵션이 빠져 있는 경우에는 입력 프롬프트가 출력되어 사용자에게 그 옵션값을 받는다. 8 iSQL User’s Manual iSQL 명령어 iSQL을 실행 시키면 iSQL 명령어 실행을 위한 프롬프트가 나오고, 이곳에 iSQL 명령어들을 입력하면 그 결과를 보여주는 형태로 프로그램이 동작한다. 아래의 표에 iSQL 각각의 명령에 대해 설명하였다. 분류 종류 명령어 설명 iSQL 구 동 및 종 료 구동 $ xdbisql [option] 쉘 상에서 이 명령어를 수행하면 iSQL이 구 동된다. 사용 가능한 옵션에 대해서는 iSQL 커맨드 라인 옵션 절의 내용을 참조한다. 프롬프트 xdbiSQL> iSQL 프롬프트로 명령어 입력 후 ENTER 키 를 입력한다. 종료 EXIT; QUIT; iSQL을 종료한다. 알티베이 스의 구 동 및 종 료 알티베이 스 구동 STARTUP PRE-PROCESS, PROCESS, CONTROL, META, SERVICE 중 하나의 옵션을 이용하여 알티베이스의 다단계 구동을 수행한다. 알티베이 스 종료 SHUTDOWN NORMAL, IMMEDIATE, ABORT 중 하나의 옵션을 사용하여 알티베이스를 종료한다. 데이터베 이스 접 속 및 해 제 다른 사 용자로 서버에 접속 CONNECT [logon] [nls] [AS sysdba]; logon: user1/pass1 nls: NLS=character_set iSQL에서 데이터베이스 접속 후 다른 사용자 로 접속하기 위한 명령어로 패스워드 pass1 을 가진 user1이라는 사용자로 접속한다. 접 속이 성공하면 이전 세션과 관련된 정보는 지워진다. AS 절은 SYS 사용자가 sysdba 관리자 모드 로 서버에 접속하는 것을 허용한다. sysdba 로 접속하는 것은 한 사용자만 허용된다. nls 옵션은 문자 집합을 설정한다. 문자집합 에 대한 자세한 설명은 위의 절 iSQL 커맨드 라인 옵션: -NLS_USE 옵션을 참조하기 바란 다. 접속해제 DISCONNECT; 현재 세션을 종료하고 서버와의 연결을 끊는 다. 데이터베 이스 객 체 정보 성능 뷰 목록 보 기 SELECT * FROM V$TAB; 시스템이 제공하는 모든 성능 뷰 목록을 보 여준다. 이 명령어는 iSQL에서만 사용가능 하다. iSQL 이용방법 9 분류 종류 명령어 설명 조회 테이블 목록 보 기 SELECT * FROM TAB; 현재 생성된 테이블의 목록을 보여준다. 이 명령어는 iSQL에서만 사용가능 하다. 테이블 구조 보 기 DESC samp; samp 테이블의 구조를 보여준다. 시퀀스 정보 보 기 SELECT * FROM V$SEQ; SYS 계정으로 서버에 접속한 경우 모든 시 퀀스 들의 정보를 보여준다. 일반 사용자로 서버에 접속한 경우는 그 사 용자가 생성한 시퀀스들에 대한 정보만 보여 준다. 이 명령어는 iSQL에서만 사용가능 하다. 트랜잭션 제어 트랜잭션 모드 설 정 AUTOCOMMIT ON; AUTOCOMMIT OFF; 트랜잭션 커밋을 자동으로 할 것인지를 결정 한다. 기본값: ON 기타 SET 기능 SET PLANCOMMIT ON; SET PLANCOMMIT OFF; AUTOCOMMIT OFF 모드에서 EXPLAIN PLAN이 ON (또는 ONLY) 조건일 때, DESC, SELECT * FROM TAB; 또는 SELECT * FROM seq_name; 등과 같은 명령어를 수행 했을 때 자동으로 commit 할지를 결정한다. 기본값: OFF 파일 관 리 파일로 자료 출 력 SPOOL filename; 화면에 보여지는 결과를 filename에 기록하 기 시작한다. SPOOL OFF; 화면에 보여지는 결과를 filename에 기록하 던 것을 중지한다. sql script 의 실행 START file_name; script 파일을 읽어, 파일 내의 SQL문들을 순차적으로 수행한다. @ file_name; iSQL 프롬프트 상에서 수행 시 start와 동일 한 기능을 갖는다. @@ file_name; 스크립트 파일 안에서 사용될 때 호출을 한 스크립트 파일이 위치하는 디렉터리에서 파 일을 찾아서 수행한다. SQL문 파일 저SAVE abc.sql; 현재 iSQL 버퍼에 있는 명령어 중 가장 마지 막 명령어가 파일로 저장된다. 10 iSQL User’s Manual 분류 종류 명령어 설명 장 SQL문의 load LOAD abc.sql; 파일에 저장되어 있는 명령어 중 가장 첫 번 째 명령어가 명령어 버퍼의 마지막으로 로드 된다. DML문을 파일로 저장 SET QUERYLOGGING ON; SET QUERYLOGGING OFF: INSERT, UPDATE, DELTE, MOVE 등의 DML문 실행 시 이를 $ALTIBASE_XDB_HOME/trc/isql_query.log 에 기록한다. 질의문 편집 ED 임시 파일을 생성하고 편집 ED filename[.sql] 기존 파일 또는 새로운 파일을 편집 2ED 또는 2 ED 히스토리 목록에 있는 번호가 2인 질의문을 편집한다. 출력 옵 션 제어 Select 결 과의 칼럼 포 맷팅 SET LINESIZE 100; select 결과 출력 시 디스플레이 되는 한 라 인의 사이즈를 설정한다. 10 에서 32767 사 이의 값이어야 한다. 기본값: 80 Select 결 과의 Clob 칼 럼 포맷 팅 SET LOBSIZE 10; CLOB 칼럼을 출력 시 디스플레이 되는 데이 터의 길이를 설정한다. 기본값: 80 SET LOBOFFSET 3; CLOB 칼럼을 출력 시 디스플레이 되는 데이 터의 오프셋을 설정한다. 기본값: 0 Select 결 과 건수 출력 SET FEED[BACK] ON; SET FEED[BACK] OFF; SET FEED[BACK] n; 쿼리 실행결과 건수의 출력여부를 설정한다. select 결 과의 row 포 매팅 SET PAGESIZE 10; select 결과 레코드들을 몇 개 단위로 출력할 지를 결정하는 명령어로 `0`으로 설정할 경우 결과 레코드 전체를 한꺼번에 출력한다. 기본값: 0 select 결 과의 헤 SET HEADING ON; SET HEADING select 결과 출력 시 헤더 출력 유무 기본값: ON iSQL 이용방법 11 분류 종류 명령어 설명 더 유무 OFF; select 결 과 칼럼 의 출력 사이즈 조절 SET COLSIZE N; CHAR, VARCHAR 타입 칼럼의 select 결과 출력 시 출력 값 사이즈 설정 기능 SQL문 실행시간 SET TIMING ON; SET TIMING OFF; SQL 명령 실행에 걸린 시간 출력유무 기본값: OFF SQL문 실행시간 출력 단 위 설정 SET TIMESCALE SEC; SET TIMESCALE MILSEC; SET TIMESCALE MICSEC; SET TIMESCALE NANSEC; SQL문의 쿼리 수행 시간 단위를 초, 밀리초, 마이크로초, 나노초 등으로 설정한다. foreign key 정보 출력의 유무 SET FOREIGNKEYS ON; SET FOREIGNKEYS OFF; 테이블 구조(DESC)를 볼 때 외래 키 정보 포함 출력 여부 설정. 기본값: OFF 스크립트 실행 결 과의 출 력 유무 SET TERM ON; SET TERM OFF; 스크립트 파일 실행의 결과를 화면상에 보여 줄지를 결정한다. 기본값: ON 실행 계 획 트리 출력 ALTER SESSION EXPLAIN PLAN = ON; ALTER SESSION EXPLAIN PLAN = ONLY; ALTER SESSION EXPLAIN PLAN = SELECT문에 대한 실행 계획의 출력 여부를 설정한다. 기본값: OFF 12 iSQL User’s Manual 분류 종류 명령어 설명 OFF; SELECT 결과 출 력 방향 SET VERTICAL ON; SET VERTICAL OFF; 레코드를 조회할 때 이 값을 ON으로 설정하 면, SELECT의 결과가 세로로 보여진다. 기본값: OFF iSQL 화면 설 정 값 보 기 SHOW LINESIZE 현재의 LINESIZE 값을 보여준다. SHOW COLSIZE 현재의 COLSIZE 값을 보여준다. SHOW LOBOFFSET 현재의 LOBOFFSET 값을 보여준다. SHOW LOBSIZE 현재의 LOBSIZE 값을 보여준다. SHOW PAGESIZE 현재의 PAGESIZE 값을 보여준다. SHOW PLANCOMMIT AUTOCOMMIT OFF 모드에서 명령어를 수 행할 때 자동으로 커밋되는 여부를 보여준 다. SHOW QUERYLOGGING DML 문이 실행될 때 $ALTIBASE_XDB_HOME/trc/isql_query.log 에 기록되는지 여부를 보여준다. SHOW FEEDBACK 현재 설정된 FEEDBACK 값을 보여준다. SHOW HEADING 현재의 HEADING 설정 여부를 보여준다. SHOW TERM 현재 TERM 설정 여부를 보여준다. SHOW TIMING 현재의 TIMING 설정 여부를 보여준다. SHOW TIMESCLAE 현재의 SQL문의 쿼리 수행 시간 단위가 무 엇으로 설정되었는지를 보여준다. SHOW USER 현재 사용자를 보여준다. SHOW FOREIGNKEYS 현재의 외래 키 설정 여부를 보여준다. SHOW VERTICAL 현재의 SELECT 결과가 세로로 출력되는지 여부를 보여준다. SHOW ALL 현재 세션의 화면 설정 값을 보여준다. 변수 및 변수 선VAR p1 INTEGER; INTEGER 타입의 변수 p1을 선언한다. iSQL 이용방법 13 분류 종류 명령어 설명 Prepared SQL문 언 VARIABLE p2 CHAR(10); CHAR 타입의 변수 p2를 선언한다. 변수에 값 할당 EXECUTE :p1 := 100; 변수 p1에 100을 할당한다. EXEC :p2 := 'abc'; 변수 p2에 ‘abc’를 할당한다. 변수 보 기 PRINT VAR[IABLE]; 현재 선언된 변수들을 보여준다. PRINT p1; 변수 p1의 타입과 값을 보여준다. Prepared SQL문 수행 PREPARE SQL문; Prepared SQL문으로 질의 최적화 과정과 실 행 과정을 나누어 수행하게 한다. iSQL에서의 SQL문 수행은 기본적으로 최적 화와 실행을 한번에 수행하는 Direct Execution 방법이다. iSQL 상에서 두 가지 수행 방법에 대한 결과 에는 차이가 없으며 Prepared SQL문의 경우 변수를 사용해 값을 바인딩 하여 SQL문 수 행이 가능하다. 사용자 편의 기 능 히스토리 목록 보 기 HISTORY; H; 현재 iSQL buffer에 저장되어 있는 명령어들 의 목록을 보여준다. 반복 실 행 / 현재 iSQL buffer의 명령어를 반복하여 실행 한다. 가장 최근에 수행한 명령어가 다시 실 행된다. 2/ HISTORY 명령에 의해 나타난 목록의 번호가 2인 명령어가 실행된다. 쉘 명령 실행 ! shell command 느낌표 다음에 쉘 명령을 입력하면 iSQL에서 바로 쉘 명령이 실행된다. 주석 /* comment */ -- comment 여러 라인 주석 한 라인 주석 도움말 HELP; HELP INDEX; HELP EXIT; 도움말 사용법 명령어 리스트 출력 EXIT 명령어에 대한 설명 14 iSQL User’s Manual iSQL 관련 환경변수 ALTIBASE_XDB_HOME 패키지가 설지된 디렉터리를 설정한다. MS 윈도우의 경우, 서버 설치 시에 자동으로 설정되지만, 클라이언트 설치 시에는 서버를 위한 환경 변수와 충돌이 있을 수 있으므로 자동으로 설정되지 않는다. 클라이언트 설치 시에는 사용자가 직접 설정해야 한다. ISQL 사용을 위해 반드시 설정해야 하는 환경변수이다. <예제> Windows (Server): ‘set ALTIBASE_XDB_HOME=C:/Program Files/Altibase/Altibase5_Server/altibase_xdb_home’, Windows (Client): ‘set ALTIBASE_XDB_HOME=C:/Program Files/Altibase/Altibase5_Client/altibase_xdb_home_client’) ALTIBASE_XDB_WSERVER_PORT_NO 접속할 서버의 포트 번호이다. -PORT 옵션 또는 altibase_xdb.properties 파일 내의 프로퍼티를 통해서 지정할 수도 있다. 포트 번호 설정의 우선 순위는 -PORT 옵션, 환경변수 ALTIBASE_XDB_WSERVER_PORT_NO, altibase_xdb.properties 파일 내의 WSERVER_PORT_NO 프로퍼티 순이며 아무것도 설정되지 않았을 경우에는 포트 번호 입력 프롬프트가 출력된다. ALTIBASE_XDB_NLS_USE 데이터 검색 시 사용자에게 보여주기 위해 사용되는 문자 집합이다. US7ASCII KO16KSC5601 MS949 BIG5 GB231280 iSQL 이용방법 15 UTF8 SHIFTJIS EUCJP -NLS_USE 옵션 또는 altibase_xdb.properties파일 내의 프로퍼티를 통해서 지정할 수도 있다. NLS_USE 설정의 우선 순위는 -NLS_USE 옵션, 환경 변수 ALTIBASE_XDB_NLS_USE, altibase_xdb.properties 파일 내의 프로퍼티 순이며 설정되지 않았을 경우에는 기본 문자 집합(US7ASCII)을 사용한다. ALTIBASE_XDB_NLS_NCHAR_LITERAL_REPLACE 기본적으로 클라이언트는 쿼리 문 전체를 데이터베이스 문자 셋으로 변환하여 전송한다. 그러나, 특정 리터럴에 대해 이런 동작을 막으려면, 이 환경 변수의 값을 1로 설정하고 그 리터럴 앞에 “N” 문자를 덧붙이면 된다. 즉, NCHAR 리터럴로 만드는 것이다. 이 환경 변수의 값이 1일 때, 클라이언트는 쿼리 문 내의 모든 리터럴 앞에 “N” 문자가 있는지 찾는다. 만약 찾게 되면 클라이언트는 그 리터럴을 데이터베이스 문자 셋으로 변환하지 않고 그대로 전송하며 서버가 직접 내셔널 문자 셋으로 변환한다. 이것은 데이터베이스 문자 셋과는 다른 인코딩이 필요한 NCHAR 타입 데이터를 사용하고자 할 때 유용하다. 0: “N” 문자가 있는지 검사하지 않고 쿼리 문 전체를 데이터베이스 문자 셋으로 변환한다. 1: “N” 문자가 붙어있는 NCHAR 리터럴은 데이터베이스 문자 셋으로 변환하지 않는다. 이 값을 1로 설정하는 것은 클라이언트의 비용이 크게 발생하므로, 사용시 주의가 필요하다. XDB_ISQL_CONNECTION 알티베이스를 클라이언트-서버 구조로 운영할 때, 사용자는 응용 시스템의 구성에 적합한 클라이언트-서버 프로토콜을 선택하여 환경 변수를 설정할 수 있다. 클라이언트-서버 구조의 운영을 위해 알티베이스 XDB는 TCP/IP, IPC와 UNIX DOMAIN 소켓 프로토콜을 제공한다. 여기에 더해서 XDB는 DA (Direct Attach) 모드 접속을 16 iSQL User’s Manual 허용하는데, 이 모드를 사용하기 위해서는 XDB_ISQL_CONNECTION 환경 변수의 값을 DA로 설정해야 한다. 알티베이스 XDB 서버와 통신하기 위한 기본값은 TCP/IP 프로토콜이다. 단, IPC 프로토콜을 이용할 경우엔 알티베이스 프로퍼티들 중에서 IPC 채널과 관련된 프로퍼티들의 값(WSERVER_IPC_CHANNEL_COUNT)도 함께 고려해야 한다. 예) IPC 사용시 환경 변수 설정 CSH: setenv XDB_ISQL_CONNECTION IPC SH: XDB_ISQL_CONNECTION=IPC; export XDB_ISQL_CONNECTION 예2> DA 모드로 접속 시 환경 변수 설정 CSH: setenv XDB_ISQL_CONNECTION DA SH: XDB_ISQL_CONNECTION=DA; export XDB_ISQL_CONNECTION XDB_ISQL_BUFFER_SIZE 쿼리를 저장할 버퍼의 크기를 환경변수를 이용하여 지정할 수 있다. 예) CSH: setenv XDB_ISQL_BUFFER_SIZE 128000 SH: XDB_ISQL_BUFFER_SIZE = 128000; export XDB_ISQL_BUFFER_SIZE ALTIBASE_XDB_DATE_FORMAT Date 데이터 타입인 data를 select 시 기본 날짜 형식인 YYYY/MM/DD HH:MI:SS을 환경변수 ALTIBASE_XDB_DATE_FORMAT을 설정하여 새로운 날짜 형식으로 나타낼 수 있다. 예) Born, Korn, 또는 Bash Shell의 경우 export ALTIBASE_XDB_DATE_FORMAT=’DD-MON-YYYY’ XDB_ISQL_EDITOR 기본 편집기 (윈도우: 메모장, 그 외: /bin/vi )를 바꾸기 위한 환경변수를 설정할 수 있다. 예) CSH: setenv XDB_ISQL_EDITOR /usr/bin/ed SH: XDB_ISQL_EDITOR=/usr/bin/ed; export XDB_ISQL_EDITOR ALTIBASE_XDB_WSERVER_IPC_FILEPATH iSQL 이용방법 17 유닉스 환경에서 클라이언트가 IPC로 서버에 접속할 때 ALTIBASE_XDB_HOME 환경 변수 값이 서로 다른 경우, 유닉스 도메인의 소켓 경로가 일치하지 않아 접속할 수 없다. 이 때 클라이언트 측의 ALTIBASE_XDB_WSERVER_IPC_FILEPATH 환경 변수 또는 -IPC_FILEPATH iSQL 옵션을 서버의 $ALTIBASE_XDB_HOME/conf/cm-ipcw파일로 설정하여 서버와 클라이언트가 같은 소켓 파일을 사용하도록 하면, IPC 접속이 가능하다. 18 iSQL User’s Manual 개인별 iSQL 환경 설정 iSQL 사용자들은 특별한 방법으로 iSQL 환경을 설정하고 각 세션에서 그러한 설정을 다시 사용할 수 있다. 예를 들어, OS 파일을 통하여 질의 결과마다 현재 시간을 출력할 수 있도록 사용자가 원하는 출력 서식 형태로 만들 수 있다. 이러한 파일은 다음과 같이 두 가지로 나눌 수 있다. glogin.sql iSQL 시작 시의 초기화 작업을 위하여 DB 관리자에 의해 생성된 전역 스크립트 파일인 glogin.sql의 사용을 지원한다. iSQL은 임의의 사용자가 iSQL을 기동할 때 마다 이 스크립트를 실행한다. 전역 파일은 DB 관리자가 모든 사용자들에게 특별한 사이트에서 iSQL 환경을 설정할 수 있도록 한다. 전역 스크립트 파일은 $ALTIBASE_XDB_HOME/conf 밑에 위치한다. login.sql iSQL은 또한 glogin.sql 후에 실행되는 login.sql 파일도 지원한다. 만약, glogin.sql 파일과 login.sql 파일이 모두 존재하는 경우 iSQL 구동 시 glogin.sql이 실행된 후 login.sql이 실행되므로 login.sql에 있는 명령어들로 우선수행 (override) 된다. 하나의 유닉스 계정을 여러 명이 사용할 경우에는 glogin.sql 파일을 개인적인 용도로 수정하기가 불가능할 수도 있다. 이런 경우 일반 사용자는 SQL 명령어들, 저장 프로시저, 또는 iSQL 명령어들을 각자의 개인용 작업 디렉터리 내에 login.sql 파일에 첨가할 수 있다. 사용자가 iSQL을 구동할 때, iSQL은 자동적으로 현재 디렉터리에서 login.sql 파일을 찾고, 그 안에 명령어들을 수행한다. login.sql 파일은 iSQL 초기 설정이나 각각의 세션에 대한 동작을 조정할 수 없다. LOGIN 파일 변경 사용자는 임의의 다른 스크립트들처럼 LOGIN 파일을 변경할 수 있다. 다음은 임의의 사용자(user1)가 autocommit mode를 off로 iSQL 이용방법 19 변경하고 SQL 문들을 실행하기 위하여 LOGIN 파일을 작성한 예이다. $ vi glogin.sql AUTOCOMMIT ON SET HEADING OFF SELECT sysdate FROM dual; $ vi login.sql AUTOCOMMIT OFF; SET HEADING ON DROP TABLE savept; CREATE TABLE savept(num INTEGER); INSERT INTO savept VALUES(1); SAVEPOINT sp1; INSERT INTO savept VALUES(2); SELECT * FROM savept; ROLLBACK TO SAVEPOINT sp1; SELECT * FROM savept; COMMIT; $ xdbisql ------------------------------------------------------- ALTIBASE XDB Client Query utility. Release Version 6.1.3.0.1 Copyright 2013, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : user1 Write Password : XDB_ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 Set autocommit on success. -> 먼저 glogin.sql을 실행 28-DEC-2004 -> heading off 1 row selected. Set autocommit off success. -> glogin.sql이 실행된 후 사용자의 현재 작업 디렉터리에서 login.sql을 실행 Drop success. Create success. 1 row inserted. Savepoint success. -> autocommit mode off 에서만 실행 가능 1 row inserted. SAVEPT.NUM -> heading on -------------- 1 2 2 rows selected. Rollback success. SAVEPT.NUM -------------- 1 1 row selected. Commit success. iSQL 사용 예 21 2. iSQL 사용 예 이 장은 iSQL을 이용하여 데이터베이스를 다루는 몇 가지 예를 설명한다. 22 iSQL User’s Manual 로그인 iSQL 유틸리티를 사용하기 위해서는 먼저 로그인 과정을 거쳐야 하는데, 커맨드 라인 상에서 직접 연결 정보를 입력하는 방법과 입력 프롬프트 상에서 입력하는 방법이 있다. xdbisql -U userID -P password [-SYSDBA] 또는 xdbisql [-SYSDBA] 서버와 연결하기 위한 부가 정보로는 서버 이름(-S), 사용자 ID(-U), 패스워드(-P)가 있다. 사용자 ID와 패스워드는 대소문자를 구별하지 않는다. SYS 사용자가 관리자 모드로 iSQL 유틸리티를 사용하기 위해서는 - SYSDBA 옵션을 사용한다. SYSDBA 옵션으로 원격에서도 접속이 가능하다. 제한 사항 SYSDBA 모드로 접속하는 것은 한 명의 사용자만 허용된다. 2명 이상의 사용자가 동시에 SYSDBA 모드로 접속할 수 없다. 원격에서 SYSDBA 모드로 접속할 수 있지만, DBMS를 구동할 수는 없다. 시스템 권한에 대한 자세한 정보는 SQL Reference 을 참조하기 바란다. iSQL 사용 중 발생하는 에러에 대한 자세한 정보는 Error Message Reference를 참조하기 바란다. $ xdbisql -U sys -P manager [-SYSDBA] 또는 $ xdbisql [-sysdba] ------------------------------------------------------- ALTIBASE XDB Client Query utility. Release Version 6.1.3.0.1 Copyright 2013, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : sys Write Password : manager -> 화면에는 암호가 나타나지 않는다. XDB_ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL 사용 예 23 xdbiSQL(sysdba)> -> iSQL이 서버와 연결된 상태이며, 여기에서 SQL, iSQL, PSM 명령등을 입력하여 실행할 수 있다. 24 iSQL User’s Manual 알티베이스의 구동 및 종료 알티베이스의 구동 및 종료는 iSQL을 사용해 수행한다. 알티베이스 구동 알티베이스를 구동시키기 위해서는 데이터베이스 생성 시와 마찬가지로 우선 xdbisql을 -sysdba 옵션으로 띄워야 한다. * 알티베이스의 startup 명령어는 알티베이스(xdbisql 포함)를 설치한 유닉스 계정으로만 수행이 가능하다. 다음은 iSQL를 이용한 알티베이스 구동 예제이며 알티베이스 구동에 대한 자세한 설명은 Administrator’s Manual 제2장 알티베이스 구동 및 종료의 내용을 참조한다. $ xdbisql -s 127.0.0.1 -u sys -p manager -sysdba ------------------------------------------------------- ALTIBASE XDB Client Query utility. Release Version 6.1.3.0.1 Copyright 2013, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- XDB_ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1 [ERR-910FB : Connected to idle instance] xdbiSQL(sysdba)> startup service Connecting to the DB server..... Connected. TRANSITION TO PHASE : PROCESS TRANSITION TO PHASE : CONTROL TRANSITION TO PHASE : META [SM] Recovery Phase - 1 : Preparing Database : Created Shared Memory Version => Parallel Loading [SM] Recovery Phase - 2 : Loading Database [SM] Recovery Phase - 3 : Skipping Recovery Threads... [SM] Refine Memory Table : ................................................... ............................................... [SUCCESS] [SM] Rebuilding Indices [Total Count:116] ................................................ ........................................................... ......... [SUCCESS] TRANSITION TO PHASE : SERVICE [CM] Listener started : TCP on port 20300 [IPV4] [CM] Listener started : UNIX [QP-PREPARE] PSM loading......... [SUCCESS] iSQL 사용 예 25 --- Begin to execute Replication Manager --- TRANSITION TO PHASE : PROCESS TRANSITION TO PHASE : CONTROL TRANSITION TO PHASE : META TRANSITION TO PHASE : SERVICE [QP-PREPARE] PSM loading......... [SUCCESS] [RP] Initialization : [PASS] --- Replication Manager Starts SUCCESS --- [RP] Initialization : [PASS] --- Begin to execute WServer --- TRANSITION TO PHASE : PROCESS TRANSITION TO PHASE : CONTROL TRANSITION TO PHASE : META TRANSITION TO PHASE : SERVICE [CM] Listener started : TCP on port 20302 [IPV4] [CM] Listener started : UNIX [CM] Listener started : IPC [QP-PREPARE] PSM loading......... [SUCCESS] [RP] Initialization : [PASS] --- WServer Start SUCCESS --- --- STARTUP Process SUCCESS --- Command executed successfully. 알티베이스 종료 현재 구동중인 알티베이스 서버를 종료하려면 SHUTDOWN 명령어를 사용한다. 다음은 iSQL를 이용한 알티베이스 종료 예제이며 알티베이스 종료에 대한 자세한 설명은 Administrator’s Manual 제2장 알티베이스 구동 및 종료의 내용을 참조한다. xdbiSQL(sysdba)> shutdown normal Ok..Shutdown Proceeding.... TRANSITION TO PHASE : Shutdown Altibase shutdown normal success. 26 iSQL User’s Manual 접속 연결 및 해제 접속 연결 명시된 사용자 ID로 알티베이스에 연결한다. 첫 연결 실패 시 CONNECT 명령어는 사용자 ID나 패스워드를 다시 프롬프트(prompt) 하지 않는다. CONNECT [logon] [nls] [AS SYSDBA]; logon: userID[/password] nls: NLS=character_set userID/password 알티베이스에 연결하고자 하는 사용자의 id와 패스워드 NLS=character_set 문자집합 xdbiSQL> CONNECT sys/manager NLS=US7ASCII Connect success. AS SYSDBA AS 절은 SYS 사용자가 sysdba 관리자 모드로 서버에 접속하는 것을 허용한다. CONNECT가 성공하면 현재의 세션을 종료하고 명시된 사용자 ID와 패스워드, altibase_xdb.properties 내의 프로퍼티 정보를 사용해서 서버에 접속한다. 따라서 이전의 세션 정보는 없어진다. 예를 들어 altibase_xdb.properties의 AUTOCOMMIT 모드가 TRUE였고, iSQL에서 AUTOCOMMIT 모드를 FALSE로 변경하여 쿼리를 수행하다가 이 CONNECT문을 수행하였다면 AUTOCOMMIT 모드는 altibase_xdb.properties 의 AUTOCOMMIT 프로퍼티에 의하여 TRUE로 변경된다. CONNECT가 실패한다면 이전의 세션은 종료되고 서버와의 연결이 끊어진 상태가 된다. 즉, 이후에 수행되는 SQL문의 결과는 모두 “Not connected.” 이다. 만약, 다시 서버와 연결을 시도할 때는 CONNECT userID/password [AS SYSDBA];를 수행한다. $ xdbisql ------------------------------------------------------- ALTIBASE XDB Client Query utility. iSQL 사용 예 27 Release Version 6.1.3.0.1 Copyright 2013, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : SYS Write Password : XDB_ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 xdbiSQL> SHOW USER; User : SYS xdbiSQL> CREATE USER altiadmin IDENTIFIED BY altiadmin1234; Create success. xdbiSQL> CONNECT altiadmin/altiadmin1234; Connect success. xdbiSQL> SHOW USER; User : ALTIADMIN xdbiSQL> CREATE TABLE altitbl(i1 INTEGER, i2 CHAR(5)); Create success. xdbiSQL> SELECT * FROM tab; TABLE NAME TYPE --------------------------------------------- ALTITBL TABLE . . . 33 row selected. xdbiSQL> CONNECT sys/manager; Connect success. xdbiSQL> SHOW USER; User : SYS xdbiSQL> CREATE TABLE systbl(i1 INTEGER, i2 CHAR(5)); Create success. xdbiSQL> SELECT * FROM tab; USER NAME TABLE NAME TYPE ----------------------------------------------- SYSTEM_ SYS_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINTS_ SYSTEM TABLE . . . ALTIADMIN ALTITBL TABLE. SYS SYSTBL TABLE . . . 93 rows selected. 접속 해제 현재 세션을 종료하고 서버와의 연결을 끊는다. 이후에 수행되는 SQL문의 결과는 모두 “Not connected.”이며, 다시 서버와 연결을 시도할 때는 CONNECT userID/password;를 수행한다. DISCONNECT; xdbiSQL> INSERT INTO systbl VALUES(1, 'A1'); 1 row inserted. xdbiSQL> INSERT INTO systbl VALUES(2, 'A2'); 1 row inserted. xdbiSQL> SELECT * FROM systbl; SYSTBL.I1 SYSTBL.I2 28 iSQL User’s Manual -------------------------- 1 A1 2 A2 2 rows selected. xdbiSQL> DISCONNECT; Disconnect success. xdbiSQL> INSERT INTO systbl VALUES(3, 'A3'); [ERR-91020 : No Connection State] xdbiSQL> SELECT * FROM systbl; [ERR-91020 : No Connection State] xdbiSQL> CONNECT sys/manager; Connect success. iSQL 사용 예 29 데이터베이스와 객체 정보 조회 성능 뷰 조회 성능 뷰는 서버의 상태 및 데이터베이스 정보를 조회할 수 있는 데이터 딕셔너리 테이블의 일종으로 알티베이스가 제공하는 성능 뷰의 목록을 확인하기 위해서는 다음 명령어를 사용한다. xdbiSQL> SELECT * FROM V$TAB; TABLE NAME TYPE --------------------------------------------- V$ALLCOLUMN PERFORMANCE VIEW V$ARCHIVE PERFORMANCE VIEW V$BUFFPOOL_STAT PERFORMANCE VIEW V$DATABASE PERFORMANCE VIEW V$DATAFILES PERFORMANCE VIEW V$DISKGC PERFORMANCE VIEW V$DISKTBL_INFO PERFORMANCE VIEW V$FLUSHINFO PERFORMANCE VIEW . 알티베이스가 제공하는 전체 성능 뷰의 목록과 칼럼의 의미 등은 General Reference 의 데이터 딕셔너리 설명을 참조한다. 각 성능 뷰의 데이터는 일반 테이블 조회와 동일한 SELECT문을 사용하여 조회할 수 있으며 조인 등을 사용해 다양한 형태로 결과를 출력할 수 있다. 테이블 목록 보기 데이터베이스에 존재하는 모든 테이블에 대한 정보를 알고 싶으면 아래와 같은 명령을 사용하면 된다. sys_tables_ 메타 테이블은 알티베이스에서 제공하는 데이터베이스 카탈로그 정보를 수록하는 시스템 내부 테이블이다. xdbiSQL> SELECT * FROM system_.sys_tables_; . . xdbiSQL> SELECT * FROM tab; -> 이 명령어는 iSQL 에서만 사용가능. USER NAME TABLE NAME TYPE ----------------------------------------------- . .. 테이블 구조 보기 30 iSQL User’s Manual 사용자가 생성한 테이블에 관한 정보를 알고 싶으면 아래와 같은 명령을 사용한다. DESC table_name; CREATE TABLE department ( DNO SMALLINT PRIMARY KEY, DNAME CHAR(30) NOT NULL, DEP_LOCATION CHAR(9), MGR_NO INTEGER ); xdbiSQL> DESC department; -> table_name: 테이블 정보(테이블 구조)를 알고 싶은 테이블명. [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ----------------------------------------------------------- NAME TYPE IS NULL ----------------------------------------------------------- DNO SMALLINT FIXED NOT NULL DNAME CHAR(30) FIXED NOT NULL DEP_LOCATION CHAR(9) FIXED MGR_NO INTEGER FIXED [ INDEX ] ----------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- __SYS_IDX_ID_122 BTREE UNIQUE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- DNO 시퀀스 정보 보기 데이터베이스에 존재하는 모든 시퀀스에 대한 정보를 알고 싶으면 아래와 같은 명령을 사용하면 된다. SELECT * FROM seq; xdbiSQL> CONNECT sys/manager; Connect success. xdbiSQL> CREATE USER user1 IDENTIFIED BY user1; Create success. xdbiSQL> CONNECT user1/user1; Connect success. xdbiSQL> CREATE SEQUENCE seq1 MAXVALUE 100 CYCLE; Create success. xdbiSQL> CREATE SEQUENCE seq2; Create success. xdbiSQL> CONNECT sys/manager; Connect success. xdbiSQL> CREATE SEQUENCE seq2 START WITH 20 INCREMENT BY 30; Create success. xdbiSQL> CREATE SEQUENCE seq3 CACHE 40; Create success. xdbiSQL> SELECT * FROM seq; -> SYS 계정으로 데이터베이스에 접속한 경우 생성된 모든 sequence 들의 정보를 출력한다. USER_NAME iSQL 사용 예 31 -------------------------------------------- SEQUENCE_NAME CURRENT_VALUE INCREMENT_BY ------------------------------------------------ MIN_VALUE MAX_VALUE CYCLE CACHE_SIZE ------------------------------------------------ SYS SEQ2 20 30 1 9223372036854775806 NO 20 SYS SEQ3 1 1 1 9223372036854775806 NO 40 USER1 SEQ1 1 1 1 100 YES 20 USER1 SEQ2 1 1 1 9223372036854775806 NO 20 4 rows selected. xdbiSQL> CONNECT user1/user1; Connect success. xdbiSQL> SELECT * FROM seq; -> user1이 생성한 모든 sequence 들의 정보를 출력한다. SEQUENCE_NAME CURRENT_VALUE INCREMENT_BY ------------------------------------------------ MIN_VALUE MAX_VALUE CYCLE CACHE_SIZE ------------------------------------------------ SEQ1 1 1 1 100 YES 20 SEQ2 1 1 1 9223372036854775806 NO 20 2 rows selected. 32 iSQL User’s Manual 트랜잭션 제어 트랜잭션 모드 설정 한 번 명령어를 수행할 때마다 자동으로 commit 할 것인지 여부를 결정하는 기능이다. xdbiSQL> AUTOCOMMIT OFF; -> 사용자가 commit 하기 전에는 commit 되지 않음 Set autocommit off success. xdbiSQL> AUTOCOMMIT ON; -> 명령어를 수행할 때마다 자동으로 commit Set autocommit on success. PLANCOMMIT SET PLANCOMMIT ON/OFF; autocommit off (non-autocommit) 모드에서 explain plan이 on (또는 only) 조건일 때, desc, select * from tab; 또는 select * from seq; 등과 같은 명령어를 수행했을 때 자동으로 commit 할지를 결정하는 기능이다. 기본값은 OFF 이다. * 참고: 기본값이 OFF 이므로 autocommit off 세션에서 explain plan이 on (또는 only) 조건일 때 알티베이스는 위의 명령어(desc, select * from tab; 또는 select * from seq;)를 자동 commit 하지 않고 오류 메시지를 발생한다. 이 값이 ON이면, iSQL은 이런 명령어들을 실행한 후 commit을 수행해서 에러가 발생하지 않도록 한다. iSQL 사용 예 33 파일 관리 작업 결과 저장 iSQL을 통해 작업한 결과를 지정한 파일로 저장하는 기능을 제공한다. 다음과 같이 spool 명령을 이용하면 지정한 book.txt 파일에 작업한 결과가 저장된다. 이 기능을 해제하고 싶으면 SPOOL OFF 명령을 사용한다. xdbiSQL> SPOOL book.txt Spool start. [book.txt] -> 이후의 모든 명령과 그 결과들이 book.txt 파일에 저장된다. 이 파일은 현재 디렉터리에 생성된다. xdbiSQL> SPOOL OFF Spool Stop -> 더 이상 명령과 그 결과들을 파일에 저장하지 않는다. 스크립트 파일 실행 @ 명령어 @file_name[.sql] 또는 START file_name[.sql] file_name[.sql]: 수행 될 스크립트 파일, 확장자를 생략하면 iSQL은 기본 스크립트 파일 확장자(.sql)로 간주한다. iSQL 명령어와 SQL구문들이 저장된 스크립트 파일을 실행하면, 한번에 파일내의 명령어들을 순차적으로 실행한다. @ 명령어는 START와 같은 기능을 갖는다. 스크립트 파일내의 exit 또는 quit 명령어는 iSQL을 종료시킨다. 스크립트 파일내에는 일반적으로 SQL문, iSQL 명령어, 또는 Stored Procedure 블록 등이 포함될 수 있다. 다음은 $ALTIBASE_XDB_HOME/sample/APRE/schema 디렉터리에 있는 스크립트 schema.sql을 현재 디렉터리에서 수행하는 예이다. xdbiSQL> START schema.sql <- 파일내의 sql 문이 실행된다. 또는 34 iSQL User’s Manual xdbiSQL> @schema.sql 스크립트 파일을 명시할 때, 사용자 계정의 알티베이스 홈 디렉터리($ALTIBASE_XDB_HOME)를 의미하는 물음표(“?”)를 사용할 수 있다. 다음은 $ALTIBASE_XDB_HOME/sample/APRE/schema 디렉터리에 있는 스크립트 schema.sql을 다른 디렉터리에서 수행하는 예이다. xdbiSQL> @?/sample/schema.sql 물음표(“?”)는 다음 iSQL 명령어에서도 사용할 수 있다: edit, save, load, spool, start * 스크립트 파일 내에서 주석의 사용은 -- 또는 /* */으로 가능하다. --는 이 표시 다음부터 그 라인의 끝까지를 주석으로 처리하고 여러 라인을 주석으로 처리할 때는 주석부분을 /*와 */ 사이에 넣으면 된다. @@ 명령어 @@file_name[.sql] file_name[.sql]: 수행될 내포형 스크립트를 나타낸다. 확장자를 생략하면 iSQL은 기본 명령어 파일 확장자(.sql)로 간주한다. 명시된 스크립트를 수행한다. @@ 명령어는 @ 명령어와 유사한 기능을 갖는다. 이 명령어는 수행될 스크립트와 같은 경로에서 명시된 스크립트를 찾는 기능을 가지고 있기 때문에 내포형 스크립트를 수행하는데 유용하다. @@ 명령어는 다음과 같은 용도로 쓰일 수 있다. 사용자가 임의의 스크립트 파일 내에 @@file_name.sql을 입력하고 그 스크립트 파일을 실행하면, iSQL은 file_name.sql을 호출한 스크립트 파일과 동일한 디렉터리에서 file_name.sql을 찾아서 수행한다. file_name.sql 은 이를 호출한 스크립트 파일과 같은 디렉터리에 있어야 한다. 만일 그런 파일이 존재하지 않으면, iSQL은 오류 메시지를 보여준다. 사용자가 iSQL 프롬프트 상에서 @@file_name.sql을 입력하여 실행하는 것은 @file_name.sql을 실행하는 것과 동일하다. 스크립트에는 일반적으로 SQL문, iSQL 명령어, 또는 Stored Procedure 블록 등이 포함될 수 있다. 스크립트 내에 exit 또는 quit 명령어는 iSQL을 종료시킨다. 다음은 $ALTIBASE_XDB_HOME 디렉터리에서 a.sql 스크립트 iSQL 사용 예 35 파일을 실행하는 예제로, 이 파일 내에서 schema.sql 스크립트 파일을 실행한다. 이 예제가 에러 없이 제대로 수행되려면, a.sql은 schema.sql파일이 위치하는 $ALTIBASE_XDB_HOME/sample/APRE/schema 디렉터리에 같이 있어야 한다. xdbiSQL> @sample/APRE/schema/a.sql $ cat a.sql @@schema.sql * 참고: 이 후의 예제는 위의 스크립트를 실행해서 생성된 테이블들을 (부록 Schema 참고) 가지고 iSQL 환경에서 질의에 따른 결과를 편집한 것이다. SQL문의 저장 현재 iSQLbuffer에 있는 명령어 중 가장 최근에 수행한 명령어를 파일로 저장하는 기능이다. 이 파일은 현재 디렉터리에 생성된다. xdbiSQL> SELECT * FROM book; xdbiSQL> SAVE book.sql; -> book.sql 파일에 ‘SELECT * FROM book;’가 저장된다. Save completed. SQL문의 로드 지정한 파일의 첫 번째 명령어를 iSQL버퍼의 마지막 위치에 로드시키는 기능이다. xdbiSQL> LOAD book.sql xdbiSQL> SELECT * FROM book; Load completed. xdbiSQL> / -> SELECT * FROM book; 문이 실행된 것을 볼 수 있다. DML문 저장 INSERT, UPDATE, DELETE, MOVE 등의 DML문 실행시 이를 $ALTIBASE_XDB_HOME/trc/isql_query.log에 기록한다. 이 기능을 설정하려면 SET QUERYLOGGING을 ON으로 하고, 해제하려면 OFF하면 된다. 36 iSQL User’s Manual xdbiSQL> SET QUERYLOGGING ON; -> 이후의 모든 DML 문이 $ALTIBASE_XDB_HOME/trc/isql_query.log에 저장된다. xdbiSQL> CREATE TABLE T1 ( I1 INTEGER ); Create success. xdbiSQL> INSERT INTO T1 VALUES ( 1 ); 1 row inserted. xdbiSQL> UPDATE T1 SET I1 = 2; 1 row updated. xdbiSQL> SELECT * FROM T1; I1 -------------- 2 1 row selected. xdbiSQL> DELETE FROM T1; 1 row deleted. xdbiSQL> DROP TABLE T1; Drop success. xdbiSQL> EXIT % cat $ALTIBASE_XDB_HOME/trc/isql_query.log -> SET QUERYLOGGING ON으로 실행한 후의 DML을 확인할 수 있다. [2009/09/16 10:36:14] [127.0.0.1:25310 SYS] INSERT INTO T1 VALUES ( 1 ) [2009/09/16 10:36:31] [127.0.0.1:25310 SYS] UPDATE T1 SET I1 = 2 [2009/09/16 10:36:37] [127.0.0.1:25310 SYS] DELETE FROM T1 질의문 편집 최근 질의문 편집 iSQL 상에서 파일을 생성하고 편집할 수 있도록 명령어 ed를 제공한다. 인수 없이 ed를 실행하면 가장 최근 실행된 질의문이 iSQL.buf 라는 임시 파일로 생성되며 다음과 같은 화면을 볼 수 있다. (지면을 절약하기 위해 몇 줄만 화면으로 표시한다.) xdbiSQL> SELECT sysdate FROM dual; SYSDATE --------------- 01-JAN-2000 1 row selected. xdbiSQL> ED SELECT sysdate FROM dual; ~ ~ ~ "iSQL.buf" 1L, 26C 기존 파일 편집 존재하는 파일을 편집하기 위해서는 iSQL 상에서 ed 실행 시 그 파일 이름을 뒤에 넣으면 된다. 화면이 초기화 되어 있을 때 빈 줄 표시는 ~(tilde) 문자로 표시된다. iSQL 사용 예 37 xdbiSQL> ED myquery.sql "myquery.sql" INSERT INTO employee(ENO, E_FIRSTNAME, E_LASTNAME, SEX) VALUES(21, 'MSJUNG', 'F'); INSERT INTO employee(ENO, E_FIRSTNAME, E_LASTNAME, SEX, JOIN_DATE) VALUES(22, 'Joshua', 'Baldwin', 'M', TO_DATE('2001-11-19 00:00:00', 'YYYY-MM-DD HH:MI:SS')); ~ ~"myquery.sql" 히스토리 목록에 있는 질의문 편집 히스토리 목록에서 해당 번호를 사용하여 이전에 수행했던 명령을 편집할 수 있다. 즉, 해당 번호의 질의문이 iSQL.buf 임시 파일로 생성되어 편집을 할 수 있으며, 편집 결과는 히스토리의 마지막에 등록되어 가장 마지막 명령을 재수행하는 ‘/’ 으로도 실행이 가능하다. xdbiSQL> h 1 : SELECT * FROM customers; 2 : SELECT * FROM employees; xdbiSQL> 2ed or xdbiSQL> 2 ed SELECT * FROM employees; ~ ~ "iSQL.buf" * 파일을 편집하기 위해서 명령 줄에 인수 2라는 파일 이름을 넣은 (xdbiSQL> ed 2) 명령어와 구분된다. 편집 후 (employees를 orders로 변경) xdbiSQL> h <- 현재 xdbisql buffer에 있는 히스토리 목록 1 : SELECT * FROM customers; 2 : SELECT * FROM employees; : SELECT * FROM orders; <- 2 ed 명령어에 의해 편집된 질의문이 히스토리 목록에 가장 마지막 명령어로 저장된다. xdbiSQL> / <- 가장 최근에 수행한 명령어가 실행된다. ORDERS.ONO ORDERS.ORDER_DATE ORDERS.ENO ORDERS.CNO ----------------------------------------------- ORDERS.GNO ORDERS.QTY ORDERS.ARRIVAL_DATE ORDERS.PROCESSING ----------------------------------------------- 0011290007 2000/11/29 00:00:00 12 7111111431202 A111100002 70 2000/12/02 00:00:00 C 0011290011 2000/11/29 00:00:00 12 7610011000001 E111100001 1000 2000/12/05 00:00:00 D … 0012310012 2000/12/31 00:00:00 19 7308281201145 C111100001 250 2001/01/03 00:00:00 O 30 rows selected. 38 iSQL User’s Manual iSQL 사용 예 39 SELECT 결과 포매팅 SELECT 문에 대한 결과들을 사용자가 보기 좋게 포매팅하는 기능이다. SET LINESIZE SELECT 문 결과 출력시 디스플레이되는 한 라인의 사이즈를 설정한다. 10 에서 200 사이의 값이어야 한다. xdbiSQL> SET LINESIZE 100; -> 한 라인의 디스플레이 크기를 100으로 설정한다. SET LOBSIZE CLOB 칼럼을 SELECT 문으로 조회 시 디스플레이 되는 데이터의 길이를 설정한다. CLOB 칼럼의 데이터를 SELECT 문으로 조회하기 위해서 우선 트랜잭션 모드를 AUTOCOMMIT OFF로 설정해야 한다. CREATE TABLE C1(I1 INTEGER, I2 CLOB); INSERT INTO C1 VALUES(1, 'A123456789'); INSERT INTO C1 VALUES(2, 'A1234'); INSERT INTO C1 VALUES(3, 'A12345'); INSERT INTO C1 VALUES(4, 'A1234567890123'); xdbiSQL> autocommit off; -> CLOB 칼럼 조회를 위해 트랜잭션 모드를 OFF로 설정한다. Set autocommit off success. xdbiSQL> select * from c1; C1.I1 C1.I2 --------------------------- 1 A123456789 2 A1234 3 A12345 4 A1234567890123 4 rows selected. xdbiSQL> set lobsize 10; -> CLOB 칼럼의 데이터를 select 문으로 조회할 때 화면에 나타나는 데이터 길이를 설정한다. xdbiSQL> select * from c1; C1.I1 C1.I2 -------------------------- 1 A123456789 2 A1234 3 A12345 4 A123456789 4 rows selected. 40 iSQL User’s Manual SET LOBOFFSET CLOB 칼럼을 SELECT 문으로 조회할 때 디스플레이 되는 Clob 데이터의 시작 위치를 설정한다. CLOB 칼럼의 데이터를 SELECT 문으로 조회하기 위해서 우선 트랜잭션 모드를 AUTOCOMMIT OFF로 설정해야 한다. CREATE TABLE C1(I1 INTEGER, I2 CLOB); INSERT INTO C1 VALUES(1, 'A123456789'); INSERT INTO C1 VALUES(2, 'A1234'); INSERT INTO C1 VALUES(3, 'A12345'); INSERT INTO C1 VALUES(4, 'A1234567890123'); xdbiSQL> autocommit off; Set autocommit off success. xdbiSQL> set loboffset 4; -> CLOB 칼럼의 데이터를 select 문으로 조회할 때 화면에 나타나는 데이터의 시작 위치를 설정한다. xdbiSQL> select * from c1; C1.I1 C1.I2 -------------------------- 1 456789 2 4 3 45 4 4567890123 4 rows selected. SET FEEDBACK SELECT 문 결과 출력시 선택된 결과 건수를 출력한다. SET FEEDBACK ON|OFF|n ON: SELECT문 수행 후 결과 데이터 건수를 출력한다. OFF: SELECT문 수행 후 결과 데이터 건수를 출력하지 않는다. n: 결과 건수가 n이상일 경우에만 출력한다. xdbiSQL> SET FEEDBACK ON; xdbiSQL> SELECT * FROM employees WHERE ENO < 3; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 2 rows selected. iSQL 사용 예 41 SET PAGESIZE 결과 row들을 몇 개 단위로 보여줄 것인지 결정한다. xdbiSQL> SET PAGESIZE 2; -> 결과 row를 2개 단위로 보여준다. xdbiSQL> SELECT * FROM employees; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 3 Kobain Ken engineer 0162581369 1001 2000 M 650226 11-JAN-2010 H 4 Foster Aaron PL 0182563984 3001 1800 M 820730 H ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 5 Ghorbani Farhad PL 01145582310 3002 2500 M 20-DEC-2009 H 6 Momoi Ryu programmer 0197853222 1002 1700 M 790822 09-SEP-2010 H . . . 20 rows selected. xdbiSQL> SET PAGESIZE 0; -> 결과 전체를 한 단위로 보여준다. xdbiSQL> SELECT * FROM employees; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 3 Kobain Ken engineer 0162581369 1001 2000 M 650226 11-JAN-2010 H . 42 iSQL User’s Manual . . 20 rows selected. SET HEADING 결과에 헤더를 출력할지 결정한다. xdbiSQL> SET HEADING OFF; -> 결과에 헤더를 출력하지 않는다. xdbiSQL> SELECT * FROM employees; 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 3 Kobain Ken engineer 0162581369 1001 2000 M 650226 11-JAN-2010 H . . . 20 rows selected. xdbiSQL> SET HEADING ON; -> 결과에 헤더를 출력한다. xdbiSQL> SELECT * FROM employee; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 3 Kobain Ken engineer 0162581369 1001 2000 M 650226 11-JAN-2010 H . . . 20 rows selected. SET COLSIZE SELECT 문 결과 출력시 디스플레이되는 CHAR, VARCHAR 타입 칼럼의 사이즈를 설정하여, 길이가 긴 문자열을 포함하는 칼럼이 존재할 경우 인식을 용이하게 한다. xdbiSQL> CREATE TABLE LOCATION( ID INTEGER, NAME CHAR(20), ADDRESS VARCHAR(500), PHONE CHAR(20)); iSQL 사용 예 43 Create success. xdbiSQL> INSERT INTO LOCATION VALUES(1, 'ALTIBASE', 'Inyoung Bldg, 5fl 44-11 Youido-dong Youngdungpo-qu seoul, 150-890. Korea', '82-2-769-7500'); 1 row inserted. 아래는 CHAR 또는 VARCHAR 타입 칼럼의 디스플레이 사이즈를 7로 설정하여 조회하는 예제이다. xdbiSQL> SET COLSIZE 7; xdbiSQL> SELECT ID,NAME,ADDRESS,PHONE FROM LOCATION; ID NAME ADDRESS PHONE -------------------------------------------- 1 ALTIBAS 10Fl., 82-2-20 E Daerung 82-1000 post-to wer II, Guro-d ong, Gu ro-qu, Seoul 1 52-790. Korea 1 row selected. 44 iSQL User’s Manual 출력 옵션 제어 수행시간 출력 SQL 문을 실행하는데 걸린 시간을 알려주는 기능이다. xdbiSQL> SET TIMING ON; -> 명령 실행 후 마지막 라인에 실행시간을 출력한다. xdbiSQL> SELECT * FROM employees; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H . . . 20 rows selected. elapsed time : 0.01 xdbiSQL> SET TIMING OFF; -> 실행시간을 출력하지 않는다. 수행시간 단위 설정 SQL문의 쿼리 수행 시간 단위를 설정하는 기능이다. 설정할 수 있는 단위는 다음과 같다. 초 밀리초 마이크로초 나노초 xdbiSQL> SET TIMING ON xdbiSQL> SET TIMESCALE SEC; xdbiSQL> SELECT * FROM employees; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R ... 20 rows selected. iSQL 사용 예 45 elapsed time : 0.00 xdbiSQL> SET TIMESCALE MILSEC; xdbiSQL> SELECT * FROM employee; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R ... ... 20 rows selected. elapsed time : 0.72 xdbiSQL> SET TIMESCALE MICSEC; xdbiSQL> SELECT * FROM employee; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R ... 20 rows selected. elapsed time : 966.00 xdbiSQL> SET TIMESCALE NANSEC; xdbiSQL> SELECT * FROM employee; NO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R ... 20 rows selected. elapsed time : 681000.00 외래키 출력 DESC 명령어를 사용하여 테이블 구조를 볼 때 외래 키에 대한 정보를 보여주는 기능이다. xdbiSQL> SET FOREIGNKEYS ON; -> 외래 키에 대한 정보를 출력한다. xdbiSQL> DESC employees; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ----------------------------------------------------------- ------------------- NAME TYPE IS NULL 46 iSQL User’s Manual ----------------------------------------------------------- ------------------- ENO INTEGER FIXED NOT NULL E_LASTNAME CHAR(20) FIXED NOT NULL E_FIRSTNAME CHAR(20) FIXED NOT NULL EMP_JOB VARCHAR(15) FIXED EMP_TEL CHAR(15) FIXED DNO SMALLINT FIXED SALARY NUMERIC(10, 2) FIXED SEX CHAR(1) FIXED BIRTH CHAR(6) FIXED JOIN_DATE DATE FIXED STATUS CHAR(1) FIXED [ INDEX ] ----------------------------------------------------------- ------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- ------------------- __SYS_IDX_ID_238 BTREE UNIQUE ENO ASC EMP_IDX1 BTREE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- ------------------- ENO [ FOREIGN KEYS ] ----------------------------------------------------------- ----------- xdbiSQL> SET FOREIGNKEYS OFF; -> 외래 키에 대한 정보를 출력하지 않는다. xdbiSQL> DESC employees; [ ATTRIBUTE ] ----------------------------------------------------------- ------------------- NAME TYPE IS NULL ----------------------------------------------------------- ------------------- ENO INTEGER FIXED NOT NULL E_LASTNAME CHAR(20) FIXED NOT NULL E_FIRSTNAME CHAR(20) FIXED NOT NULL EMP_JOB VARCHAR(15) FIXED EMP_TEL CHAR(15) FIXED DNO SMALLINT FIXED SALARY NUMERIC(10, 2) FIXED SEX CHAR(1) FIXED BIRTH CHAR(6) FIXED JOIN_DATE DATE FIXED STATUS CHAR(1) FIXED [ INDEX ] ----------------------------------------------------------- ------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- ------------------- iSQL 사용 예 47 __SYS_IDX_ID_238 BTREE UNIQUE ENO ASC EMP_IDX1 BTREE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- ----------- ENO 스크립트 파일 실행결과 출력 스크립트 파일 실행의 결과를 화면상에 보여줄지를 결정한다. OFF 기능은 iSQL 상에서 스크립트 실행 시 생성된 결과가 화면에 출력되는 것을 막는다. 그러나, OFF가 설정되어 있더라도 질의를 직접 입력하는 경우 (예: xdbiSQL> select * from t1;) 질의 결과는 화면에 출력 되며, 스크립트 명령을 이용하는 경우에만 (예: xdbiSQL> @t.sql ) 화면에 출력되지 않는다. xdbiSQL> SET TERM OFF; xdbiSQL> SET TIMING ON; -> 실행시간이 화면에 출력되지 않는다. xdbiSQL> @schema.sql -> 스크립트 실행 결과를 출력하지 않는다. xdbiSQL> SELECT eno, e_firstname, e_lastname FROM employees; -> 질의를 직접 입력하는 경우 결과는 출력된다. ENO E_FIRSTNAME E_LASTNAME ----------------------------------------------------------- - 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani . . . xdbiSQL> SET TERM ON; -> 스크립트 실행 결과를 출력한다. xdbiSQL> @schema.sql xdbiSQL> ALTER SESSION SET AUTOCOMMIT = TRUE; ->결과 시작 Alter success. xdbiSQL> DROP TABLE ORDERS; Drop success. elapsed time : 0.00 xdbiSQL> DROP TABLE EMPLOYEES; Drop success. elapsed time : 0.00 . . . xdbiSQL> CREATE INDEX ODR_IDX3 ON ORDERS (GNO ASC); Create success. 48 iSQL User’s Manual elapsed time : 0.00 -> 결과 끝 실행 계획 출력 SQL 튜닝을 위하여 iSQL상에서 실행 계획 (Explain Plan)을 출력하는 기능이다. SQL 문의 실행 계획은 SELECT, INSERT, UPDATE, DELETE 등의 DML 문에 대해서 확인이 가능하다. 이를 위해서 SELECT 등의 구문을 수행하기 전에 다음 명령을 수행하여야 한다. ALTER SESSION SET EXPLAIN PLAN = option; 여기서 option은 ON, OFF, ONLY의 세 가지 설정이 있으며, 기본 설정값은 OFF이다. ON: SELECT문 실행 후 결과 레코드와 함께 Execution Plan 을 보여준다. ONLY: SELECT문에 대해 Prepare 과정만 수행한 후 Execution 과정을 수행하지 않고 실행 계획만 보여준다. 주 언어 변수 바인딩이 존재하는 SELECT 문 또는 실행 수행 시간이 오래 걸리는 질의에 대해 단순히 실행 계획만 확인할 경우 이 기능을 사용한다. OFF: SELECT문 실행 후 결과 레코드만 보여준다. 사용자가 기술한 WHERE절에 존재하는 조건들의 처리 방법 등의 보다 자세한 정보가 필요한 경우는 다음 명령을 사용한다. ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 1; 위의 구문처럼 해당 프로퍼티를 1로 설정하여 ON시키면, 실행 계획 정보에 WHERE절의 조건들이 FIXED KEY RANGE, VARIABLE KEY RANGE, FILTER 등으로 자세하게 분류되어 표시된다. 따라서 WHERE절을 복잡하게 사용한 경우 어떤 술어들이 인덱스 스캔을 통해 수행되는지 확인할 수 있다. 단, 특정 최적화 기법에 의해 질의가 변경된 경우는 이러한 정보가 출력되지 않을 수 있다. 다음은 해당 SQL문을 사용한 출력 예이다. TRCLOG_DETAIL_PREDICATE을 설정하고 EXPLAIN PLAN = ON으로 한 경우 xdbiSQL> alter system set trclog_detail_predicate = 1; Alter success. xdbiSQL> alter session set explain plan = on; Alter success. xdbiSQL> SELECT eno, e_lastname, e_firstname FROM employees WHERE eno = 1; ENO E_LASTNAME E_FIRSTNAME iSQL 사용 예 49 ----------------------------------------------------------- - 1 Moon Chan-seung 1 row selected. ----------------------------------------------------------- - PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_238, ACCESS: 1, SELF_ID: 2 ) [ FIXED KEY ] AND OR ENO = 1 ----------------------------------------------------------- - TRCLOG_DETAIL_PREDICATE을 설정하지 않고, EXPLAIN PLAN = ON으로 한 경우 xdbiSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. xdbiSQL> ALTER SESSION SET EXPLAIN PLAN = ON; Alter success. xdbiSQL> SELECT eno, e_lastname, e_firstname FROM employees WHERE eno = 1; ENO E_LASTNAME E_FIRSTNAME ----------------------------------------------------------- - 1 Moon Chan-seung 1 row selected. ----------------------------------------------------------- - PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_238, ACCESS: 1, SELF_ID: 2 ) ----------------------------------------------------------- - TRCLOG_DETAIL_PREDICATE을 설정하지 않고, EXPLAIN PLAN = ONLY로 한 경우 xdbiSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. xdbiSQL> ALTER SESSION SET EXPLAIN PLAN = ONLY; Alter success. xdbiSQL> SELECT eno, e_lastname, e_firstname FROM employees WHERE eno = 1; ENO E_LASTNAME E_FIRSTNAME ----------------------------------------------------------- - No rows selected. ----------------------------------------------------------- - PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_238, ACCESS: ??, SELF_ID: 2 ) ----------------------------------------------------------- - EXPLAIN PLAN = ONLY인 경우 질의 실행 없이 실행 계획만 생성하므로 ACCESS 항목과 같이 실제 실행 후 그 값이 결정되는 항목들은 물음표 (“??”)로 표시된다. 50 iSQL User’s Manual 결과 출력 방향 설정 iSQL에서 SELECT 구문으로 조회할 경우, 결과를 세로로 보여줄 것인가 가로로 보여줄 것인가를 선택할 수 있다. 조회 결과가 행이 적고, 열이 많을 경우에 적합한 출력이다. 일반적으로 이러한 경우에 가로로 출력되면 해당하는 열을 맞춰 값을 보기가 어렵다. 하지만 출력 결과의 방향을 세로로 설정하면 보기가 편리하다. xdbiSQL>SET VERTICAL ON; -> 출력 결과 모드를 세로로 설정한다. xdbiSQL> SELECT * FROM employees WHERE eno = 2; ENO : 2 E_LASTNAME : Davenport E_FIRSTNAME : Susan EMP_JOB : designer EMP_TEL : 0113654540 DNO : SALARY : 1500 SEX : F BIRTH : 721219 JOIN_DATE : 18-NOV-2009 STATUS : H 1 row selected. iSQL 사용 예 51 iSQL 화면 설정 보기 다음은 현재 세션에서 iSQL 화면 설정 값을 보는 예를 보여준다. xdbiSQL> SHOW USER -> 현재 세션에 접속한 사용자 User : SYS xdbiSQL> SHOW COLSIZE ColSize : 0 xdbiSQL> SHOW LOBOFFSET LobOffset: 0 xdbiSQL> SHOW LINESIZE Linesize : 100 xdbiSQL> SHOW LOBSIZE LobSize : 80 xdbiSQL> SHOW PAGESIZE Pagesize : 0 xdbiSQL> SHOW TIMESCALE TimeScale : Second xdbiSQL> SHOW HEADING Heading : On xdbiSQL> SHOW TIMING Timing : Off xdbiSQL> SHOW VERTICAL Vertical : Off xdbiSQL> SHOW FOREIGNKEYS ForeignKeys : Off xdbiSQL> SHOW PLANCOMMIT PlanCommit : Off xdbiSQL> SHOW QUERYLOGGING QueryLogging : Off xdbiSQL> SHOW TERM Term : On xdbiSQL> SHOW FEEDBACK Feedback : 1 xdbiSQL> SHOW ALL User : SYS ColSize : 0 LobOffset : 0 LineSize : 80 LobSize : 80 PageSize : 0 TimeScale : Second Heading : On Timing : Off Vertical : Off ForeignKeys : Off PlanCommit : Off 52 iSQL User’s Manual 호스트 변수 호스트 변수를 선언하여 사용할 수 있다. 호스트 변수는 프로시저나 함수 실행 시 유용하다. 호스트 변수 선언하기 구문 VAR[IABLE] var_name var_type 타입 변수 선언 시 사용할 수 있는 타입은 다음과 같다. INTEGER, BYTE(n), NIBBLE(n), NUMBER, NUMBER(n), NUMBER(n,m), NUMERIC, NUMERIC(n), NUMERIC(n,m), CHAR(n), VARCHAR(n), NCHAR(n), NVARCHAR(n), DATE DECIMAL, DECIMAL(n), DECIMAL(n,m), FLOAT, FLOAT(n), DOUBLE, REAL BIGINT, SMALLINT 예제 아래는 변수를 선언하는 예를 보여준다. xdbiSQL> VAR p1 INTEGER xdbiSQL> VAR p2 CHAR(10) xdbiSQL> VAR v_double DOUBLE xdbiSQL> VAR v_real REAL 호스트 변수에 값 할당하기 구문 EXEC[UTE] :var_name := value; 예제 아래는 변수에 값을 할당하는 예를 보여준다. xdbiSQL> EXECUTE :p1 := 100; Execute success xdbiSQL> EXEC :p2 := ‘abc’; Execute success iSQL 사용 예 53 호스트 변수 보기 구문 PRINT VAR[IABLE] -> 선언된 모든 변수를 보여준다. PRINT var_name -> var_name의 타입과 값을 보여준다. 예제 다음은 선언된 모든 변수값을 보여준다. xdbiSQL> PRINT VAR [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- P1 INTEGER 100 P2 CHAR(10) abc V_REAL REAL V_DOUBLE DOUBLE xdbiSQL> PRINT p2 -> 변수 p2에 관한 정보만 출력한다. NAME TYPE VALUE ------------------------------------------- P2 CHAR ( 10 ) abc 54 iSQL User’s Manual PREPARE SQL문 수행 Prepared SQL문 수행과 Direct SQL문 수행의 차이 iSQL상에서 SQL문을 수행하면 기본적으로 Direct Execution 방법으로 수행된다. Direct Execution 이란 질의에 대한 구문 분석, 정당성 검사, 최적화 및 수행을 한번에 수행하는 것을 의미한다. 이에 반해 Prepared Execution 방법은 prepare시에 질의에 대한 구문 분석, 정당성 검사, 최적화까지만을 수행해 질의에 대한 실행 계획을 수립해 두고 이후에 클라이언트로부터 실행 요구 메시지를 받으면 수행을 하는 방법이다. ODBC를 사용한 응용프로그램 작성의 경우 Prepared Execution 방법이 일반적이며 호스트 변수 바인딩을 통해 한 SQL문에 대한 반복적인 수행이 필요한 경우 속도의 이점이 있다. iSQL 상에서는 이 두 방법의 차이는 변수 사용 여부의 차이만 존재하며 속도의 이점은 존재하지 않는다. Prepared SQL문 구문 PREPARE SQL_statement; 예제 다음은 PREPARE 명령어를 사용한 SQL문 수행 예제이다. xdbiSQL> VAR t1 INTEGER; xdbiSQL> EXEC :t1 := 1; Execute success. xdbiSQL> PREPARE SELECT eno, e_firstname, e_lastname, sex FROM employees WHERE eno=:t1; ENO E_FIRSTNAME E_LASTNAME SEX ----------------------------------------------------------- ------- 1 Chan-seung Moon M 1 row selected. iSQL 사용 예 55 프로시저 생성과 실행 및 삭제 프로시저 생성 프로시저를 생성하는 기능을 제공한다. 프로시저 생성시 반드시 END; / 구문으로 끝나야 한다. 생성된 프로시저는 sys_procedures_ 메타 테이블을 참조하여 확인할 수 있다. 프로시저 실행 프로시저를 실행하는 기능을 제공한다. 프로시저를 실행함으로써 다양한 쿼리를 한꺼번에 수행할 수 있다. 실행할 프로시저에 파라미터가 있는 경우 반드시 프로시저 실행전에 파라미터 개수만큼 변수가 선언되어 있어야 한다. 예제1 다음은 INSERT 문을 수행하는 프로시저 emp_proc를 생성하는 예를 보여준다. (IN 파라미터 이용) xdbiSQL> CREATE OR REPLACE PROCEDURE emp_proc(p1 IN INTEGER, p2 IN CHAR(20), p3 IN CHAR(20), p4 IN CHAR(1)) AS BEGIN INSERT INTO employees(eno, e_firstname, e_lastname, sex) VALUES(p1, p2, p3, p4); END; / Create success. xdbiSQL> SELECT * FROM system_.sys_procedures_ order by created desc limit 1; USER_ID PROC_OID ------------------------------------ PROC_NAME OBJECT_TYPE STATUS ----------------------------------------------------------- ----------- PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID RETURN_SIZE ----------------------------------------------------------- -- RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN CREATED ----------------------------------------------------------- -------------- LAST_DDL_TIME 56 iSQL User’s Manual ---------------- 2 3208680 EMP_PROC 0 0 4 2 192 29-FEB-2012 29-FEB-2012 1 row selected. 아래는 emp_proc를 실행하는 예를 보여준다. xdbiSQL> VAR eno INTEGER xdbiSQL> VAR first_name CHAR(20) xdbiSQL> VAR last_name CHAR(20) xdbiSQL> VAR sex CHAR(1) xdbiSQL> EXECUTE :eno := 21; Execute success. xdbiSQL> EXECUTE :first_name := 'Joel'; Execute success. xdbiSQL> EXECUTE :last_name := 'Johnson'; Execute success. xdbiSQL> EXECUTE :sex := 'M'; Execute success. xdbiSQL> EXECUTE emp_proc(:eno, :firstname, :lastname, :sex); Execute success. xdbiSQL> SELECT eno, e_firstname, e_lastname, sex FROM employees WHERE eno = 21; ENO E_FIRSTNAME E_LASTNAME SEX ----------------------------------------------------------- ------ 21 Joel Johnson M 1 row selected. 예제2 다음은 SELECT 문을 수행하는 프로시저 outProc를 생성하는 예를 보여준다. xdbiSQL> CREATE TABLE outTbl(i1 INTEGER, i2 INTEGER); Create success. xdbiSQL> INSERT INTO outTbl VALUES(1,1); 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> SELECT * FROM outTbl; OUTTBL.I1 OUTTBL.I2 --------------------------- 1 1 1 1 1 1 1 1 1 1 5 rows selected. xdbiSQL> CREATE OR REPLACE PROCEDURE outProc(a1 OUT INTEGER, a2 IN OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO a1 FROM outTbl WHERE i2 = a2; END; / iSQL 사용 예 57 Create success. 아래는 outProc를 실행하는 예를 보여준다. xdbiSQL> VAR t3 INTEGER xdbiSQL> VAR t4 INTEGER xdbiSQL> EXEC :t4 := 1; Execute success. xdbiSQL> EXEC outProc (:t3, :t4); Execute success. xdbiSQL> PRINT t3; NAME TYPE VALUE ----------------------------------------------- T3 INTEGER 5 예제3 다음은 프로시저 outProc1을 생성하는 예를 보여준다. xdbiSQL> CREATE OR REPLACE PROCEDURE outProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1; p3 := p1 + 100; END; / Create success. xdbiSQL> VAR v1 INTEGER xdbiSQL> VAR v2 INTEGER xdbiSQL> VAR v3 INTEGER xdbiSQL> EXEC :v1 := 3; Execute success. xdbiSQL> EXEC outProc1(:v1, :v2, :v3); Execute success. xdbiSQL> PRINT VAR; [ HOST VARIABLE ] ----------------------------------------------- NAME TYPE VALUE ----------------------------------------------- .. V1 INTEGER 3 V2 INTEGER 3 V3 INTEGER 103 .. 예제4 다음은 SELECT 문을 수행하는 프로시저 inoutProc를 생성하는 예를 보여준다. xdbiSQL> CREATE TABLE inoutTbl(i1 INTEGER); Create success. xdbiSQL> INSERT INTO inoutTbl VALUES(1); 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> SELECT * FROM inoutTbl; INOUTTBL.I1 -------------- 1 1 58 iSQL User’s Manual 1 3 rows selected. xdbiSQL> CREATE OR REPLACE PROCEDURE inoutProc (a1 IN OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO a1 FROM inoutTbl WHERE i1 = a1; END; / Create success. xdbiSQL> VAR t3 INTEGER xdbiSQL> EXEC :t3 := 1; Execute success. xdbiSQL> EXEC inoutProc(:t3); Execute success. xdbiSQL> PRINT t3; NAME TYPE VALUE ----------------------------------------------- T3 INTEGER 3 예제5 다음은 프로시저 inoutProc1을 생성하는 예를 보여준다. xdbiSQL> CREATE OR REPLACE PROCEDURE inoutProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1 + p2; p3 := p1 + 100; END; / Create success. 아래는 inoutProc1을 실행하는 예를 보여준다. xdbiSQL> VAR v1 INTEGER xdbiSQL> VAR v2 INTEGER xdbiSQL> VAR v3 INTEGER xdbiSQL> EXEC :v1 := 3; Execute success. xdbiSQL> EXEC :v2 := 5; Execute success. xdbiSQL> EXEC inoutProc1(:v1, :v2, :v3); Execute success. xdbiSQL> PRINT VAR; [ HOST VARIABLE ] ----------------------------------------------- NAME TYPE VALUE ----------------------------------------------- .. V1 INTEGER 3 V2 INTEGER 8 V3 INTEGER 103 .. 프로시저 삭제 프로시저를 삭제하는 기능을 제공한다. 다음은 emp_proc를 삭제하는 예를 보여준다. iSQL 사용 예 59 xdbiSQL> DROP PROCEDURE emp_proc; Drop success 60 iSQL User’s Manual 함수 생성과 실행 및 삭제 함수 생성 함수를 생성하는 기능을 제공한다. 함수 생성시 반드시 END; / 구문으로 끝나야 하며 리턴 타입이 정의되어 있어야 한다. 생성된 함수는 sys_procedures_ 메타 테이블을 참조하여 확인할 수 있다. 다음은 UPDATE 문과 SELECT 문을 수행하는 함수 emp_func를 생성하는 예를 보여준다. xdbiSQL> CREATE OR REPLACE FUNCTION emp_func(f1 IN INTEGER) RETURN NUMBER AS f2 NUMBER; BEGIN UPDATE employees SET salary = 1000000 WHERE eno = f1; SELECT salary INTO f2 FROM employees WHERE eno = f1; RETURN f2; END; / Create success. xdbiSQL> SELECT * FROM system_.sys_procedures_; USER_ID PROC_OID PROC_NAME ----------------------------------------------------------- -------------------- OBJECT_TYPE STATUS PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID ----------------------------------------------------------- --------------- RETURN_SIZE RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN ----------------------------------------------------------- ------------- CREATED LAST_DDL_TIME ------------------------------ . . . 2 3300024 INOUTPROC1 0 0 3 2 132 15-SEP-2010 15-SEP-2010 2 3302344 EMP_FUNC 1 0 1 6 30000 23 38 0 3 209 15-SEP-2010 15-SEP-2010 36 rows selected. iSQL 사용 예 61 함수 실행 함수를 실행하는 기능을 제공한다. 함수를 실행함으로써 다양한 쿼리를 한꺼번에 수행할 수 있다. 실행할 함수에 파라미터가 있는 경우 반드시 함수 실행전에 파라미터 개수만큼 변수가 선언되어 있어야 한다. 또한, 함수의 실행 결과를 저장할 변수도 정의되어 있어야 한다. 다음은 emp_func를 실행하는 예를 보여준다. xdbiSQL> VAR eno INTEGER xdbiSQL> VAR ret NUMBER xdbiSQL> EXEC :eno := 11; Execute success. xdbiSQL> EXEC :ret := emp_func(:eno); Execute success. xdbiSQL> SELECT eno, salary FROM employees WHERE eno = 11; ENO SALARY --------------------------- 11 1000000 1 row selected. 함수 삭제 함수를 삭제하는 기능을 제공한다. 다음은 emp_func를 삭제하는 예를 보여준다. xdbiSQL> DROP FUNCTION emp_func; Drop success 62 iSQL User’s Manual 사용자 편의 기능 히스토리 이전에 수행했던 명령들의 리스트를 보여 준다. 해당 번호를 사용하여 이전에 수행했던 명령을 간단하게 실행할 수 있다. xdbiSQL> HISTORY; -> history 목록보기 또는 xdbiSQL> H; 1 : SELECT * FROM tab; 2 : SELECT * FROM book; 3 : HISTORY; xdbiSQL> / -> 가장 마지막 명령(HISTORY;)을 재수행 xdbiSQL> 2/ -> history 목록의 2번에 해당하는 명령(SELECT * FROM book;)실행 쉘 명령 iSQL에서 !다음에 바로 쉘 명령을 수행할 수 있는 편리한 기능이다. xdbiSQL> !ls -al total 3417 -rw-r----- 1 wlgml337 section 1198 Nov 1 13:30 .aliases -rw------- 1 wlgml337 section 5353 Oct 18 21:17 .bash_history -rw-r----- 1 wlgml337 section 1436 Nov 2 15:42 .bashrc -rw-r----- 1 wlgml337 section 1549 Dec 13 17:36 .profile drwxr-x--- 2 wlgml337 section 512 Nov 2 02:00 TEMP drwxr-xr-x 2 root root 512 Oct 16 11:29 TT_DB -rw------- 1 wlgml337 section 3446548 Dec 18 13:19 core drwxr-x--- 2 wlgml337 section 512 Nov 11 16:33 cron drwxr-x--- 2 wlgml337 section 512 Nov 15 10:52 test drwxr-xr-x 6 wlgml337 section 512 Nov 11 11:45 work 도움말 iSQL이 제공하는 명령에 대한 도움말을 제공한다. HELP 명령은 도움말 사용법을 보여 주며 특정 명령에 대한 도움말은 HELP 명령 다음에 정보를 알고자 하는 명령을 입력하면 된다. iSQL 사용 예 63 xdbiSQL> HELP; Use 'help [command]' Enter 'help index' for a list of command xdbiSQL> HELP INDEX; @ EDIT QUIT / EXIT ROLLBACK ALTER HEADING SAVE AUTOCOMMIT H[ISTORY] SELECT COMMIT INSERT SPOOL CREATE LINESIZE START DELETE LOAD TIMING DESC LOBOFFSET UPDATE DROP LOBSIZE VAR[IABLE] EXECUTE MOVE TERM EXPLANINPLAN PAGESIZE VERTICAL xdbiSQL> HELP EXIT; exit; or quit; - exit iSQL 64 iSQL User’s Manual 내셔널 캐릭터 사용법 NCHAR 및 NVARCHAR 타입의 내셔널 캐릭터 상수 문자를 사용하기 위해서 아래와 같은 방법으로 환경변수 등을 설정해야 데이터의 손실 염려가 없다. 환경변수 ALTIBASE_XDB_NLS_NCHAR_LITERAL_REPLACE의 값을 1로 설정한다. $ export ALTIBASE_XDB_NLS_NCHAR_LITERAL_REPLACE =1 SQL 구문에서 NCHAR 타입 상수 문자열을 사용하기 위해 해당 문자열 바로 앞에 “N”을 붙여 사용한다. xdbiSQL> create table t1 (c1 nvarchar(10)); Create success. xdbiSQL> insert into t1 values (N'AB가나'); 1 row inserted. xdbiSQL> select * from t1; C1 ------------------------ AB가나 1 row selected. 찾아보기 65 찾아보기 ! ! 명령어 ............................................... 13 / / 명령어 ......................................... 13, 62 @ @ 명령어 ......................................... 9, 33 @@ ....................................................... 9 @@ 명령어 .......................................... 34 A ALTIBASE_XDB_DATE_FORMAT........... 16 ALTIBASE_XDB_HOME ........................ 14 ALTIBASE_XDB_IPC_FILEPATH ............. 16 ALTIBASE_XDB_NLS_NCHAR_LITERAL_RE PLACE ............................................. 15 ALTIBASE_XDB_NLS_USE ..................... 14 ALTIBASE_XDB_WSERVER_PORT_NO .. 14 AUTOCOMMIT OFF ............................. 32 AUTOCOMMIT ON .............................. 32 C comment ............................................ 13 D DESC ................................................... 30 disconnect ............................................. 8 E ed 명령어 ...................................... 10, 38 exit ....................................................... 8 G glogin.sql ............................................ 18 H help .................................................... 13 history ........................................... 13, 62 host variable ........................................ 52 I iSQL 구성 ............................................. 18 iSQL 명령어............................................ 8 iSQL 설정 ............................................... 3 iSQL 화면 설정 ..................................... 51 iSQL 환경변수 ...................................... 12 L LOBOFFSET .................................... 10, 40 LOBSIZE ......................................... 10, 39 login.sql .............................................. 18 P PAGESIZE ............................................ 41 PREPARE SQL문 ................................... 54 Q quit ....................................................... 8 S SELECT 결과 포매팅 ............................. 39 set foreignkeys .................................... 11 set linesize ........................................... 10 set pagesize ......................................... 10 set term ............................................... 11 shell command .................................... 62 show all ............................................... 12 SQL문의 로드 ....................................... 35 SQL문의 저장 ....................................... 35 START ................................................. 33 SYSDBA........................................... 5, 22 T tab ...........................
-
- [Altibase 6.1.1] iSQL User's Manual_KOR ㅣ 2012-12-11
- ALTIBASE HDB Tools iSQL User’s Manual Release 6.1.1 (February 4, 2013) ----------------------------------------------------------- ALTIBASE Tools iSQL User's Manual Release 6.1.1 Copyright ⓒ 2001~2012 ALTIBASE Corp. All Rights Reserved.
-
미리보기
ALTIBASE HDB Tools iSQL User’s Manual Release 6.1.1 (February 4, 2013) ----------------------------------------------------------- ALTIBASE Tools iSQL User's Manual Release 6.1.1 Copyright ⓒ 2001~2012 ALTIBASE Corp. All Rights Reserved. 본 문서의 저작권은 ㈜알티베이스에 있습니다. 이 문서에 대하여 당사의 동의 없이 무단으로 복제 또는 전용할 수 없습니다. ㈜알티베이스 152-790 서울시 구로구 구로동 182-13 대륭포스트타워Ⅱ 10층 전화: 02-2082-1114 팩스: 02-2082-1099 고객서비스포털: http://support.altibase.com homepage: http://www.altibase.com ----------------------------------------------------------- 목차 I 목 차 서문 .......................................................................................................................... i 이 매뉴얼에 대하여 .......................................................................................................................... ii 1. iSQL 이용방법 ................................................................................................ 1 iSQL의 개요 ......................................................................................................................................... 2 iSQL 설정.............................................................................................................................................. 3 iSQL 커맨드 라인 옵션 .................................................................................................................. 5 iSQL 명령어 ......................................................................................................................................... 8 iSQL 관련 환경변수 ....................................................................................................................... 14 개인별 iSQL 환경 설정 ................................................................................................................ 17 2. iSQL 사용 예 ............................................................................................... 19 로그인 ................................................................................................................................................... 20 알티베이스의 구동 및 종료 ....................................................................................................... 22 접속 연결 및 해제 ......................................................................................................................... 24 데이터베이스와 객체 정보 조회 ............................................................................................. 27 트랜잭션 제어 .................................................................................................................................. 30 파일 관리 ............................................................................................................................................ 31 SELECT 결과 포매팅 ...................................................................................................................... 36 출력 옵션 제어 ................................................................................................................................ 41 iSQL 화면 설정 보기 .................................................................................................................... 48 호스트 변수 ....................................................................................................................................... 49 PREPARE SQL문 수행 .................................................................................................................... 51 프로시저 생성과 실행 및 삭제 ................................................................................................ 52 함수 생성과 실행 및 삭제 ......................................................................................................... 56 사용자 편의 기능............................................................................................................................ 58 내셔널 캐릭터 사용법 .................................................................................................................. 60 II iSQL User’s Manual 찾아보기 .............................................................................................................. 61 서문 i 서문 ii iSQL User’s Manual 이 매뉴얼에 대하여 이 매뉴얼은 데이터베이스에 접속해 데이터베이스 정보와 서버의 정보를 조회하고 제어할 수 있는 도구인 iSQL의 사용법에 대해 설명한다. 대상 사용자 이 매뉴얼은 다음과 같은 알티베이스 사용자를 대상으로 작성되었다. 데이터베이스 관리자 성능 관리자 데이터베이스 사용자 응용 프로그램 개발자 기술지원부 다음과 같은 배경 지식을 가지고 이 매뉴얼을 읽는 것이 좋다. 컴퓨터, 운영 체제 및 운영 체제 유틸리티 운용에 필요한 기본 지식 관계형 데이터베이스 사용 경험 또는 데이터베이스 개념에 대한 이해 컴퓨터 프로그래밍 경험 데이터베이스 서버 관리, 운영 체제 관리 또는 네트워크 관리 경험 소프트웨어 환경 이 매뉴얼은 데이터베이스 서버로 알티베이스 버전 5.3.3을 사용한다는 가정 하에 작성되었다. 이 매뉴얼의 구성 이 매뉴얼은 다음과 같이 구성되어 있다. 제 1장 iSQL 이용방법 이 장은 iSQL의 개요와 제공하는 명령어 및 사용방법에 대해 설명한다. 제 2장 iSQL 사용 예 서문 iii 이 장은 iSQL이 제공하는 각각의 명령어 대해 자세한 사용 예를 들어 설명한다. 문서화 규칙 이 절에서는 이 매뉴얼에서 사용하는 규칙에 대해 설명한다. 이 규칙을 이해하면 이 매뉴얼과 설명서 세트의 다른 매뉴얼에서 정보를 쉽게 찾을 수 있다. 여기서 설명하는 규칙은 다음과 같다. 구문 다이어그램 샘플 코드 규칙 구문 다이어그램 이 매뉴얼에서는 다음 구성 요소로 구축된 다이어그램을 사용하여, 명령문의 구문을 설명한다. 구성 요소 의미 예약어 명령문이 시작한다. 완전한 명령문이 아닌 구문 요 소는 화살표로 시작한다. 명령문이 다음 라인에 계속된다. 완전한 명령문이 아닌 구문 요소는 이 기호로 종료한다. 명령문이 이전 라인으로부터 계속된다. 완전한 명령 문이 아닌 구문 요소는 이 기호로 시작한다. ; 명령문이 종료한다. SELECT 필수 항목 NOT 선택적 항목 ADD DROP 선택사항이 있는 필수 항목. 한 항목만 제공해야 한 다. ASC DESC 선택사항이 있는 선택적 항목 iv iSQL User’s Manual , ASC DESC 선택적 항목. 여러 항목이 허용된다. 각 반복 앞부 분에 콤마가 와야 한다. 샘플 코드 규칙 코드 예제는 SQL, Stored Procedure, iSQL 또는 다른 명령 라인 구문들을 예를 들어 설명한다. 아래 테이블은 코드 예제에서 사용된 인쇄 규칙에 대해 설명한다. 규칙 의미 예제 [ ] 선택 항목을 표시 VARCHAR [(size)] [[FIXED |] VARIABLE] { } 필수 항목 표시. 반드시 하나 이 상을 선택해야 되는 표시 { ENABLE | DISABLE | COMPILE } | 선택 또는 필수 항목 표시의 인 자 구분 표시 { ENABLE | DISABLE | COMPILE } [ ENABLE | DISABLE | COMPILE ] . . . 그 이전 인자의 반복 표시 예제 코드들의 생략되는 것을 표 시 SQL> SELECT ename FROM employee; ENAME ----------------------- SWNO HJNO HSCHOI . . . 20 rows selected. 그 밖에 기 호 위에서 보여진 기호 이 외에 기 호들 EXEC :p1 := 1; acc NUMBER(11,2); 기울임 꼴 구문 요소에서 사용자가 지정해 야 하는 변수, 특수한 값을 제공 해야만 하는 위치 지정자 SELECT * FROM table_name; CONNECT userID/password; 소문자 사용자가 제공하는 프로그램의 요소들, 예를 들어 테이블 이름, 칼럼 이름, 파일 이름 등 SELECT ename FROM employee; 서문 v 대문자 시스템에서 제공하는 요소들 또 는 구문에 나타나는 키워드 DESC SYSTEM_.SYS_INDICES_; 관련 자료 자세한 정보를 위하여 다음 문서 목록을 참조하기 바란다. Installation Guide Getting Started Guide Administrator’s Manual Replication Manual SQL Reference Stored Procedures Manual Error Message Reference 온라인 매뉴얼 알티베이스 고객서비스포털(http://support.altibase.com)에서 국문 및 영문 매뉴얼(PDF, HTML)을 받을 수 있다. 알티베이스는 여러분의 의견을 환영합니다. 이 매뉴얼에 대한 여러분의 의견을 보내주시기 바랍니다. 사용자의 의견은 다음 버전의 매뉴얼을 작성하는데 많은 도움이 됩니다. 보내실 때에는 아래 내용과 함께 고객서비스포털(http://support.altibase.com/kr/)로 보내주시기 바랍니다. 사용 중인 매뉴얼의 이름과 버전 매뉴얼에 대한 의견 사용자의 성함, 주소, 전화번호 이 외에도 알티베이스 기술지원 설명서의 오류와 누락된 부분 및 기타 기술적인 문제들에 대해서 이 주소로 보내주시면 정성껏 처리하겠습니다. 또한, 기술적인 부분과 관련하여 즉각적인 도움이 필요한 경우에도 고객서비스포털을 통해 서비스를 요청하시기 바랍니다. 여러분의 의견에 항상 감사드립니다. iSQL 이용방법 1 1. iSQL 이용방법 2 iSQL User’s Manual iSQL의 개요 iSQL은 알티베이스 데이터베이스에 접속하여 SQL 문과 부가적인 여러 명령어를 통해 서버에 저장되어 있는 자료를 얻고, 수정하는 작업을 수행할 수 있는 사용자 도구이다. iSQL의 주요 기능 알티베이스의 구동 및 종료 기능 알티베이스 서버의 구동 및 종료 등의 데이터 베이스 관리를 하기 위해서 여러 개의 커맨드라인 명령어를 사용하는 대신에, iSQL 하나의 도구만을 사용하면 된다. 데이터베이스 접속 및 해제 기능 알티베이스 구동 이후 데이터베이스 접속 시 다양한 사용자명으로의 접속 및 해제가 가능하다. 데이터베이스 객체 정보 조회 기능 iSQL에서는 데이터베이스 객체에 대한 모든 정보를 SQL문으로 조회할 수 있으며, 주요 객체에 대해서는 간편한 조회 명령어를 지원한다. SQL문 수행을 통한 데이터베이스 관리 기능 iSQL을 사용해 모든 SQL문을 수행할 수 있도록 지원하므로 트랜잭션 제어, 데이터베이스 변경 등을 빠르고 간편하게 수행할 수 있다. 사용자 편의 기능 위의 기능을 쉽고 편리하게 수행할 수 있도록 파일 처리 기능, 에디터 기능, iSQL상에서의 쉘 명령어 수행 기능, HISTORY 기능 등을 지원한다. iSQL 이용방법 3 iSQL 설정 iSQL은 서버에 접속하기 위해서 다음과 같은 정보가 필요하다. ALTIBASE_HOME 서버 혹은 클라이언트가 설치된 경로 server_name 알티베이스 서버가 구동되어 있는 컴퓨터 서버의 이름(또는 IP 주소) port_no TCP 또는 IPC로 접속할 때 사용할 포트 번호 user_id 데이터베이스에 등록된 사용자 ID password 사용자 ID와 일치하는 암호 NLS_USE 데이터 검색 시, 사용자에게 보여주는 문자 집합 ALTIBASE_HOME은 환경 변수로 설정하도록 되어있으며, 나머지는 커맨드 라인 옵션을 통해서 설정할 수 있도록 되어 있다. (자세한 내용은 “iSQL 커맨드 라인 옵션”을 참고한다.) ALTIBASE_HOME은 iSQL을 사용하기 위해서 반드시 설정해야 하는 환경 변수이다. 윈도우의 경우, 서버가 설치될 때 자동으로 설정되는데 클라이언트의 경우에는 사용자가 직접 설정해야 한다. 설정되지 않았을 경우에는 올바르게 동작하지 않을 수 있으므로 실행 전에 올바르게 설정되어 있는지 확인할 것을 권한다. port_no와 NLS_USE는 환경 변수 또는 서버 설정 파일(altibase.properties)을 이용해서 설정할 수도 있다. 세 가지 방법으로 모두 설정되어 있을 경우 적용 우선 순위는 다음과 같다. 1. 커맨드 라인 옵션 2. 환경 변수(ALTIBASE_PORT_NO, ALTIBASE_NLS_USE) 3. 서버 설정 파일(altibase.properties) 그러므로 이미 설정된 값과 다른 옵션으로 연결하고자 할 경우, 커맨드 라인 옵션을 사용하면 서버 설정 파일이나 환경 변수를 변경하지 않아도 된다. 옵션이 설정되어 있지 않을 경우에는 iSQL이 처음 실행될 때 옵션 입력 프롬프트를 띄우고 사용자에게서 해당 값을 입력 받는다. 이 때 바르지 않은 형식이나 유효하지 않은 값을 입력할 경우, iSQL은 4 iSQL User’s Manual 올바르게 동작하지 않을 수도 있다. 특히 NLS_USE 옵션은 사용자가 설정하지 않았더라도 실행 시에 입력 프롬프트가 나타나지 않는다. 만약 사용자가 NLS_USE 옵션을 설정하지 않았다면 기본값인 US7ASCII를 이용해 접속을 시도한다. 이 때 데이터베이스의 캐릭터 셋이 US7ASCII이 아닐 경우에는 바르게 실행되지 않거나 사용자 데이터가 일부 깨질 수 있으므로 반드시 NLS_USE를 사용 환경에 맞는 값으로 설정해야 한다. 원활한 iSQL 사용을 위해 다음 환경 변수를 설정할 것을 권장한다. ALTIBASE_HOME : 서버 혹은 클라이언트가 설치된 경로 ALTIBASE_PORT_NO : 서버에 접속할 때 사용할 포트 번호 ALTIBASE_NLS_USE : 데이터 검색 시, 사용자에게 보여주는 문자 집합 PATH : 실행 파일이 있는 경로인 $ALTIBASE_HOME/bin 추가 iSQL 이용방법 5 iSQL 커맨드 라인 옵션 iSQL을 실행하기 위해서는 반드시 알티베이스 서버를 먼저 구동 시켜야 한다. 옵션은 대문자 또는 소문자 모두 가능하다. isql [-H] [-S server_name] [-U user_id] [-P password] [-PORT port_no] [-UNIXDOMAIN-FILEPATH filepath] [-IPC-FILEPATH filepath] [-SILENT] [-F infile_name] [-O outfile_name] [-NLS_USE] [-NLS_NCHAR_LITERAL_REPLACE 0|1] [-prefer_ipv6] -S server_name 알티베이스 서버가 구동되어 있는 컴퓨터 서버의 이름(또는 IP 주소)을 명시한다. IPC로 접속할 때 이 옵션을 명시하면, 무시하고 에러를 반환하지 않는다. IPv4 주소 또는 IPv6 주소를 사용할 수 있다. IPv6 주소는 “[“과 “]”로 에워싸여야 한다. 예를 들어, localhost 를 명시하고자 할 때, 가능한 값은 다음과 같다. localhost (호스트 이름), 127.0.0.1 (IPv4주소), [::1] (IPv6주소) -U user_id 데이터베이스에 등록된 사용자 ID를 명시한다. -P password 사용자 ID와 일치하는 암호를 명시한다. -PORT port_no TCP 또는 IPC로 접속할 때 해당 포트 번호를 명시한다. 단 유닉스 환경에서 IPC로 접속시 생략이 가능한데, 명시하면, 무시하고 에러를 반환하지 않는다. TCP로 접속하려면 먼저 클라이언트에서 환경 변수 ‘ISQL_CONNECTION=TCP’를 설정하고, 옵션에 PORT_NO를 입력한다. 윈도우 환경에서 IPC로 접속하려면, 환경 변수 ‘ISQL_CONNECTION=IPC’를 설정하고 다음 방법 중의 하나를 사용해서 포트 번호를 설정한다. - -PORT 옵션 - ALTIBASE_IPC_PORT_NO 환경 변수 - IPC_PORT_NO 프로퍼티 ISQL_CONNECTION 환경 변수의 값이 IPC가 6 iSQL User’s Manual 아니고 -PORT 옵션을 생략한다면, ALTIBASE_PORT_NO와 PORT_NO 프로퍼티를 차례로 참조하고 모두 설정되어 있지 않다면, 포트 번호 입력 프롬프트가 출력된다. -UNIXDOMAIN-FILEPATH filepath 유닉스 환경에서 서버와 클라이언트가 유닉스 도메인 소켓으로 접속할 때 (ISQL_CONNECTION=UNIX), ALTIBASE_HOME이 서로 다르다면 유닉스 도메인의 소켓 경로가 다르게 되어 접속이 불가능하다. 이 때 서버와 클라이언트가 같은 파일 (e.g. ALTIBASE_HOME/trc/cm-unix)을 사용하도록 하면, 유닉스 도메인 통신이 가능해진다. -IPC-FILEPATH filepath 유닉스 환경에서 서버와 클라이언트가 IPC로 접속 (ISQL_CONNECTION=IPC)할 때, ALTIBASE_HOME이 서로 다르다면 유닉스 도메인의 소켓 경로가 다르게 되어 접속이 불가능하다. 이 때 ALTIBASE_HOME/trc/cm- ipc 파일을 이용하면, 유닉스 도메인 통신이 가능해져 공유 메모리의 정보를 가져올 수 있다. 그러나 이 옵션은 환경변수 ALTIBASE_IPC_FILEPATH를 설정하였다면, 생략해도 된다. -F infile_name iSQL 실행 후 바로 실행할 스크립트 파일을 명시한다. -O outfile_name iSQL 실행 후 실행한 명령들에 대한 결과들을 저장할 파일을 명시한다. 이 파일은 현재 디렉터리에 생성된다. 파일이 기존에 존재할 경우, 기존 내용 위에 겹쳐 쓴다. -H iSQL의 실행 방법을 보여준다. -SILENT silent 모드를 켜는 옵션이다. silent 모드를 켜면 Copyright 등의 부가적인 설명들을 보여주지 않는다. -NLS_USE 데이터 검색 시, 사용자에게 보여주는 문자 집합(Character Set)이다. iSQL을 실행하는 iSQL 이용방법 7 터미널의 encoding을 명시하여 준다. US7ASCII KO16KSC5601 MS949 BIG5 GB231280 UTF8 SHIFTJIS EUCJP 생략 시 환경변수 ALTIBASE_NLS_USE, altibase.properties를 차례로 참조하며, 설정되지 않았을 경우에는 기본 문자 집합 (US7ASCII)을 사용한다. -NLS_NCHAR_LITERAL_REPLACE 0 : “N” 문자가 있는지 검사하지 않고 쿼리 문 전체를 데이터베이스 문자 셋으로 변환한다. 1 : “N” 문자가 붙어있는 NCHAR 리터럴은 데이터베이스 문자 셋으로 변환하지 않는다. -prefer_ipv6 -S 옵션으로 호스트 이름을 입력했을 때, 접속할 IP 주소의 버전을 결정하는 옵션이다. 이 옵션을 명시하면, 호스트 이름을 IPv6 주소로 바꾸어 접속한다. 이 옵션을 명시하지 않으면, isql은 IPv4 주소로 접속한다. 선호하는 버전의 IP 주소로의 접속이 실패하면, 다른 IP 버전 주소로 접속을 다시 시도한다. 예를 들어, -S 옵션에 “localhost”를 입력하고 이 옵션을 명시하면, isql 은 처음에 IPv6 주소인 [::1]로 접속하고, 이 접속이 실패하면 IPv4 주소인 127.0.0.1로 접속을 다시 시도한다. 위의 커맨드 라인 중 -S, -U, -P 옵션이 빠져 있는 경우에는 입력 프롬프트가 출력되어 사용자에게 그 옵션값을 받는다. 8 iSQL User’s Manual iSQL 명령어 iSQL을 실행 시키면 iSQL 명령어 실행을 위한 프롬프트가 나오고, 이곳에 iSQL 명령어들을 입력하면 그 결과를 보여주는 형태로 프로그램이 동작한다. 아래의 표에 iSQL 각각의 명령에 대해 설명하였다. 분류 종류 명령어 설명 iSQL 구동 및 종료 구동 $ isql [option] 쉘 상에서 이 명령어를 수행하면 iSQL이 구동된다. 사용 가능한 옵션에 대해서는 iSQL 커맨드 라인 옵션 절의 내용을 참 조한다. 프롬프트 iSQL> iSQL 프롬프트로 명령어 입력 후 ENTER 키를 입력한다. 종료 EXIT; QUIT; iSQL을 종료한다. 알티베이 스의 구동 및 종료 알티베이스 구동 STARTUP PRE-PROCESS, PROCESS, CONTROL, META, SERVICE 중 하나의 옵션을 이용 하여 알티베이스의 다단계 구동을 수행 한다. 알티베이스 종료 SHUTDOWN NORMAL, IMMEDIATE, ABORT 중 하 나의 옵션을 사용하여 알티베이스를 종 료한다. 데이터베 이스 접속 및 해제 다른 사용 자로 서버 에 접속 CONNECT [logon] [nls] [AS sysdba]; logon: user1/pass1 nls: NLS=character_set iSQL에서 데이터베이스 접속 후 다른 사 용자로 접속하기 위한 명령어로 패스워 드 pass1을 가진 user1이라는 사용자로 접속한다. 접속이 성공하면 이전 세션과 관련된 정보는 지워진다. AS 절은 SYS 사용자가 sysdba 관리자 모드로 서버에 접속하는 것을 허용한다. sysdba로 접속하는 것은 한 사용자만 허 용된다. nls 옵션은 문자 집합을 설정한다. 문자 집합에 대한 자세한 설명은 위의 절 iSQL 커맨드 라인 옵션: -NLS_USE 옵션 을 참조하기 바란다. 접속해제 DISCONNECT; 현재 세션을 종료하고 서버와의 연결을 끊는다. iSQL 이용방법 9 분류 종류 명령어 설명 데이터베 이스 객체 정보 조회 성능 뷰 목 록 보기 SELECT * FROM V$TAB; 시스템이 제공하는 모든 성능 뷰 목록을 보여준다. 이 명령어는 iSQL에서만 사용 가능 하다. 테이블 목록 보기 SELECT * FROM TAB; 현재 생성된 테이블의 목록을 보여준다. 이 명령어는 iSQL에서만 사용가능 하다. 테이블 구조 보기 DESC samp; samp 테이블의 구조를 보여준다. 시퀀스 정보 보기 SELECT * FROM V$SEQ; SYS 계정으로 서버에 접속한 경우 모든 시퀀스 들의 정보를 보여준다. 일반 사용자로 서버에 접속한 경우는 그 사용자가 생성한 시퀀스들에 대한 정보 만 보여준다. 이 명령어는 iSQL에서만 사용가능 하다. 트랜잭션 제어 트랜잭션 모드 설정 AUTOCOMMIT ON; AUTOCOMMIT OFF; 트랜잭션 커밋을 자동으로 할 것인지를 결정한다. 기본값: ON 기타 SET 기능 SET PLANCOMMIT ON; SET PLANCOMMIT OFF; AUTOCOMMIT OFF 모드에서 EXPLAIN PLAN이 ON (또는 ONLY) 조건일 때, DESC, SELECT * FROM TAB; 또는 SELECT * FROM seq_name; 등과 같은 명령어를 수행했을 때 자동으로 commit 할지를 결정한다. 기본값: OFF 파일 관리 파일로 자 료 출력 SPOOL filename; 화면에 보여지는 결과를 filename에 기 록하기 시작한다. SPOOL OFF; 화면에 보여지는 결과를 filename에 기 록하던 것을 중지한다. sql script 의 실행 START file_name; script 파일을 읽어, 파일 내의 SQL문들 을 순차적으로 수행한다. @ file_name; iSQL 프롬프트 상에서 수행 시 start와 동일한 기능을 갖는다. @@ file_name; 스크립트 파일 안에서 사용될 때 호출을 한 스크립트 파일이 위치하는 디렉터리 에서 파일을 찾아서 수행한다. 10 iSQL User’s Manual 분류 종류 명령어 설명 SQL문 파 일 저장 SAVE abc.sql; 현재 iSQL 버퍼에 있는 명령어 중 가장 마지막 명령어가 파일로 저장된다. SQL문의 load LOAD abc.sql; 파일에 저장되어 있는 명령어 중 가장 첫 번째 명령어가 명령어 버퍼의 마지막 으로 로드된다. DML문을 파일로 저 장 SET QUERYLOGGING ON; SET QUERYLOGGING OFF: INSERT, UPDATE, DELTE, MOVE 등의 DML문 실행 시 이를 $ALTIBASE_HOME/trc/isql_query.log 에 기록한다. 질의문 편 집 ED 임시 파일을 생성하고 편집 ED filename[.sql] 기존 파일 또는 새로운 파일을 편집 2ED 또는 2 ED 히스토리 목록에 있는 번호가 2인 질의 문을 편집한다. 출력 옵션 제어 Select 결 과의 칼럼 포맷 팅 SET LINESIZE 100; select 결과 출력 시 디스플레이 되는 한 라인의 사이즈를 설정한다. 10 에서 32767 사이의 값이어야 한다. 기본값: 80 Select 결 과의 Clob 칼럼 포맷 팅 SET LOBSIZE 10; CLOB 칼럼을 출력 시 디스플레이 되는 데이터의 길이를 설정한다. 기본값: 80 SET LOBOFFSET 3; CLOB 칼럼을 출력 시 디스플레이 되는 데이터의 오프셋을 설정한다. 기본값: 0 Select 결 과 건수 출 력 SET FEED[BACK] ON; SET FEED[BACK] OFF; SET FEED[BACK] n; 쿼리 실행결과 건수의 출력여부를 설정 한다. select 결 과의 row 포매 팅 SET PAGESIZE 10; select 결과 레코드들을 몇 개 단위로 출 력할지를 결정하는 명령어로 `0`으로 설 정할 경우 결과 레코드 전체를 한꺼번에 출력한다. 기본값: 0 select 결 과의 헤더 SET HEADING ON; select 결과 출력 시 헤더 출력 유무 iSQL 이용방법 11 분류 종류 명령어 설명 유무 SET HEADING OFF; 기본값: ON select 결 과 칼럼의 출력 사이 즈 조절 SET COLSIZE N; CHAR, VARCHAR 타입 칼럼의 select 결과 출력 시 출력 값 사이즈 설정 기능 SQL문 실 행시간 SET TIMING ON; SET TIMING OFF; SQL 명령 실행에 걸린 시간 출력유무 기본값: OFF SQL문 실 행시간 출 력 단위 설 정 SET TIMESCALE SEC; SET TIMESCALE MILSEC; SET TIMESCALE MICSEC; SET TIMESCALE NANSEC; SQL문의 쿼리 수행 시간 단위를 초, 밀 리초, 마이크로초, 나노초 등으로 설정한 다. foreign key 정보 출력의 유 무 SET FOREIGNKEYS ON; SET FOREIGNKEYS OFF; 테이블 구조(DESC)를 볼 때 외래 키 정 보 포함 출력 여부 설정. 기본값: OFF 스크립트 실행 결과 의 출력 유 무 SET TERM ON; SET TERM OFF; 스크립트 파일 실행의 결과를 화면상에 보여줄지를 결정한다. 기본값: ON 실행 계획 트리 출력 ALTER SESSION EXPLAIN PLAN = ON; ALTER SESSION EXPLAIN PLAN = ONLY; ALTER SESSION EXPLAIN PLAN = OFF; SELECT문에 대한 실행 계획의 출력 여 부를 설정한다. 기본값: OFF SELECT 결 과 출력 방 SET VERTICAL ON; SET VERTICAL OFF; 레코드를 조회할 때 이 값을 ON으로 설 정하면, SELECT의 결과가 세로로 보여진 12 iSQL User’s Manual 분류 종류 명령어 설명 향 다. 기본값: OFF iSQL 화면 설정 값 보기 SHOW LINESIZE 현재의 LINESIZE 값을 보여준다. SHOW COLSIZE 현재의 COLSIZE 값을 보여준다. SHOW LOBOFFSET 현재의 LOBOFFSET 값을 보여준다. SHOW LOBSIZE 현재의 LOBSIZE 값을 보여준다. SHOW PAGESIZE 현재의 PAGESIZE 값을 보여준다. SHOW PLANCOMMIT AUTOCOMMIT OFF 모드에서 명령어를 수행할 때 자동으로 커밋되는 여부를 보 여준다. SHOW QUERYLOGGING DML 문이 실행될 때 $ALTIBASE_HOME/trc/isql_query.log 에 기록되는지 여부를 보여준다. SHOW FEEDBACK 현재 설정된 FEEDBACK 값을 보여준다. SHOW HEADING 현재의 HEADING 설정 여부를 보여준 다. SHOW TERM 현재 TERM 설정 여부를 보여준다. SHOW TIMING 현재의 TIMING 설정 여부를 보여준다. SHOW TIMESCLAE 현재의 SQL문의 쿼리 수행 시간 단위가 무엇으로 설정되었는지를 보여준다. SHOW USER 현재 사용자를 보여준다. SHOW FOREIGNKEYS 현재의 외래 키 설정 여부를 보여준다. SHOW VERTICAL 현재의 SELECT 결과가 세로로 출력되는 지 여부를 보여준다. SHOW ALL 현재 세션의 화면 설정 값을 보여준다. 변수 및 Prepared SQL문 변수 선언 VAR p1 INTEGER; INTEGER 타입의 변수 p1을 선언한다. VARIABLE p2 CHAR(10); CHAR 타입의 변수 p2를 선언한다. iSQL 이용방법 13 분류 종류 명령어 설명 변수에 값 할당 EXECUTE :p1 := 100; 변수 p1에 100을 할당한다. EXEC :p2 := 'abc'; 변수 p2에 ‘abc’를 할당한다. 변수 보기 PRINT VAR[IABLE]; 현재 선언된 변수들을 보여준다. PRINT p1; 변수 p1의 타입과 값을 보여준다. Prepared SQL문 수 행 PREPARE SQL문; Prepared SQL문으로 질의 최적화 과정 과 실행 과정을 나누어 수행하게 한다. iSQL에서의 SQL문 수행은 기본적으로 최적화와 실행을 한번에 수행하는 Direct Execution 방법이다. iSQL 상에서 두 가지 수행 방법에 대한 결과에는 차이가 없으며 Prepared SQL 문의 경우 변수를 사용해 값을 바인딩 하여 SQL문 수행이 가능하다. 사용자 편 의 기능 히스토리 목록 보기 HISTORY; H; 현재 iSQL buffer에 저장되어 있는 명령 어들의 목록을 보여준다. 반복 실행 / 현재 iSQL buffer의 명령어를 반복하여 실행한다. 가장 최근에 수행한 명령어가 다시 실행된다. 2/ HISTORY 명령에 의해 나타난 목록의 번호가 2인 명령어가 실행된다. 쉘 명령 실 행 ! shell command 느낌표 다음에 쉘 명령을 입력하면 iSQL 에서 바로 쉘 명령이 실행된다. 주석 /* comment */ -- comment 여러 라인 주석 한 라인 주석 도움말 HELP; HELP INDEX; HELP EXIT; 도움말 사용법 명령어 리스트 출력 EXIT 명령어에 대한 설명 14 iSQL User’s Manual iSQL 관련 환경변수 ALTIBASE_HOME 패키지가 설지된 디렉터리를 설정한다. MS 윈도우의 경우, 서버 설치 시에 자동으로 설정되지만, 클라이언트 설치 시에는 서버를 위한 환경 변수와 충돌이 있을 수 있으므로 자동으로 설정되지 않는다. 클라이언트 설치 시에는 사용자가 직접 설정해야 한다. ISQL 사용을 위해 반드시 설정해야 하는 환경변수이다. <예제> Windows (Server): ‘set ALTIBASE_HOME=C:/Program Files/Altibase/Altibase5_Server/altibase_home’, Windows (Client): ‘set ALTIBASE_HOME=C:/Program Files/Altibase/Altibase5_Client/altibase_home_client’) ALTIBASE_PORT_NO 접속할 서버의 포트 번호이다. -PORT 옵션 또는 altibase.properties 파일 내의 프로퍼티를 통해서 지정할 수도 있다. 포트 번호 설정의 우선 순위는 -PORT 옵션, 환경변수 ALTIBASE_PORT_NO, altibase.properties 파일 내의 프로퍼티 순이며 아무것도 설정되지 않았을 경우에는 포트 번호 입력 프롬프트가 출력된다. ALTIBASE_NLS_USE 데이터 검색 시 사용자에게 보여주기 위해 사용되는 문자 집합이다. US7ASCII KO16KSC5601 MS949 BIG5 GB231280 UTF8 iSQL 이용방법 15 SHIFTJIS EUCJP -NLS_USE 옵션 또는 altibase.properties파일 내의 프로퍼티를 통해서 지정할 수도 있다. NLS_USE 설정의 우선 순위는 -NLS_USE 옵션, 환경 변수 ALTIBASE_NLS_USE, altibase.properties 파일 내의 프로퍼티 순이며 설정되지 않았을 경우에는 기본 문자 집합(US7ASCII)을 사용한다. ALTIBASE_NLS_NCHAR_LITERAL_REPLACE 기본적으로 클라이언트는 쿼리 문 전체를 데이터베이스 문자 셋으로 변환하여 전송한다. 그러나, 특정 리터럴에 대해 이런 동작을 막으려면, 이 환경 변수의 값을 1로 설정하고 그 리터럴 앞에 “N” 문자를 덧붙이면 된다. 즉, NCHAR 리터럴로 만드는 것이다. 이 환경 변수의 값이 1일 때, 클라이언트는 쿼리 문 내의 모든 리터럴 앞에 “N” 문자가 있는지 찾는다. 만약 찾게 되면 클라이언트는 그 리터럴을 데이터베이스 문자 셋으로 변환하지 않고 그대로 전송하며 서버가 직접 내셔널 문자 셋으로 변환한다. 이것은 데이터베이스 문자 셋과는 다른 인코딩이 필요한 NCHAR 타입 데이터를 사용하고자 할 때 유용하다. 0: “N” 문자가 있는지 검사하지 않고 쿼리 문 전체를 데이터베이스 문자 셋으로 변환한다. 1: “N” 문자가 붙어있는 NCHAR 리터럴은 데이터베이스 문자 셋으로 변환하지 않는다. 이 값을 1로 설정하는 것은 클라이언트의 비용이 크게 발생하므로, 사용시 주의가 필요하다. ISQL_CONNECTION 알티베이스를 클라이언트-서버 구조로 운영할 때, 사용자는 응용 시스템의 구성에 적합한 클라이언트-서버 프로토콜을 선택하여 환경 변수를 설정할 수 있다. 알티베이스는 TCP/IP, IPC와 UNIX DOMAIN 소켓 프로토콜을 제공한다. 알티베이스 서버와 통신하기 위한 기본값은 TCP/IP 프로토콜이다. 단, IPC 프로토콜을 이용할 경우엔 알티베이스 프로퍼티들 중에서 16 iSQL User’s Manual IPC 채널과 관련된 프로퍼티들의 값(IPC_CHANNEL_COUNT)도 함께 고려해야 한다. 예) IPC 사용시 환경 변수 설정 CSH: setenv ISQL_CONNECTION IPC SH: ISQL_CONNECTION=IPC; export ISQL_CONNECTION ISQL_BUFFER_SIZE 쿼리를 저장할 버퍼의 크기를 환경변수를 이용하여 지정할 수 있다. 예) CSH: setenv ISQL_BUFFER_SIZE 128000 SH: ISQL_BUFFER_SIZE = 128000; export ISQL_BUFFER_SIZE ALTIBASE_DATE_FORMAT Date 데이터 타입인 data를 select 시 기본 날짜 형식인 YYYY/MM/DD HH:MI:SS을 환경변수 ALTIBASE_DATE_FORMAT을 설정하여 새로운 날짜 형식으로 나타낼 수 있다. 예) Born, Korn, 또는 Bash Shell의 경우 export ALTIBASE_DATE_FORMAT=’DD-MON-YYYY’ ISQL_EDITOR 기본 편집기 (윈도우: 메모장, 그 외: /bin/vi )를 바꾸기 위한 환경변수를 설정할 수 있다. 예) CSH: setenv ISQL_EDITOR /usr/bin/ed SH: ISQL_EDITOR=/usr/bin/ed; export ISQL_EDITOR ALTIBASE_IPC_FILEPATH 유닉스 환경에서 서버와 클라이언트가 IPC로 접속할 때 ALTIBASE_HOME이 다른 경우, 유닉스 도메인의 소켓 경로가 일치하지 않아 접속할 수 없다. 이 때 클라이언트 측의 ALTIBASE_IPC_FILEPATH 환경 변수 또는 -IPC-FILEPATH iSQL 옵션을 서버의 $ALTIBASE_HOME/trc/cm-ipc파일로 설정하여 서버와 클라이언트가 같은 소켓 파일을 사용하도록 하면, IPC 접속이 가능하다. iSQL 이용방법 17 개인별 iSQL 환경 설정 iSQL 사용자들은 특별한 방법으로 iSQL 환경을 설정하고 각 세션에서 그러한 설정을 다시 사용할 수 있다. 예를 들어, OS 파일을 통하여 질의 결과마다 현재 시간을 출력할 수 있도록 사용자가 원하는 출력 서식 형태로 만들 수 있다. 이러한 파일은 다음과 같이 두 가지로 나눌 수 있다. glogin.sql iSQL 시작 시의 초기화 작업을 위하여 DB 관리자에 의해 생성된 전역 스크립트 파일인 glogin.sql의 사용을 지원한다. iSQL은 임의의 사용자가 iSQL을 기동할 때 마다 이 스크립트를 실행한다. 전역 파일은 DB 관리자가 모든 사용자들에게 특별한 사이트에서 iSQL 환경을 설정할 수 있도록 한다. 전역 스크립트 파일은 $ALTIBASE_HOME/conf 밑에 위치한다. login.sql iSQL은 또한 glogin.sql 후에 실행되는 login.sql 파일도 지원한다. 만약, glogin.sql 파일과 login.sql 파일이 모두 존재하는 경우 iSQL 구동 시 glogin.sql이 실행된 후 login.sql이 실행되므로 login.sql에 있는 명령어들로 우선수행 (override) 된다. 하나의 유닉스 계정을 여러 명이 사용할 경우에는 glogin.sql 파일을 개인적인 용도로 수정하기가 불가능할 수도 있다. 이런 경우 일반 사용자는 SQL 명령어들, 저장 프로시저, 또는 iSQL 명령어들을 각자의 개인용 작업 디렉터리 내에 login.sql 파일에 첨가할 수 있다. 사용자가 iSQL을 구동할 때, iSQL은 자동적으로 현재 디렉터리에서 login.sql 파일을 찾고, 그 안에 명령어들을 수행한다. login.sql 파일은 iSQL 초기 설정이나 각각의 세션에 대한 동작을 조정할 수 없다. LOGIN 파일 변경 사용자는 임의의 다른 스크립트들처럼 LOGIN 파일을 변경할 수 있다. 다음은 임의의 사용자(user1)가 autocommit mode를 off로 18 iSQL User’s Manual 변경하고 SQL 문들을 실행하기 위하여 LOGIN 파일을 작성한 예이다. $ vi glogin.sql AUTOCOMMIT ON SET HEADING OFF SELECT sysdate FROM dual; $ vi login.sql AUTOCOMMIT OFF; SET HEADING ON DROP TABLE savept; CREATE TABLE savept(num INTEGER); INSERT INTO savept VALUES(1); SAVEPOINT sp1; INSERT INTO savept VALUES(2); SELECT * FROM savept; ROLLBACK TO SAVEPOINT sp1; SELECT * FROM savept; COMMIT; $ isql ------------------------------------------------------- Altibase Client Query utility. Release Version 6.1.1.1 Copyright 2000, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : user1 Write Password : ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 Set autocommit on success. -> 먼저 glogin.sql을 실행 28-DEC-2004 -> heading off 1 row selected. Set autocommit off success. -> glogin.sql이 실행된 후 사용자의 현재 작업 디렉터리에서 login.sql을 실행 Drop success. Create success. 1 row inserted. Savepoint success. -> autocommit mode off 에서만 실행 가능 1 row inserted. SAVEPT.NUM -> heading on -------------- 1 2 2 rows selected. Rollback success. SAVEPT.NUM -------------- 1 1 row selected. Commit success. iSQL 사용 예 19 2. iSQL 사용 예 이 장은 iSQL을 이용하여 데이터베이스를 다루는 몇 가지 예를 설명한다. 20 iSQL User’s Manual 로그인 iSQL 유틸리티를 사용하기 위해서는 먼저 로그인 과정을 거쳐야 하는데, 커맨드 라인 상에서 직접 연결 정보를 입력하는 방법과 입력 프롬프트 상에서 입력하는 방법이 있다. isql -U userID -P password [-SYSDBA] 또는 isql [-SYSDBA] 서버와 연결하기 위한 부가 정보로는 서버 이름(-S), 사용자 ID(-U), 패스워드(-P)가 있다. 사용자 ID와 패스워드는 대소문자를 구별하지 않는다. SYS 사용자가 관리자 모드로 iSQL 유틸리티를 사용하기 위해서는 - SYSDBA 옵션을 사용한다. SYSDBA 옵션으로 원격에서도 접속이 가능하다. 제한 사항 SYSDBA 모드로 접속하는 것은 한 명의 사용자만 허용된다. 2명 이상의 사용자가 동시에 SYSDBA 모드로 접속할 수 없다. 원격에서 SYSDBA 모드로 접속할 수 있지만, DBMS를 구동할 수는 없다. 시스템 권한에 대한 자세한 정보는 SQL Reference 을 참조하기 바란다. iSQL 사용 중 발생하는 에러에 대한 자세한 정보는 Error Message Reference를 참조하기 바란다. $ isql -U sys -P manager [-SYSDBA] 또는 $ isql [-sysdba] ------------------------------------------------------- Altibase Client Query utility. Release Version 6.1.1.1 Copyright 2000, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : sys Write Password : manager -> 화면에는 암호가 나타나지 않는다. ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL 사용 예 21 iSQL(sysdba)> -> iSQL이 서버와 연결된 상태이며, 여기에서 SQL, iSQL, PSM 명령등을 입력하여 실행할 수 있다. 22 iSQL User’s Manual 알티베이스의 구동 및 종료 알티베이스의 구동 및 종료는 iSQL을 사용해 수행한다. 알티베이스 구동 알티베이스를 구동시키기 위해서는 데이터베이스 생성 시와 마찬가지로 우선 isql을 -sysdba 옵션으로 띄워야 한다. * 알티베이스의 startup 명령어는 알티베이스(isql 포함)를 설치한 유닉스 계정으로만 수행이 가능하다. 다음은 iSQL를 이용한 알티베이스 구동 예제이며 알티베이스 구동에 대한 자세한 설명은 Administrator’s Manual 제2장 알티베이스 구동 및 종료의 내용을 참조한다. $ isql -s 127.0.0.1 -u sys -p manager -sysdba ------------------------------------------------------- Altibase Client Query utility. Release Version 6.1.1.1 Copyright 2000, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 [Connected to idle instance] iSQL(sysdba)> startup service Connecting to the DB server... Connected. TRANSITION TO PHASE : PROCESS TRANSITION TO PHASE : CONTROL TRANSITION TO PHASE : META [SM] Recovery Phase - 1 : Preparing Database : Dynamic Memory Version => Parallel Loading [SM] Recovery Phase - 2 : Loading Database [SM] Recovery Phase - 3 : Skipping Recovery Threads... Refining Disk Table [SM] Refine Memory Table : ................................................... ..... [SUCCESS] [SM] Rebuilding Indices [Total Count:100] .................................. [SUCCESS] TRANSITION TO PHASE : SERVICE [CM] Listener started : TCP on port 20300 [CM] Listener started : UNIX [RP] Initialization : [PASS] --- STARTUP Process SUCCESS --- Command execute success. iSQL 사용 예 23 알티베이스 종료 현재 구동중인 알티베이스 서버를 종료하려면 SHUTDOWN 명령어를 사용한다. 다음은 iSQL를 이용한 알티베이스 종료 예제이며 알티베이스 종료에 대한 자세한 설명은 Administrator’s Manual 제2장 알티베이스 구동 및 종료의 내용을 참조한다. iSQL(sysdba)> shutdown normal Ok..Shutdown Proceeding.... TRANSITION TO PHASE : Shutdown Altibase [RP] Finalization : PASS shutdown normal success. 24 iSQL User’s Manual 접속 연결 및 해제 접속 연결 명시된 사용자 ID로 알티베이스에 연결한다. 첫 연결 실패 시 CONNECT 명령어는 사용자 ID나 패스워드를 다시 프롬프트(prompt) 하지 않는다. CONNECT [logon] [nls] [AS SYSDBA]; logon: userID[/password] nls: NLS=character_set userID/password 알티베이스에 연결하고자 하는 사용자의 id와 패스워드 NLS=character_set 문자집합 iSQL> CONNECT sys/manager NLS=US7ASCII Connect success. AS SYSDBA AS 절은 SYS 사용자가 sysdba 관리자 모드로 서버에 접속하는 것을 허용한다. CONNECT가 성공하면 현재의 세션을 종료하고 명시된 사용자 ID와 패스워드, altibase.properties 내의 프로퍼티 정보를 사용해서 서버에 접속한다. 따라서 이전의 세션 정보는 없어진다. 예를 들어 altibase.properties의 AUTOCOMMIT 모드가 TRUE였고, iSQL에서 AUTOCOMMIT 모드를 FALSE로 변경하여 쿼리를 수행하다가 이 CONNECT문을 수행하였다면 AUTOCOMMIT 모드는 altibase.properties 의 AUTOCOMMIT 프로퍼티에 의하여 TRUE로 변경된다. CONNECT가 실패한다면 이전의 세션은 종료되고 서버와의 연결이 끊어진 상태가 된다. 즉, 이후에 수행되는 SQL문의 결과는 모두 “Not connected.” 이다. 만약, 다시 서버와 연결을 시도할 때는 CONNECT userID/password [AS SYSDBA];를 수행한다. $ isql ------------------------------------------------------- Altibase Client Query utility. iSQL 사용 예 25 Release Version 6.1.1.1 Copyright 2000, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : SYS Write Password : ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL> SHOW USER; User : SYS iSQL> CREATE USER altiadmin IDENTIFIED BY altiadmin1234; Create success. iSQL> CONNECT altiadmin/altiadmin1234; Connect success. iSQL> SHOW USER; User : ALTIADMIN iSQL> CREATE TABLE altitbl(i1 INTEGER, i2 CHAR(5)); Create success. iSQL> SELECT * FROM tab; TABLE NAME TYPE --------------------------------------------- ALTITBL TABLE . . . 33 row selected. iSQL> CONNECT sys/manager; Connect success. iSQL> SHOW USER; User : SYS iSQL> CREATE TABLE systbl(i1 INTEGER, i2 CHAR(5)); Create success. iSQL> SELECT * FROM tab; USER NAME TABLE NAME TYPE ----------------------------------------------- SYSTEM_ SYS_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINTS_ SYSTEM TABLE . . . ALTIADMIN ALTITBL TABLE. SYS SYSTBL TABLE . . . 93 rows selected. 접속 해제 현재 세션을 종료하고 서버와의 연결을 끊는다. 이후에 수행되는 SQL문의 결과는 모두 “Not connected.”이며, 다시 서버와 연결을 시도할 때는 CONNECT userID/password;를 수행한다. DISCONNECT; iSQL> INSERT INTO systbl VALUES(1, 'A1'); 1 row inserted. iSQL> INSERT INTO systbl VALUES(2, 'A2'); 1 row inserted. iSQL> SELECT * FROM systbl; SYSTBL.I1 SYSTBL.I2 -------------------------- 26 iSQL User’s Manual 1 A1 2 A2 2 rows selected. iSQL> DISCONNECT; Disconnect success. iSQL> INSERT INTO systbl VALUES(3, 'A3'); [ERR-91020 : No Connection State] iSQL> SELECT * FROM systbl; [ERR-91020 : No Connection State] iSQL> CONNECT sys/manager; Connect success. iSQL 사용 예 27 데이터베이스와 객체 정보 조회 성능 뷰 조회 성능 뷰는 서버의 상태 및 데이터베이스 정보를 조회할 수 있는 데이터 딕셔너리 테이블의 일종으로 알티베이스가 제공하는 성능 뷰의 목록을 확인하기 위해서는 다음 명령어를 사용한다. iSQL> SELECT * FROM V$TAB; TABLE NAME TYPE --------------------------------------------- V$ALLCOLUMN PERFORMANCE VIEW V$ARCHIVE PERFORMANCE VIEW V$BUFFPOOL_STAT PERFORMANCE VIEW V$DATABASE PERFORMANCE VIEW V$DATAFILES PERFORMANCE VIEW V$DISKGC PERFORMANCE VIEW V$DISKTBL_INFO PERFORMANCE VIEW V$FLUSHINFO PERFORMANCE VIEW . 알티베이스가 제공하는 전체 성능 뷰의 목록과 칼럼의 의미 등은 General Reference 의 데이터 딕셔너리 설명을 참조한다. 각 성능 뷰의 데이터는 일반 테이블 조회와 동일한 SELECT문을 사용하여 조회할 수 있으며 조인 등을 사용해 다양한 형태로 결과를 출력할 수 있다. 테이블 목록 보기 데이터베이스에 존재하는 모든 테이블에 대한 정보를 알고 싶으면 아래와 같은 명령을 사용하면 된다. sys_tables_ 메타 테이블은 알티베이스에서 제공하는 데이터베이스 카탈로그 정보를 수록하는 시스템 내부 테이블이다. iSQL> SELECT * FROM system_.sys_tables_; . . iSQL> SELECT * FROM tab; -> 이 명령어는 iSQL 에서만 사용가능. USER NAME TABLE NAME TYPE ----------------------------------------------- . .. 테이블 구조 보기 28 iSQL User’s Manual 사용자가 생성한 테이블에 관한 정보를 알고 싶으면 아래와 같은 명령을 사용한다. DESC table_name; CREATE TABLE department ( DNO SMALLINT PRIMARY KEY, DNAME CHAR(30) NOT NULL, DEP_LOCATION CHAR(9), MGR_NO INTEGER ); iSQL> DESC department; -> table_name: 테이블 정보(테이블 구조)를 알고 싶은 테이블명. [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ----------------------------------------------------------- NAME TYPE IS NULL ----------------------------------------------------------- DNO SMALLINT FIXED NOT NULL DNAME CHAR(30) FIXED NOT NULL DEP_LOCATION CHAR(9) FIXED MGR_NO INTEGER FIXED [ INDEX ] ----------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- __SYS_IDX_ID_122 BTREE UNIQUE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- DNO 시퀀스 정보 보기 데이터베이스에 존재하는 모든 시퀀스에 대한 정보를 알고 싶으면 아래와 같은 명령을 사용하면 된다. SELECT * FROM seq; iSQL> CONNECT sys/manager; Connect success. iSQL> CREATE USER user1 IDENTIFIED BY user1; Create success. iSQL> CONNECT user1/user1; Connect success. iSQL> CREATE SEQUENCE seq1 MAXVALUE 100 CYCLE; Create success. iSQL> CREATE SEQUENCE seq2; Create success. iSQL> CONNECT sys/manager; Connect success. iSQL> CREATE SEQUENCE seq2 START WITH 20 INCREMENT BY 30; Create success. iSQL> CREATE SEQUENCE seq3 CACHE 40; Create success. iSQL> SELECT * FROM seq; -> SYS 계정으로 데이터베이스에 접속한 경우 생성된 모든 sequence 들의 정보를 출력한다. USER_NAME -------------------------------------------- iSQL 사용 예 29 SEQUENCE_NAME CURRENT_VALUE INCREMENT_BY ------------------------------------------------ MIN_VALUE MAX_VALUE CYCLE CACHE_SIZE ------------------------------------------------ SYS SEQ2 20 30 1 9223372036854775806 NO 20 SYS SEQ3 1 1 1 9223372036854775806 NO 40 USER1 SEQ1 1 1 1 100 YES 20 USER1 SEQ2 1 1 1 9223372036854775806 NO 20 4 rows selected. iSQL> CONNECT user1/user1; Connect success. iSQL> SELECT * FROM seq; -> user1이 생성한 모든 sequence 들의 정보를 출력한다. SEQUENCE_NAME CURRENT_VALUE INCREMENT_BY ------------------------------------------------ MIN_VALUE MAX_VALUE CYCLE CACHE_SIZE ------------------------------------------------ SEQ1 1 1 1 100 YES 20 SEQ2 1 1 1 9223372036854775806 NO 20 2 rows selected. 30 iSQL User’s Manual 트랜잭션 제어 트랜잭션 모드 설정 한 번 명령어를 수행할 때마다 자동으로 commit 할 것인지 여부를 결정하는 기능이다. iSQL> AUTOCOMMIT OFF; -> 사용자가 commit 하기 전에는 commit 되지 않음 Set autocommit off success. iSQL> AUTOCOMMIT ON; -> 명령어를 수행할 때마다 자동으로 commit Set autocommit on success. PLANCOMMIT SET PLANCOMMIT ON/OFF; autocommit off (non-autocommit) 모드에서 explain plan이 on (또는 only) 조건일 때, desc, select * from tab; 또는 select * from seq; 등과 같은 명령어를 수행했을 때 자동으로 commit 할지를 결정하는 기능이다. 기본값은 OFF 이다. * 참고: 기본값이 OFF 이므로 autocommit off 세션에서 explain plan이 on (또는 only) 조건일 때 알티베이스는 위의 명령어(desc, select * from tab; 또는 select * from seq;)를 자동 commit 하지 않고 오류 메시지를 발생한다. 이 값이 ON이면, iSQL은 이런 명령어들을 실행한 후 commit을 수행해서 에러가 발생하지 않도록 한다. iSQL 사용 예 31 파일 관리 작업 결과 저장 iSQL을 통해 작업한 결과를 지정한 파일로 저장하는 기능을 제공한다. 다음과 같이 spool 명령을 이용하면 지정한 book.txt 파일에 작업한 결과가 저장된다. 이 기능을 해제하고 싶으면 SPOOL OFF 명령을 사용한다. iSQL> SPOOL book.txt Spool start. [book.txt] -> 이후의 모든 명령과 그 결과들이 book.txt 파일에 저장된다. 이 파일은 현재 디렉터리에 생성된다. iSQL> SPOOL OFF Spool Stop -> 더 이상 명령과 그 결과들을 파일에 저장하지 않는다. 스크립트 파일 실행 @ 명령어 @file_name[.sql] 또는 START file_name[.sql] file_name[.sql]: 수행 될 스크립트 파일, 확장자를 생략하면 iSQL은 기본 스크립트 파일 확장자(.sql)로 간주한다. iSQL 명령어와 SQL구문들이 저장된 스크립트 파일을 실행하면, 한번에 파일내의 명령어들을 순차적으로 실행한다. @ 명령어는 START와 같은 기능을 갖는다. 스크립트 파일내의 exit 또는 quit 명령어는 iSQL을 종료시킨다. 스크립트 파일내에는 일반적으로 SQL문, iSQL 명령어, 또는 Stored Procedure 블록 등이 포함될 수 있다. 다음은 $ALTIBASE_HOME/sample/APRE/schema 디렉터리에 있는 스크립트 schema.sql을 현재 디렉터리에서 수행하는 예이다. iSQL> START schema.sql <- 파일내의 sql 문이 실행된다. 또는 32 iSQL User’s Manual iSQL> @schema.sql 스크립트 파일을 명시할 때, 사용자 계정의 알티베이스 홈 디렉터리($ALTIBASE_HOME)를 의미하는 물음표(“?”)를 사용할 수 있다. 다음은 $ALTIBASE_HOME/sample/APRE/schema 디렉터리에 있는 스크립트 schema.sql을 다른 디렉터리에서 수행하는 예이다. iSQL> @?/sample/schema.sql 물음표(“?”)는 다음 iSQL 명령어에서도 사용할 수 있다: edit, save, load, spool, start * 스크립트 파일 내에서 주석의 사용은 -- 또는 /* */으로 가능하다. --는 이 표시 다음부터 그 라인의 끝까지를 주석으로 처리하고 여러 라인을 주석으로 처리할 때는 주석부분을 /*와 */ 사이에 넣으면 된다. @@ 명령어 @@file_name[.sql] file_name[.sql]: 수행될 내포형 스크립트를 나타낸다. 확장자를 생략하면 iSQL은 기본 명령어 파일 확장자(.sql)로 간주한다. 명시된 스크립트를 수행한다. @@ 명령어는 @ 명령어와 유사한 기능을 갖는다. 이 명령어는 수행될 스크립트와 같은 경로에서 명시된 스크립트를 찾는 기능을 가지고 있기 때문에 내포형 스크립트를 수행하는데 유용하다. @@ 명령어는 다음과 같은 용도로 쓰일 수 있다. 사용자가 임의의 스크립트 파일 내에 @@file_name.sql을 입력하고 그 스크립트 파일을 실행하면, iSQL은 file_name.sql을 호출한 스크립트 파일과 동일한 디렉터리에서 file_name.sql을 찾아서 수행한다. file_name.sql 은 이를 호출한 스크립트 파일과 같은 디렉터리에 있어야 한다. 만일 그런 파일이 존재하지 않으면, iSQL은 오류 메시지를 보여준다. 사용자가 iSQL 프롬프트 상에서 @@file_name.sql을 입력하여 실행하는 것은 @file_name.sql을 실행하는 것과 동일하다. 스크립트에는 일반적으로 SQL문, iSQL 명령어, 또는 Stored Procedure 블록 등이 포함될 수 있다. 스크립트 내에 exit 또는 quit 명령어는 iSQL을 종료시킨다. 다음은 $ALTIBASE_HOME 디렉터리에서 a.sql 스크립트 파일을 iSQL 사용 예 33 실행하는 예제로, 이 파일 내에서 schema.sql 스크립트 파일을 실행한다. 이 예제가 에러 없이 제대로 수행되려면, a.sql은 schema.sql파일이 위치하는 $ALTIBASE_HOME/sample/APRE/schema 디렉터리에 같이 있어야 한다. iSQL> @sample/APRE/schema/a.sql $ cat a.sql @@schema.sql * 참고: 이 후의 예제는 위의 스크립트를 실행해서 생성된 테이블들을 (부록 Schema 참고) 가지고 iSQL 환경에서 질의에 따른 결과를 편집한 것이다. SQL문의 저장 현재 iSQLbuffer에 있는 명령어 중 가장 최근에 수행한 명령어를 파일로 저장하는 기능이다. 이 파일은 현재 디렉터리에 생성된다. iSQL> SELECT * FROM book; iSQL> SAVE book.sql; -> book.sql 파일에 ‘SELECT * FROM book;’가 저장된다. Save completed. SQL문의 로드 지정한 파일의 첫 번째 명령어를 iSQL버퍼의 마지막 위치에 로드시키는 기능이다. iSQL> LOAD book.sql iSQL> SELECT * FROM book; Load completed. iSQL> / -> SELECT * FROM book; 문이 실행된 것을 볼 수 있다. DML문 저장 INSERT, UPDATE, DELETE, MOVE 등의 DML문 실행시 이를 $ALTIBASE_HOME/trc/isql_query.log에 기록한다. 이 기능을 설정하려면 SET QUERYLOGGING을 ON으로 하고, 해제하려면 OFF하면 된다. 34 iSQL User’s Manual iSQL> SET QUERYLOGGING ON; -> 이후의 모든 DML 문이 $ALTIBASE_HOME/trc/isql_query.log에 저장된다. iSQL> CREATE TABLE T1 ( I1 INTEGER ); Create success. iSQL> INSERT INTO T1 VALUES ( 1 ); 1 row inserted. iSQL> UPDATE T1 SET I1 = 2; 1 row updated. iSQL> SELECT * FROM T1; I1 -------------- 2 1 row selected. iSQL> DELETE FROM T1; 1 row deleted. iSQL> DROP TABLE T1; Drop success. iSQL> EXIT % cat $ALTIBASE_HOME/trc/isql_query.log -> SET QUERYLOGGING ON으로 실행한 후의 DML을 확인할 수 있다. [2009/09/16 10:36:14] [127.0.0.1:25310 SYS] INSERT INTO T1 VALUES ( 1 ) [2009/09/16 10:36:31] [127.0.0.1:25310 SYS] UPDATE T1 SET I1 = 2 [2009/09/16 10:36:37] [127.0.0.1:25310 SYS] DELETE FROM T1 질의문 편집 최근 질의문 편집 iSQL 상에서 파일을 생성하고 편집할 수 있도록 명령어 ed를 제공한다. 인수 없이 ed를 실행하면 가장 최근 실행된 질의문이 iSQL.buf 라는 임시 파일로 생성되며 다음과 같은 화면을 볼 수 있다. (지면을 절약하기 위해 몇 줄만 화면으로 표시한다.) iSQL> SELECT sysdate FROM dual; SYSDATE --------------- 01-JAN-2000 1 row selected. iSQL> ED SELECT sysdate FROM dual; ~ ~ ~ "iSQL.buf" 1L, 26C 기존 파일 편집 존재하는 파일을 편집하기 위해서는 iSQL 상에서 ed 실행 시 그 파일 이름을 뒤에 넣으면 된다. 화면이 초기화 되어 있을 때 빈 줄 표시는 ~(tilde) 문자로 표시된다. iSQL 사용 예 35 iSQL> ED myquery.sql "myquery.sql" INSERT INTO employee(ENO, E_FIRSTNAME, E_LASTNAME, SEX) VALUES(21, 'MSJUNG', 'F'); INSERT INTO employee(ENO, E_FIRSTNAME, E_LASTNAME, SEX, JOIN_DATE) VALUES(22, 'Joshua', 'Baldwin', 'M', TO_DATE('2001-11-19 00:00:00', 'YYYY-MM-DD HH:MI:SS')); ~ ~"myquery.sql" 히스토리 목록에 있는 질의문 편집 히스토리 목록에서 해당 번호를 사용하여 이전에 수행했던 명령을 편집할 수 있다. 즉, 해당 번호의 질의문이 iSQL.buf 임시 파일로 생성되어 편집을 할 수 있으며, 편집 결과는 히스토리의 마지막에 등록되어 가장 마지막 명령을 재수행하는 ‘/’ 으로도 실행이 가능하다. iSQL> h 1 : SELECT * FROM customers; 2 : SELECT * FROM employees; iSQL> 2ed or iSQL> 2 ed SELECT * FROM employees; ~ ~ "iSQL.buf" * 파일을 편집하기 위해서 명령 줄에 인수 2라는 파일 이름을 넣은 (iSQL> ed 2) 명령어와 구분된다. 편집 후 (employees를 orders로 변경) iSQL> h <- 현재 isql buffer에 있는 히스토리 목록 1 : SELECT * FROM customers; 2 : SELECT * FROM employees; : SELECT * FROM orders; <- 2 ed 명령어에 의해 편집된 질의문이 히스토리 목록에 가장 마지막 명령어로 저장된다. iSQL> / <- 가장 최근에 수행한 명령어가 실행된다. ORDERS.ONO ORDERS.ORDER_DATE ORDERS.ENO ORDERS.CNO ----------------------------------------------- ORDERS.GNO ORDERS.QTY ORDERS.ARRIVAL_DATE ORDERS.PROCESSING ----------------------------------------------- 0011290007 2000/11/29 00:00:00 12 7111111431202 A111100002 70 2000/12/02 00:00:00 C 0011290011 2000/11/29 00:00:00 12 7610011000001 E111100001 1000 2000/12/05 00:00:00 D … 0012310012 2000/12/31 00:00:00 19 7308281201145 C111100001 250 2001/01/03 00:00:00 O 30 rows selected. 36 iSQL User’s Manual SELECT 결과 포매팅 SELECT 문에 대한 결과들을 사용자가 보기 좋게 포매팅하는 기능이다. SET LINESIZE SELECT 문 결과 출력시 디스플레이되는 한 라인의 사이즈를 설정한다. 10 에서 200 사이의 값이어야 한다. iSQL> SET LINESIZE 100; -> 한 라인의 디스플레이 크기를 100으로 설정한다. SET LOBSIZE CLOB 칼럼을 SELECT 문으로 조회 시 디스플레이 되는 데이터의 길이를 설정한다. CLOB 칼럼의 데이터를 SELECT 문으로 조회하기 위해서 우선 트랜잭션 모드를 AUTOCOMMIT OFF로 설정해야 한다. CREATE TABLE C1(I1 INTEGER, I2 CLOB); INSERT INTO C1 VALUES(1, 'A123456789'); INSERT INTO C1 VALUES(2, 'A1234'); INSERT INTO C1 VALUES(3, 'A12345'); INSERT INTO C1 VALUES(4, 'A1234567890123'); iSQL> autocommit off; -> CLOB 칼럼 조회를 위해 트랜잭션 모드를 OFF로 설정한다. Set autocommit off success. iSQL> select * from c1; C1.I1 C1.I2 --------------------------- 1 A123456789 2 A1234 3 A12345 4 A1234567890123 4 rows selected. iSQL> set lobsize 10; -> CLOB 칼럼의 데이터를 select 문으로 조회할 때 화면에 나타나는 데이터 길이를 설정한다. iSQL> select * from c1; C1.I1 C1.I2 -------------------------- 1 A123456789 2 A1234 3 A12345 4 A123456789 4 rows selected. iSQL 사용 예 37 SET LOBOFFSET CLOB 칼럼을 SELECT 문으로 조회할 때 디스플레이 되는 Clob 데이터의 시작 위치를 설정한다. CLOB 칼럼의 데이터를 SELECT 문으로 조회하기 위해서 우선 트랜잭션 모드를 AUTOCOMMIT OFF로 설정해야 한다. CREATE TABLE C1(I1 INTEGER, I2 CLOB); INSERT INTO C1 VALUES(1, 'A123456789'); INSERT INTO C1 VALUES(2, 'A1234'); INSERT INTO C1 VALUES(3, 'A12345'); INSERT INTO C1 VALUES(4, 'A1234567890123'); iSQL> autocommit off; Set autocommit off success. iSQL> set loboffset 4; -> CLOB 칼럼의 데이터를 select 문으로 조회할 때 화면에 나타나는 데이터의 시작 위치를 설정한다. iSQL> select * from c1; C1.I1 C1.I2 -------------------------- 1 456789 2 4 3 45 4 4567890123 4 rows selected. SET FEEDBACK SELECT 문 결과 출력시 선택된 결과 건수를 출력한다. SET FEEDBACK ON|OFF|n ON: SELECT문 수행 후 결과 데이터 건수를 출력한다. OFF: SELECT문 수행 후 결과 데이터 건수를 출력하지 않는다. n: 결과 건수가 n이상일 경우에만 출력한다. iSQL> SET FEEDBACK ON; iSQL> SELECT * FROM employees WHERE ENO < 3; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 2 rows selected. 38 iSQL User’s Manual SET PAGESIZE 결과 row들을 몇 개 단위로 보여줄 것인지 결정한다. iSQL> SET PAGESIZE 2; -> 결과 row를 2개 단위로 보여준다. iSQL> SELECT * FROM employees; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 3 Kobain Ken engineer 0162581369 1001 2000 M 650226 11-JAN-2010 H 4 Foster Aaron PL 0182563984 3001 1800 M 820730 H ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 5 Ghorbani Farhad PL 01145582310 3002 2500 M 20-DEC-2009 H 6 Momoi Ryu programmer 0197853222 1002 1700 M 790822 09-SEP-2010 H . . . 20 rows selected. iSQL> SET PAGESIZE 0; -> 결과 전체를 한 단위로 보여준다. iSQL> SELECT * FROM employees; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 3 Kobain Ken engineer 0162581369 1001 2000 M 650226 11-JAN-2010 H . . iSQL 사용 예 39 . 20 rows selected. SET HEADING 결과에 헤더를 출력할지 결정한다. iSQL> SET HEADING OFF; -> 결과에 헤더를 출력하지 않는다. iSQL> SELECT * FROM employees; 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 3 Kobain Ken engineer 0162581369 1001 2000 M 650226 11-JAN-2010 H . . . 20 rows selected. iSQL> SET HEADING ON; -> 결과에 헤더를 출력한다. iSQL> SELECT * FROM employee; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 3 Kobain Ken engineer 0162581369 1001 2000 M 650226 11-JAN-2010 H . . . 20 rows selected. SET COLSIZE SELECT 문 결과 출력시 디스플레이되는 CHAR, VARCHAR 타입 칼럼의 사이즈를 설정하여, 길이가 긴 문자열을 포함하는 칼럼이 존재할 경우 인식을 용이하게 한다. iSQL> CREATE TABLE LOCATION( ID INTEGER, NAME CHAR(20), ADDRESS VARCHAR(500), PHONE CHAR(20)); Create success. 40 iSQL User’s Manual iSQL> INSERT INTO LOCATION VALUES(1, 'ALTIBASE', 'Inyoung Bldg, 5fl 44-11 Youido-dong Youngdungpo-qu seoul, 150-890. Korea', '82-2-769-7500'); 1 row inserted. 아래는 CHAR 또는 VARCHAR 타입 칼럼의 디스플레이 사이즈를 7로 설정하여 조회하는 예제이다. iSQL> SET COLSIZE 7; iSQL> SELECT ID,NAME,ADDRESS,PHONE FROM LOCATION; ID NAME ADDRESS PHONE -------------------------------------------- 1 ALTIBAS 10Fl., 82-2-20 E Daerung 82-1000 post-to wer II, Guro-d ong, Gu ro-qu, Seoul 1 52-790. Korea 1 row selected. iSQL 사용 예 41 출력 옵션 제어 수행시간 출력 SQL 문을 실행하는데 걸린 시간을 알려주는 기능이다. iSQL> SET TIMING ON; -> 명령 실행 후 마지막 라인에 실행시간을 출력한다. iSQL> SELECT * FROM employees; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H . . . 20 rows selected. elapsed time : 0.01 iSQL> SET TIMING OFF; -> 실행시간을 출력하지 않는다. 수행시간 단위 설정 SQL문의 쿼리 수행 시간 단위를 설정하는 기능이다. 설정할 수 있는 단위는 다음과 같다. 초 밀리초 마이크로초 나노초 iSQL> SET TIMING ON iSQL> SET TIMESCALE SEC; iSQL> SELECT * FROM employees; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R ... 20 rows selected. elapsed time : 0.00 42 iSQL User’s Manual iSQL> SET TIMESCALE MILSEC; iSQL> SELECT * FROM employee; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R ... ... 20 rows selected. elapsed time : 0.72 iSQL> SET TIMESCALE MICSEC; iSQL> SELECT * FROM employee; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R ... 20 rows selected. elapsed time : 966.00 iSQL> SET TIMESCALE NANSEC; iSQL> SELECT * FROM employee; NO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R ... 20 rows selected. elapsed time : 681000.00 외래키 출력 DESC 명령어를 사용하여 테이블 구조를 볼 때 외래 키에 대한 정보를 보여주는 기능이다. iSQL> SET FOREIGNKEYS ON; -> 외래 키에 대한 정보를 출력한다. iSQL> DESC employees; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ----------------------------------------------------------- ------------------- NAME TYPE IS NULL ----------------------------------------------------------- ------------------- iSQL 사용 예 43 ENO INTEGER FIXED NOT NULL E_LASTNAME CHAR(20) FIXED NOT NULL E_FIRSTNAME CHAR(20) FIXED NOT NULL EMP_JOB VARCHAR(15) FIXED EMP_TEL CHAR(15) FIXED DNO SMALLINT FIXED SALARY NUMERIC(10, 2) FIXED SEX CHAR(1) FIXED BIRTH CHAR(6) FIXED JOIN_DATE DATE FIXED STATUS CHAR(1) FIXED [ INDEX ] ----------------------------------------------------------- ------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- ------------------- __SYS_IDX_ID_238 BTREE UNIQUE ENO ASC EMP_IDX1 BTREE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- ------------------- ENO [ FOREIGN KEYS ] ----------------------------------------------------------- ----------- iSQL> SET FOREIGNKEYS OFF; -> 외래 키에 대한 정보를 출력하지 않는다. iSQL> DESC employees; [ ATTRIBUTE ] ----------------------------------------------------------- ------------------- NAME TYPE IS NULL ----------------------------------------------------------- ------------------- ENO INTEGER FIXED NOT NULL E_LASTNAME CHAR(20) FIXED NOT NULL E_FIRSTNAME CHAR(20) FIXED NOT NULL EMP_JOB VARCHAR(15) FIXED EMP_TEL CHAR(15) FIXED DNO SMALLINT FIXED SALARY NUMERIC(10, 2) FIXED SEX CHAR(1) FIXED BIRTH CHAR(6) FIXED JOIN_DATE DATE FIXED STATUS CHAR(1) FIXED [ INDEX ] ----------------------------------------------------------- ------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- ------------------- __SYS_IDX_ID_238 BTREE UNIQUE ENO ASC 44 iSQL User’s Manual EMP_IDX1 BTREE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- ----------- ENO 스크립트 파일 실행결과 출력 스크립트 파일 실행의 결과를 화면상에 보여줄지를 결정한다. OFF 기능은 iSQL 상에서 스크립트 실행 시 생성된 결과가 화면에 출력되는 것을 막는다. 그러나, OFF가 설정되어 있더라도 질의를 직접 입력하는 경우 (예: iSQL> select * from t1;) 질의 결과는 화면에 출력 되며, 스크립트 명령을 이용하는 경우에만 (예: iSQL> @t.sql ) 화면에 출력되지 않는다. iSQL> SET TERM OFF; iSQL> SET TIMING ON; -> 실행시간이 화면에 출력되지 않는다. iSQL> @schema.sql -> 스크립트 실행 결과를 출력하지 않는다. iSQL> SELECT eno, e_firstname, e_lastname FROM employees; -> 질의를 직접 입력하는 경우 결과는 출력된다. ENO E_FIRSTNAME E_LASTNAME ----------------------------------------------------------- - 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani . . . iSQL> SET TERM ON; -> 스크립트 실행 결과를 출력한다. iSQL> @schema.sql iSQL> ALTER SESSION SET AUTOCOMMIT = TRUE; ->결과 시작 Alter success. iSQL> DROP TABLE ORDERS; Drop success. elapsed time : 0.00 iSQL> DROP TABLE EMPLOYEES; Drop success. elapsed time : 0.00 . . . iSQL> CREATE INDEX ODR_IDX3 ON ORDERS (GNO ASC); Create success. elapsed time : 0.00 -> 결과 끝 iSQL 사용 예 45 실행 계획 출력 SQL 튜닝을 위하여 iSQL상에서 실행 계획 (Explain Plan)을 출력하는 기능이다. SQL 문의 실행 계획은 SELECT, INSERT, UPDATE, DELETE 등의 DML 문에 대해서 확인이 가능하다. 이를 위해서 SELECT 등의 구문을 수행하기 전에 다음 명령을 수행하여야 한다. ALTER SESSION SET EXPLAIN PLAN = option; 여기서 option은 ON, OFF, ONLY의 세 가지 설정이 있으며, 기본 설정값은 OFF이다. ON: SELECT문 실행 후 결과 레코드와 함께 Execution Plan 을 보여준다. ONLY: SELECT문에 대해 Prepare 과정만 수행한 후 Execution 과정을 수행하지 않고 실행 계획만 보여준다. 주 언어 변수 바인딩이 존재하는 SELECT 문 또는 실행 수행 시간이 오래 걸리는 질의에 대해 단순히 실행 계획만 확인할 경우 이 기능을 사용한다. OFF: SELECT문 실행 후 결과 레코드만 보여준다. 사용자가 기술한 WHERE절에 존재하는 조건들의 처리 방법 등의 보다 자세한 정보가 필요한 경우는 다음 명령을 사용한다. ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 1; 위의 구문처럼 해당 프로퍼티를 1로 설정하여 ON시키면, 실행 계획 정보에 WHERE절의 조건들이 FIXED KEY RANGE, VARIABLE KEY RANGE, FILTER 등으로 자세하게 분류되어 표시된다. 따라서 WHERE절을 복잡하게 사용한 경우 어떤 술어들이 인덱스 스캔을 통해 수행되는지 확인할 수 있다. 단, 특정 최적화 기법에 의해 질의가 변경된 경우는 이러한 정보가 출력되지 않을 수 있다. 다음은 해당 SQL문을 사용한 출력 예이다. TRCLOG_DETAIL_PREDICATE을 설정하고 EXPLAIN PLAN = ON으로 한 경우 iSQL> alter system set trclog_detail_predicate = 1; Alter success. iSQL> alter session set explain plan = on; Alter success. iSQL> SELECT eno, e_lastname, e_firstname FROM employees WHERE eno = 1; ENO E_LASTNAME E_FIRSTNAME ----------------------------------------------------------- - 1 Moon Chan-seung 1 row selected. 46 iSQL User’s Manual ----------------------------------------------------------- - PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_238, ACCESS: 1, SELF_ID: 2 ) [ FIXED KEY ] AND OR ENO = 1 ----------------------------------------------------------- - TRCLOG_DETAIL_PREDICATE을 설정하지 않고, EXPLAIN PLAN = ON으로 한 경우 iSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. iSQL> ALTER SESSION SET EXPLAIN PLAN = ON; Alter success. iSQL> SELECT eno, e_lastname, e_firstname FROM employees WHERE eno = 1; ENO E_LASTNAME E_FIRSTNAME ----------------------------------------------------------- - 1 Moon Chan-seung 1 row selected. ----------------------------------------------------------- - PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_238, ACCESS: 1, SELF_ID: 2 ) ----------------------------------------------------------- - TRCLOG_DETAIL_PREDICATE을 설정하지 않고, EXPLAIN PLAN = ONLY로 한 경우 iSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. iSQL> ALTER SESSION SET EXPLAIN PLAN = ONLY; Alter success. iSQL> SELECT eno, e_lastname, e_firstname FROM employees WHERE eno = 1; ENO E_LASTNAME E_FIRSTNAME ----------------------------------------------------------- - No rows selected. ----------------------------------------------------------- - PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_238, ACCESS: ??, SELF_ID: 2 ) ----------------------------------------------------------- - EXPLAIN PLAN = ONLY인 경우 질의 실행 없이 실행 계획만 생성하므로 ACCESS 항목과 같이 실제 실행 후 그 값이 결정되는 항목들은 물음표 (“??”)로 표시된다. 결과 출력 방향 설정 iSQL 사용 예 47 iSQL에서 SELECT 구문으로 조회할 경우, 결과를 세로로 보여줄 것인가 가로로 보여줄 것인가를 선택할 수 있다. 조회 결과가 행이 적고, 열이 많을 경우에 적합한 출력이다. 일반적으로 이러한 경우에 가로로 출력되면 해당하는 열을 맞춰 값을 보기가 어렵다. 하지만 출력 결과의 방향을 세로로 설정하면 보기가 편리하다. iSQL>SET VERTICAL ON; -> 출력 결과 모드를 세로로 설정한다. iSQL> SELECT * FROM employees WHERE eno = 2; ENO : 2 E_LASTNAME : Davenport E_FIRSTNAME : Susan EMP_JOB : designer EMP_TEL : 0113654540 DNO : SALARY : 1500 SEX : F BIRTH : 721219 JOIN_DATE : 18-NOV-2009 STATUS : H 1 row selected. 48 iSQL User’s Manual iSQL 화면 설정 보기 다음은 현재 세션에서 iSQL 화면 설정 값을 보는 예를 보여준다. iSQL> SHOW USER -> 현재 세션에 접속한 사용자 User : SYS iSQL> SHOW COLSIZE ColSize : 0 iSQL> SHOW LOBOFFSET LobOffset: 0 iSQL> SHOW LINESIZE Linesize : 100 iSQL> SHOW LOBSIZE LobSize : 80 iSQL> SHOW PAGESIZE Pagesize : 0 iSQL> SHOW TIMESCALE TimeScale : Second iSQL> SHOW HEADING Heading : On iSQL> SHOW TIMING Timing : Off iSQL> SHOW VERTICAL Vertical : Off iSQL> SHOW FOREIGNKEYS ForeignKeys : Off iSQL> SHOW PLANCOMMIT PlanCommit : Off iSQL> SHOW QUERYLOGGING QueryLogging : Off iSQL> SHOW TERM Term : On iSQL> SHOW FEEDBACK Feedback : 1 iSQL> SHOW ALL User : SYS ColSize : 0 LobOffset : 0 LineSize : 80 LobSize : 80 PageSize : 0 TimeScale : Second Heading : On Timing : Off Vertical : Off ForeignKeys : Off PlanCommit : Off iSQL 사용 예 49 호스트 변수 호스트 변수를 선언하여 사용할 수 있다. 호스트 변수는 프로시저나 함수 실행 시 유용하다. 호스트 변수 선언하기 구문 VAR[IABLE] var_name var_type 타입 변수 선언 시 사용할 수 있는 타입은 다음과 같다. INTEGER, BYTE(n), NIBBLE(n), NUMBER, NUMBER(n), NUMBER(n,m), NUMERIC, NUMERIC(n), NUMERIC(n,m), CHAR(n), VARCHAR(n), NCHAR(n), NVARCHAR(n), DATE DECIMAL, DECIMAL(n), DECIMAL(n,m), FLOAT, FLOAT(n), DOUBLE, REAL BIGINT, SMALLINT 예제 아래는 변수를 선언하는 예를 보여준다. iSQL> VAR p1 INTEGER iSQL> VAR p2 CHAR(10) iSQL> VAR v_double DOUBLE iSQL> VAR v_real REAL 호스트 변수에 값 할당하기 구문 EXEC[UTE] :var_name := value; 예제 아래는 변수에 값을 할당하는 예를 보여준다. iSQL> EXECUTE :p1 := 100; Execute success iSQL> EXEC :p2 := ‘abc’; Execute success 50 iSQL User’s Manual 호스트 변수 보기 구문 PRINT VAR[IABLE] -> 선언된 모든 변수를 보여준다. PRINT var_name -> var_name의 타입과 값을 보여준다. 예제 다음은 선언된 모든 변수값을 보여준다. iSQL> PRINT VAR [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- P1 INTEGER 100 P2 CHAR(10) abc V_REAL REAL V_DOUBLE DOUBLE iSQL> PRINT p2 -> 변수 p2에 관한 정보만 출력한다. NAME TYPE VALUE ------------------------------------------- P2 CHAR ( 10 ) abc iSQL 사용 예 51 PREPARE SQL문 수행 Prepared SQL문 수행과 Direct SQL문 수행의 차이 iSQL상에서 SQL문을 수행하면 기본적으로 Direct Execution 방법으로 수행된다. Direct Execution 이란 질의에 대한 구문 분석, 정당성 검사, 최적화 및 수행을 한번에 수행하는 것을 의미한다. 이에 반해 Prepared Execution 방법은 prepare시에 질의에 대한 구문 분석, 정당성 검사, 최적화까지만을 수행해 질의에 대한 실행 계획을 수립해 두고 이후에 클라이언트로부터 실행 요구 메시지를 받으면 수행을 하는 방법이다. ODBC를 사용한 응용프로그램 작성의 경우 Prepared Execution 방법이 일반적이며 호스트 변수 바인딩을 통해 한 SQL문에 대한 반복적인 수행이 필요한 경우 속도의 이점이 있다. iSQL 상에서는 이 두 방법의 차이는 변수 사용 여부의 차이만 존재하며 속도의 이점은 존재하지 않는다. Prepared SQL문 구문 PREPARE SQL_statement; 예제 다음은 PREPARE 명령어를 사용한 SQL문 수행 예제이다. iSQL> VAR t1 INTEGER; iSQL> EXEC :t1 := 1; Execute success. iSQL> PREPARE SELECT eno, e_firstname, e_lastname, sex FROM employees WHERE eno=:t1; ENO E_FIRSTNAME E_LASTNAME SEX ----------------------------------------------------------- ------- 1 Chan-seung Moon M 1 row selected. 52 iSQL User’s Manual 프로시저 생성과 실행 및 삭제 프로시저 생성 프로시저를 생성하는 기능을 제공한다. 프로시저 생성시 반드시 END; / 구문으로 끝나야 한다. 생성된 프로시저는 sys_procedures_ 메타 테이블을 참조하여 확인할 수 있다. 프로시저 실행 프로시저를 실행하는 기능을 제공한다. 프로시저를 실행함으로써 다양한 쿼리를 한꺼번에 수행할 수 있다. 실행할 프로시저에 파라미터가 있는 경우 반드시 프로시저 실행전에 파라미터 개수만큼 변수가 선언되어 있어야 한다. 예제1 다음은 INSERT 문을 수행하는 프로시저 emp_proc를 생성하는 예를 보여준다. (IN 파라미터 이용) iSQL> CREATE OR REPLACE PROCEDURE emp_proc(p1 IN INTEGER, p2 IN CHAR(20), p3 IN CHAR(20), p4 IN CHAR(1)) AS BEGIN INSERT INTO employees(eno, e_firstname, e_lastname, sex) VALUES(p1, p2, p3, p4); END; / Create success. iSQL> SELECT * FROM system_.sys_procedures_ order by created desc limit 1; USER_ID PROC_OID ------------------------------------ PROC_NAME OBJECT_TYPE STATUS ----------------------------------------------------------- ----------- PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID RETURN_SIZE ----------------------------------------------------------- -- RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN CREATED ----------------------------------------------------------- -------------- LAST_DDL_TIME iSQL 사용 예 53 ---------------- 2 3208680 EMP_PROC 0 0 4 2 192 29-FEB-2012 29-FEB-2012 1 row selected. 아래는 emp_proc를 실행하는 예를 보여준다. iSQL> VAR eno INTEGER iSQL> VAR first_name CHAR(20) iSQL> VAR last_name CHAR(20) iSQL> VAR sex CHAR(1) iSQL> EXECUTE :eno := 21; Execute success. iSQL> EXECUTE :first_name := 'Joel'; Execute success. iSQL> EXECUTE :last_name := 'Johnson'; Execute success. iSQL> EXECUTE :sex := 'M'; Execute success. iSQL> EXECUTE emp_proc(:eno, :firstname, :lastname, :sex); Execute success. iSQL> SELECT eno, e_firstname, e_lastname, sex FROM employees WHERE eno = 21; ENO E_FIRSTNAME E_LASTNAME SEX ----------------------------------------------------------- ------ 21 Joel Johnson M 1 row selected. 예제2 다음은 SELECT 문을 수행하는 프로시저 outProc를 생성하는 예를 보여준다. iSQL> CREATE TABLE outTbl(i1 INTEGER, i2 INTEGER); Create success. iSQL> INSERT INTO outTbl VALUES(1,1); 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> SELECT * FROM outTbl; OUTTBL.I1 OUTTBL.I2 --------------------------- 1 1 1 1 1 1 1 1 1 1 5 rows selected. iSQL> CREATE OR REPLACE PROCEDURE outProc(a1 OUT INTEGER, a2 IN OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO a1 FROM outTbl WHERE i2 = a2; END; / Create success. 54 iSQL User’s Manual 아래는 outProc를 실행하는 예를 보여준다. iSQL> VAR t3 INTEGER iSQL> VAR t4 INTEGER iSQL> EXEC :t4 := 1; Execute success. iSQL> EXEC outProc (:t3, :t4); Execute success. iSQL> PRINT t3; NAME TYPE VALUE ----------------------------------------------- T3 INTEGER 5 예제3 다음은 프로시저 outProc1을 생성하는 예를 보여준다. iSQL> CREATE OR REPLACE PROCEDURE outProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1; p3 := p1 + 100; END; / Create success. iSQL> VAR v1 INTEGER iSQL> VAR v2 INTEGER iSQL> VAR v3 INTEGER iSQL> EXEC :v1 := 3; Execute success. iSQL> EXEC outProc1(:v1, :v2, :v3); Execute success. iSQL> PRINT VAR; [ HOST VARIABLE ] ----------------------------------------------- NAME TYPE VALUE ----------------------------------------------- .. V1 INTEGER 3 V2 INTEGER 3 V3 INTEGER 103 .. 예제4 다음은 SELECT 문을 수행하는 프로시저 inoutProc를 생성하는 예를 보여준다. iSQL> CREATE TABLE inoutTbl(i1 INTEGER); Create success. iSQL> INSERT INTO inoutTbl VALUES(1); 1 row inserted. iSQL> / 1 row inserted. iSQL> / 1 row inserted. iSQL> SELECT * FROM inoutTbl; INOUTTBL.I1 -------------- 1 1 1 3 rows selected. iSQL 사용 예 55 iSQL> CREATE OR REPLACE PROCEDURE inoutProc (a1 IN OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO a1 FROM inoutTbl WHERE i1 = a1; END; / Create success. iSQL> VAR t3 INTEGER iSQL> EXEC :t3 := 1; Execute success. iSQL> EXEC inoutProc(:t3); Execute success. iSQL> PRINT t3; NAME TYPE VALUE ----------------------------------------------- T3 INTEGER 3 예제5 다음은 프로시저 inoutProc1을 생성하는 예를 보여준다. iSQL> CREATE OR REPLACE PROCEDURE inoutProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1 + p2; p3 := p1 + 100; END; / Create success. 아래는 inoutProc1을 실행하는 예를 보여준다. iSQL> VAR v1 INTEGER iSQL> VAR v2 INTEGER iSQL> VAR v3 INTEGER iSQL> EXEC :v1 := 3; Execute success. iSQL> EXEC :v2 := 5; Execute success. iSQL> EXEC inoutProc1(:v1, :v2, :v3); Execute success. iSQL> PRINT VAR; [ HOST VARIABLE ] ----------------------------------------------- NAME TYPE VALUE ----------------------------------------------- .. V1 INTEGER 3 V2 INTEGER 8 V3 INTEGER 103 .. 프로시저 삭제 프로시저를 삭제하는 기능을 제공한다. 다음은 emp_proc를 삭제하는 예를 보여준다. iSQL> DROP PROCEDURE emp_proc; Drop success 56 iSQL User’s Manual 함수 생성과 실행 및 삭제 함수 생성 함수를 생성하는 기능을 제공한다. 함수 생성시 반드시 END; / 구문으로 끝나야 하며 리턴 타입이 정의되어 있어야 한다. 생성된 함수는 sys_procedures_ 메타 테이블을 참조하여 확인할 수 있다. 다음은 UPDATE 문과 SELECT 문을 수행하는 함수 emp_func를 생성하는 예를 보여준다. iSQL> CREATE OR REPLACE FUNCTION emp_func(f1 IN INTEGER) RETURN NUMBER AS f2 NUMBER; BEGIN UPDATE employees SET salary = 1000000 WHERE eno = f1; SELECT salary INTO f2 FROM employees WHERE eno = f1; RETURN f2; END; / Create success. iSQL> SELECT * FROM system_.sys_procedures_; USER_ID PROC_OID PROC_NAME ----------------------------------------------------------- -------------------- OBJECT_TYPE STATUS PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID ----------------------------------------------------------- --------------- RETURN_SIZE RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN ----------------------------------------------------------- ------------- CREATED LAST_DDL_TIME ------------------------------ . . . 2 3300024 INOUTPROC1 0 0 3 2 132 15-SEP-2010 15-SEP-2010 2 3302344 EMP_FUNC 1 0 1 6 30000 23 38 0 3 209 15-SEP-2010 15-SEP-2010 36 rows selected. iSQL 사용 예 57 함수 실행 함수를 실행하는 기능을 제공한다. 함수를 실행함으로써 다양한 쿼리를 한꺼번에 수행할 수 있다. 실행할 함수에 파라미터가 있는 경우 반드시 함수 실행전에 파라미터 개수만큼 변수가 선언되어 있어야 한다. 또한, 함수의 실행 결과를 저장할 변수도 정의되어 있어야 한다. 다음은 emp_func를 실행하는 예를 보여준다. iSQL> VAR eno INTEGER iSQL> VAR ret NUMBER iSQL> EXEC :eno := 11; Execute success. iSQL> EXEC :ret := emp_func(:eno); Execute success. iSQL> SELECT eno, salary FROM employees WHERE eno = 11; ENO SALARY --------------------------- 11 1000000 1 row selected. 함수 삭제 함수를 삭제하는 기능을 제공한다. 다음은 emp_func를 삭제하는 예를 보여준다. iSQL> DROP FUNCTION emp_func; Drop success 58 iSQL User’s Manual 사용자 편의 기능 히스토리 이전에 수행했던 명령들의 리스트를 보여 준다. 해당 번호를 사용하여 이전에 수행했던 명령을 간단하게 실행할 수 있다. iSQL> HISTORY; -> history 목록보기 또는 iSQL> H; 1 : SELECT * FROM tab; 2 : SELECT * FROM book; 3 : HISTORY; iSQL> / -> 가장 마지막 명령(HISTORY;)을 재수행 iSQL> 2/ -> history 목록의 2번에 해당하는 명령(SELECT * FROM book;)실행 쉘 명령 iSQL에서 !다음에 바로 쉘 명령을 수행할 수 있는 편리한 기능이다. iSQL> !ls -al total 3417 -rw-r----- 1 wlgml337 section 1198 Nov 1 13:30 .aliases -rw------- 1 wlgml337 section 5353 Oct 18 21:17 .bash_history -rw-r----- 1 wlgml337 section 1436 Nov 2 15:42 .bashrc -rw-r----- 1 wlgml337 section 1549 Dec 13 17:36 .profile drwxr-x--- 2 wlgml337 section 512 Nov 2 02:00 TEMP drwxr-xr-x 2 root root 512 Oct 16 11:29 TT_DB -rw------- 1 wlgml337 section 3446548 Dec 18 13:19 core drwxr-x--- 2 wlgml337 section 512 Nov 11 16:33 cron drwxr-x--- 2 wlgml337 section 512 Nov 15 10:52 test drwxr-xr-x 6 wlgml337 section 512 Nov 11 11:45 work 도움말 iSQL이 제공하는 명령에 대한 도움말을 제공한다. HELP 명령은 도움말 사용법을 보여 주며 특정 명령에 대한 도움말은 HELP 명령 다음에 정보를 알고자 하는 명령을 입력하면 된다. iSQL 사용 예 59 iSQL> HELP; Use 'help [command]' Enter 'help index' for a list of command iSQL> HELP INDEX; @ EDIT QUIT / EXIT ROLLBACK ALTER HEADING SAVE AUTOCOMMIT H[ISTORY] SELECT COMMIT INSERT SPOOL CREATE LINESIZE START DELETE LOAD TIMING DESC LOBOFFSET UPDATE DROP LOBSIZE VAR[IABLE] EXECUTE MOVE TERM EXPLANINPLAN PAGESIZE VERTICAL iSQL> HELP EXIT; exit; or quit; - exit iSQL 60 iSQL User’s Manual 내셔널 캐릭터 사용법 NCHAR 및 NVARCHAR 타입의 내셔널 캐릭터 상수 문자를 사용하기 위해서 아래와 같은 방법으로 환경변수 등을 설정해야 데이터의 손실 염려가 없다. 환경변수 ALTIBASE_NLS_NCHAR_LITERAL_REPLACE의 값을 1로 설정한다. $ export ALTIBASE_NLS_NCHAR_LITERAL_REPLACE =1 SQL 구문에서 NCHAR 타입 상수 문자열을 사용하기 위해 해당 문자열 바로 앞에 “N”을 붙여 사용한다. iSQL> create table t1 (c1 nvarchar(10)); Create success. iSQL> insert into t1 values (N'AB가나'); 1 row inserted. iSQL> select * from t1; C1 ------------------------ AB가나 1 row selected. 찾아보기 61 찾아보기 ! ! 명령어 ............................................... 13 / / 명령어 ......................................... 13, 58 @ @ 명령어 ......................................... 9, 31 @@ ....................................................... 9 @@ 명령어 .......................................... 32 A ALTIBASE_DATE_FORMAT ................... 16 ALTIBASE_HOME ................................. 14 ALTIBASE_IPC_FILEPATH ...................... 16 ALTIBASE_NLS_NCHAR_LITERAL_REPLAC E ..................................................... 15 ALTIBASE_NLS_USE ............................. 14 ALTIBASE_PORT_NO ............................ 14 AUTOCOMMIT OFF ............................. 30 AUTOCOMMIT ON .............................. 30 C comment ............................................ 13 D DESC ................................................... 28 disconnect ............................................. 8 E ed 명령어 ...................................... 10, 35 exit ....................................................... 8 G glogin.sql ............................................ 17 H help .................................................... 13 history ........................................... 13, 58 host variable ........................................ 49 I iSQL 구성 ............................................. 17 iSQL 명령어............................................ 8 iSQL 설정 ............................................... 3 iSQL 화면 설정 ..................................... 48 iSQL 환경변수 ...................................... 12 ISQL_BUFFER_SIZE ............................... 16 ISQL_CONNECTION ............................. 15 ISQL_EDITOR ....................................... 16 L LOBOFFSET .................................... 10, 37 LOBSIZE ......................................... 10, 36 login.sql .............................................. 17 P PAGESIZE ............................................ 38 PREPARE SQL문 ................................... 51 Q quit ....................................................... 8 S SELECT 결과 포매팅 ............................. 36 set foreignkeys .................................... 11 set linesize ........................................... 10 set pagesize ......................................... 10 set term ............................................... 11 shell command .................................... 58 show all ............................................... 12 SQL문의 로드 ....................................... 33 SQL문의 저장 ....................................... 33 START .............................................
-
- [ALTIBASE XDB 6.1.1] iSQL User's Manual_KOR ㅣ 2013-05-24
- ALTIBASE XDB Tools iSQL User’s Manual Release 6.1.1 (April 26, 2013) ----------------------------------------------------------- ALTIBASE XDB Tools iSQL User's Manual Release 6.1.1 Copyright ⓒ 2001~2012 ALTIBASE Corp. All Rights Reserved.
-
미리보기
ALTIBASE XDB Tools iSQL User’s Manual Release 6.1.1 (April 26, 2013) ----------------------------------------------------------- ALTIBASE XDB Tools iSQL User's Manual Release 6.1.1 Copyright ⓒ 2001~2012 ALTIBASE Corp. All Rights Reserved. 본 문서의 저작권은 ㈜알티베이스에 있습니다. 이 문서에 대하여 당사의 동의 없이 무단으로 복제 또는 전용할 수 없습니다. ㈜알티베이스 152-790 서울시 구로구 구로동 182-13 대륭포스트타워Ⅱ 10층 전화: 02-2082-1114 팩스: 02-2082-1099 고객서비스포털: http://support.altibase.com homepage: http://www.altibase.com ----------------------------------------------------------- 목차 I 목 차 서문 .......................................................................................................................... i 이 매뉴얼에 대하여 .......................................................................................................................... ii 1. iSQL 이용방법 ................................................................................................ 1 iSQL의 개요 ......................................................................................................................................... 2 iSQL 설정.............................................................................................................................................. 3 iSQL 커맨드 라인 옵션 .................................................................................................................. 5 iSQL 명령어 ......................................................................................................................................... 8 iSQL 관련 환경변수 ....................................................................................................................... 14 개인별 iSQL 환경 설정 ................................................................................................................ 18 2. iSQL 사용 예 ............................................................................................... 21 로그인 ................................................................................................................................................... 22 알티베이스의 구동 및 종료 ....................................................................................................... 24 접속 연결 및 해제 ......................................................................................................................... 26 데이터베이스와 객체 정보 조회 ............................................................................................. 29 트랜잭션 제어 .................................................................................................................................. 32 파일 관리 ............................................................................................................................................ 33 SELECT 결과 포매팅 ...................................................................................................................... 39 출력 옵션 제어 ................................................................................................................................ 44 iSQL 화면 설정 보기 .................................................................................................................... 51 호스트 변수 ....................................................................................................................................... 52 PREPARE SQL문 수행 .................................................................................................................... 54 프로시저 생성과 실행 및 삭제 ................................................................................................ 55 함수 생성과 실행 및 삭제 ......................................................................................................... 60 사용자 편의 기능............................................................................................................................ 62 내셔널 캐릭터 사용법 .................................................................................................................. 64 II iSQL User’s Manual 찾아보기 .............................................................................................................. 65 서문 i 서문 ii iSQL User’s Manual 이 매뉴얼에 대하여 이 매뉴얼은 데이터베이스에 접속해 데이터베이스 정보와 서버의 정보를 조회하고 제어할 수 있는 도구인 iSQL의 사용법에 대해 설명한다. 대상 사용자 이 매뉴얼은 다음과 같은 알티베이스 사용자를 대상으로 작성되었다. 데이터베이스 관리자 성능 관리자 데이터베이스 사용자 응용 프로그램 개발자 기술지원부 다음과 같은 배경 지식을 가지고 이 매뉴얼을 읽는 것이 좋다. 컴퓨터, 운영 체제 및 운영 체제 유틸리티 운용에 필요한 기본 지식 관계형 데이터베이스 사용 경험 또는 데이터베이스 개념에 대한 이해 컴퓨터 프로그래밍 경험 데이터베이스 서버 관리, 운영 체제 관리 또는 네트워크 관리 경험 소프트웨어 환경 이 매뉴얼은 데이터베이스 서버로 알티베이스 XDB 버전 6을 사용한다는 가정 하에 작성되었다. 이 매뉴얼의 구성 이 매뉴얼은 다음과 같이 구성되어 있다. 제 1장 iSQL 이용방법 이 장은 iSQL의 개요와 제공하는 명령어 및 사용방법에 대해 설명한다. 제 2장 iSQL 사용 예 서문 iii 이 장은 iSQL이 제공하는 각각의 명령어 대해 자세한 사용 예를 들어 설명한다. 문서화 규칙 이 절에서는 이 매뉴얼에서 사용하는 규칙에 대해 설명한다. 이 규칙을 이해하면 이 매뉴얼과 설명서 세트의 다른 매뉴얼에서 정보를 쉽게 찾을 수 있다. 여기서 설명하는 규칙은 다음과 같다. 구문 다이어그램 샘플 코드 규칙 구문 다이어그램 이 매뉴얼에서는 다음 구성 요소로 구축된 다이어그램을 사용하여, 명령문의 구문을 설명한다. 구성 요소 의미 예약어 명령문이 시작한다. 완전한 명령문이 아닌 구문 요 소는 화살표로 시작한다. 명령문이 다음 라인에 계속된다. 완전한 명령문이 아닌 구문 요소는 이 기호로 종료한다. 명령문이 이전 라인으로부터 계속된다. 완전한 명령 문이 아닌 구문 요소는 이 기호로 시작한다. ; 명령문이 종료한다. SELECT 필수 항목 NOT 선택적 항목 ADD DROP 선택사항이 있는 필수 항목. 한 항목만 제공해야 한 다. ASC DESC 선택사항이 있는 선택적 항목 iv iSQL User’s Manual , ASC DESC 선택적 항목. 여러 항목이 허용된다. 각 반복 앞부 분에 콤마가 와야 한다. 샘플 코드 규칙 코드 예제는 SQL, Stored Procedure, iSQL 또는 다른 명령 라인 구문들을 예를 들어 설명한다. 아래 테이블은 코드 예제에서 사용된 인쇄 규칙에 대해 설명한다. 규칙 의미 예제 [ ] 선택 항목을 표시 VARCHAR [(size)] [[FIXED |] VARIABLE] { } 필수 항목 표시. 반드시 하나 이 상을 선택해야 되는 표시 { ENABLE | DISABLE | COMPILE } | 선택 또는 필수 항목 표시의 인 자 구분 표시 { ENABLE | DISABLE | COMPILE } [ ENABLE | DISABLE | COMPILE ] . . . 그 이전 인자의 반복 표시 예제 코드들의 생략되는 것을 표 시 SQL> SELECT ename FROM employee; ENAME ----------------------- SWNO HJNO HSCHOI . . . 20 rows selected. 그 밖에 기 호 위에서 보여진 기호 이 외에 기 호들 EXEC :p1 := 1; acc NUMBER(11,2); 기울임 꼴 구문 요소에서 사용자가 지정해 야 하는 변수, 특수한 값을 제공 해야만 하는 위치 지정자 SELECT * FROM table_name; CONNECT userID/password; 소문자 사용자가 제공하는 프로그램의 요소들, 예를 들어 테이블 이름, 칼럼 이름, 파일 이름 등 SELECT ename FROM employee; 서문 v 대문자 시스템에서 제공하는 요소들 또 는 구문에 나타나는 키워드 DESC SYSTEM_.SYS_INDICES_; 관련 자료 자세한 정보를 위하여 다음 문서 목록을 참조하기 바란다. Installation Guide Getting Started Guide Administrator’s Manual Replication Manual SQL Reference Stored Procedures Manual Error Message Reference 온라인 매뉴얼 알티베이스 고객서비스포털(http://support.altibase.com/)에서 국문 및 영문 매뉴얼(PDF, HTML)을 받을 수 있다. 알티베이스는 여러분의 의견을 환영합니다. 이 매뉴얼에 대한 여러분의 의견을 보내주시기 바랍니다. 사용자의 의견은 다음 버전의 매뉴얼을 작성하는데 많은 도움이 됩니다. 보내실 때에는 아래 내용과 함께 고객서비스포털(http://support.altibase.com/)로 보내주시기 바랍니다. 사용 중인 매뉴얼의 이름과 버전 매뉴얼에 대한 의견 사용자의 성함, 주소, 전화번호 이 외에도 알티베이스 기술지원 설명서의 오류와 누락된 부분 및 기타 기술적인 문제들에 대해서 이 주소로 보내주시면 정성껏 처리하겠습니다. 기술적인 부분과 관련하여 즉각적인 도움이 필요한 경우에는 기술지원센터로 연락하시기 바랍니다. 여러분의 의견에 항상 감사드립니다. iSQL 이용방법 1 1. iSQL 이용방법 2 iSQL User’s Manual iSQL의 개요 iSQL은 알티베이스 데이터베이스에 접속하여 SQL 문과 부가적인 여러 명령어를 통해 서버에 저장되어 있는 자료를 얻고, 수정하는 작업을 수행할 수 있는 사용자 도구이다. iSQL의 주요 기능 알티베이스의 구동 및 종료 기능 알티베이스 서버의 구동 및 종료 등의 데이터 베이스 관리를 하기 위해서 여러 개의 커맨드라인 명령어를 사용하는 대신에, iSQL 하나의 도구만을 사용하면 된다. 데이터베이스 접속 및 해제 기능 알티베이스 구동 이후 데이터베이스 접속 시 다양한 사용자명으로의 접속 및 해제가 가능하다. 데이터베이스 객체 정보 조회 기능 iSQL에서는 데이터베이스 객체에 대한 모든 정보를 SQL문으로 조회할 수 있으며, 주요 객체에 대해서는 간편한 조회 명령어를 지원한다. SQL문 수행을 통한 데이터베이스 관리 기능 iSQL을 사용해 모든 SQL문을 수행할 수 있도록 지원하므로 트랜잭션 제어, 데이터베이스 변경 등을 빠르고 간편하게 수행할 수 있다. 사용자 편의 기능 위의 기능을 쉽고 편리하게 수행할 수 있도록 파일 처리 기능, 에디터 기능, iSQL상에서의 쉘 명령어 수행 기능, HISTORY 기능 등을 지원한다. iSQL 이용방법 3 iSQL 설정 iSQL은 서버에 접속하기 위해서 다음과 같은 정보가 필요하다. ALTIBASE_XDB_HOME 서버 혹은 클라이언트가 설치된 경로 server_name 알티베이스 서버가 구동되어 있는 컴퓨터 서버의 이름(또는 IP 주소) port_no TCP 또는 IPC로 접속할 때 사용할 포트 번호 user_id 데이터베이스에 등록된 사용자 ID password 사용자 ID와 일치하는 암호 NLS_USE 데이터 검색 시, 사용자에게 보여주는 문자 집합 ALTIBASE_XDB_HOME은 환경 변수로 설정하도록 되어있으며, 나머지는 커맨드 라인 옵션을 통해서 설정할 수 있도록 되어 있다. (자세한 내용은 “iSQL 커맨드 라인 옵션”을 참고한다.) ALTIBASE_XDB_HOME은 iSQL을 사용하기 위해서 반드시 설정해야 하는 환경 변수이다. 윈도우의 경우, 서버가 설치될 때 자동으로 설정되는데 클라이언트의 경우에는 사용자가 직접 설정해야 한다. 설정되지 않았을 경우에는 올바르게 동작하지 않을 수 있으므로 실행 전에 올바르게 설정되어 있는지 확인할 것을 권한다. port_no와 NLS_USE는 환경 변수 또는 서버 설정 파일(altibase_xdb.properties)을 이용해서 설정할 수도 있다. 세 가지 방법으로 모두 설정되어 있을 경우 적용 우선 순위는 다음과 같다. 1. 커맨드 라인 옵션 2. 환경 변수(ALTIBASE_XDB_WSERVER_PORT_NO, ALTIBASE_XDB_NLS_USE) 3. 서버 설정 파일(altibase_xdb.properties) 그러므로 이미 설정된 값과 다른 옵션으로 연결하고자 할 경우, 커맨드 라인 옵션을 사용하면 서버 설정 파일이나 환경 변수를 변경하지 않아도 된다. 옵션이 설정되어 있지 않을 경우에는 iSQL이 처음 실행될 때 옵션 4 iSQL User’s Manual 입력 프롬프트를 띄우고 사용자에게서 해당 값을 입력 받는다. 이 때 바르지 않은 형식이나 유효하지 않은 값을 입력할 경우, iSQL은 올바르게 동작하지 않을 수도 있다. 특히 NLS_USE 옵션은 사용자가 설정하지 않았더라도 실행 시에 입력 프롬프트가 나타나지 않는다. 만약 사용자가 NLS_USE 옵션을 설정하지 않았다면 기본값인 US7ASCII를 이용해 접속을 시도한다. 이 때 데이터베이스의 캐릭터 셋이 US7ASCII이 아닐 경우에는 바르게 실행되지 않거나 사용자 데이터가 일부 깨질 수 있으므로 반드시 NLS_USE를 사용 환경에 맞는 값으로 설정해야 한다. 원활한 iSQL 사용을 위해 다음 환경 변수를 설정할 것을 권장한다. ALTIBASE_XDB_HOME : 서버 혹은 클라이언트가 설치된 경로 ALTIBASE_XDB_WSERVER_PORT_NO : 서버에 접속할 때 사용할 포트 번호 ALTIBASE_XDB_NLS_USE : 데이터 검색 시, 사용자에게 보여주는 문자 집합 PATH : 실행 파일이 있는 경로인 $ALTIBASE_XDB_HOME/bin 추가 iSQL 이용방법 5 iSQL 커맨드 라인 옵션 iSQL을 실행하기 위해서는 반드시 알티베이스 서버를 먼저 구동 시켜야 한다. 옵션은 대문자 또는 소문자 모두 가능하다. xdbisql [-H] [-S server_name] [-U user_id] [-P password] [-SYSDBA] [-PORT port_no] [-UNIXDOMAIN-FILEPATH filepath] [-IPC-FILEPATH filepath] [-SILENT] [-F infile_name] [-O outfile_name] [-NLS_USE] [-NLS_NCHAR_LITERAL_REPLACE 0|1] [-prefer_ipv6] -S server_name 알티베이스 서버가 구동되어 있는 컴퓨터 서버의 이름(또는 IP 주소)을 명시한다. IPC로 접속할 때 이 옵션을 명시하면, 무시하고 에러를 반환하지 않는다. IPv4 주소 또는 IPv6 주소를 사용할 수 있다. IPv6 주소는 “[“과 “]”로 에워싸여야 한다. 예를 들어, localhost 를 명시하고자 할 때, 가능한 값은 다음과 같다. localhost (호스트 이름), 127.0.0.1 (IPv4주소), [::1] (IPv6주소) -U user_id 데이터베이스에 등록된 사용자 ID를 명시한다. -P password 사용자 ID와 일치하는 암호를 명시한다. -SYSDBA SYS 사용자가 관리자 모드로 iSQL 유틸리티를 사용하기 위해서 -SYSDBA 옵션을 사용할 수 있다. 서버가 구동되어 있는 상태에서 SYSDBA 모드로 iSQL을 실행하면, iSQL은 데몬 프로세스로 접속한다. 서버가 구동되어 있지 않다면, iSQL은 idle 인스턴스로 접속할 것이며, 그 상태에서 서버를 구동할 수 있다. -PORT port_no TCP로 접속할 때 해당 포트 번호를 명시한다. 먼저 클라이언트에서 환경 변수 ‘XDB_ISQL_CONNECTION=TCP’를 설정하고, - PORT 옵션에 접속할 포트 번호를 입력한다. XDB_ISQL_CONNECTION 환경 변수의 값이 IPC가 아닌 경우에 -PORT 옵션을 생략한다면, 6 iSQL User’s Manual ALTIBASE_XDB_WSERVER_PORT_NO와 WSERVER_PORT_NO 프로퍼티를 차례로 참조하고 모두 설정되어 있지 않다면, 포트 번호 입력 프롬프트가 출력된다. -UNIXDOMAIN-FILEPATH filepath 유닉스 환경에서 서버와 클라이언트가 유닉스 도메인 소켓으로 접속할 때 (XDB_ISQL_CONNECTION=UNIX), ALTIBASE_XDB_HOME이 서로 다르다면 유닉스 도메인의 소켓 경로가 다르게 되어 접속이 불가능하다. 이 때 서버와 클라이언트가 같은 파일 (e.g. ALTIBASE_XDB_HOME/conf/cm-unixw)을 사용하도록 하면, 유닉스 도메인 통신이 가능해진다. -IPC-FILEPATH filepath 유닉스 환경에서 서버와 클라이언트가 IPC로 접속 (XDB_ISQL_CONNECTION=IPC)할 때, ALTIBASE_XDB_HOME이 서로 다르다면 유닉스 도메인의 소켓 경로가 다르게 되어 접속이 불가능하다. 이 때 ALTIBASE_XDB_HOME/conf/cm-ipcw 파일을 이용하면, 유닉스 도메인 통신이 가능해져 공유 메모리의 정보를 가져올 수 있다. 그러나 이 옵션은 환경변수 ALTIBASE_XDB_WSERVER_IPC_FILEPATH를 설정하였다면, 생략해도 된다. -F infile_name iSQL 실행 후 바로 실행할 스크립트 파일을 명시한다. -O outfile_name iSQL 실행 후 실행한 명령들에 대한 결과들을 저장할 파일을 명시한다. 이 파일은 현재 디렉터리에 생성된다. 파일이 기존에 존재할 경우, 기존 내용 위에 겹쳐 쓴다. -H iSQL의 실행 방법을 보여준다. -SILENT silent 모드를 켜는 옵션이다. silent 모드를 켜면 Copyright 등의 부가적인 설명들을 보여주지 않는다. iSQL 이용방법 7 -NLS_USE 데이터 검색 시, 사용자에게 보여주는 문자 집합(Character Set)이다. iSQL을 실행하는 터미널의 encoding을 명시하여 준다. US7ASCII KO16KSC5601 MS949 BIG5 GB231280 UTF8 SHIFTJIS EUCJP 생략 시 환경변수 ALTIBASE_XDB_NLS_USE, altibase_xdb.properties를 차례로 참조하며, 설정되지 않았을 경우에는 기본 문자 집합 (US7ASCII)을 사용한다. -NLS_NCHAR_LITERAL_REPLACE 0 : “N” 문자가 있는지 검사하지 않고 쿼리 문 전체를 데이터베이스 문자 셋으로 변환한다. 1 : “N” 문자가 붙어있는 NCHAR 리터럴은 데이터베이스 문자 셋으로 변환하지 않는다. -prefer_ipv6 -S 옵션으로 호스트 이름을 입력했을 때, 접속할 IP 주소의 버전을 결정하는 옵션이다. 이 옵션을 명시하면, 호스트 이름을 IPv6 주소로 바꾸어 접속한다. 이 옵션을 명시하지 않으면, xdbisql은 IPv4 주소로 접속한다. 선호하는 버전의 IP 주소로의 접속이 실패하면, 다른 IP 버전 주소로 접속을 다시 시도한다. 예를 들어, -S 옵션에 “localhost”를 입력하고 이 옵션을 명시하면, xdbisql 은 처음에 IPv6 주소인 [::1]로 접속하고, 이 접속이 실패하면 IPv4 주소인 127.0.0.1로 접속을 다시 시도한다. 위의 커맨드 라인 중 -S, -U, -P 옵션이 빠져 있는 경우에는 입력 프롬프트가 출력되어 사용자에게 그 옵션값을 받는다. 8 iSQL User’s Manual iSQL 명령어 iSQL을 실행 시키면 iSQL 명령어 실행을 위한 프롬프트가 나오고, 이곳에 iSQL 명령어들을 입력하면 그 결과를 보여주는 형태로 프로그램이 동작한다. 아래의 표에 iSQL 각각의 명령에 대해 설명하였다. 분류 종류 명령어 설명 iSQL 구 동 및 종 료 구동 $ xdbisql [option] 쉘 상에서 이 명령어를 수행하면 iSQL이 구 동된다. 사용 가능한 옵션에 대해서는 iSQL 커맨드 라인 옵션 절의 내용을 참조한다. 프롬프트 xdbiSQL> iSQL 프롬프트로 명령어 입력 후 ENTER 키 를 입력한다. 종료 EXIT; QUIT; iSQL을 종료한다. 알티베이 스의 구 동 및 종 료 알티베이 스 구동 STARTUP PRE-PROCESS, PROCESS, CONTROL, META, SERVICE 중 하나의 옵션을 이용하여 알티베이스의 다단계 구동을 수행한다. 알티베이 스 종료 SHUTDOWN NORMAL, IMMEDIATE, ABORT 중 하나의 옵션을 사용하여 알티베이스를 종료한다. 데이터베 이스 접 속 및 해 제 다른 사 용자로 서버에 접속 CONNECT [logon] [nls] [AS sysdba]; logon: user1/pass1 nls: NLS=character_set iSQL에서 데이터베이스 접속 후 다른 사용자 로 접속하기 위한 명령어로 패스워드 pass1 을 가진 user1이라는 사용자로 접속한다. 접 속이 성공하면 이전 세션과 관련된 정보는 지워진다. AS 절은 SYS 사용자가 sysdba 관리자 모드 로 서버에 접속하는 것을 허용한다. sysdba 로 접속하는 것은 한 사용자만 허용된다. nls 옵션은 문자 집합을 설정한다. 문자집합 에 대한 자세한 설명은 위의 절 iSQL 커맨드 라인 옵션: -NLS_USE 옵션을 참조하기 바란 다. 접속해제 DISCONNECT; 현재 세션을 종료하고 서버와의 연결을 끊는 다. 데이터베 이스 객 체 정보 성능 뷰 목록 보 기 SELECT * FROM V$TAB; 시스템이 제공하는 모든 성능 뷰 목록을 보 여준다. 이 명령어는 iSQL에서만 사용가능 하다. iSQL 이용방법 9 분류 종류 명령어 설명 조회 테이블 목록 보 기 SELECT * FROM TAB; 현재 생성된 테이블의 목록을 보여준다. 이 명령어는 iSQL에서만 사용가능 하다. 테이블 구조 보 기 DESC samp; samp 테이블의 구조를 보여준다. 시퀀스 정보 보 기 SELECT * FROM V$SEQ; SYS 계정으로 서버에 접속한 경우 모든 시 퀀스 들의 정보를 보여준다. 일반 사용자로 서버에 접속한 경우는 그 사 용자가 생성한 시퀀스들에 대한 정보만 보여 준다. 이 명령어는 iSQL에서만 사용가능 하다. 트랜잭션 제어 트랜잭션 모드 설 정 AUTOCOMMIT ON; AUTOCOMMIT OFF; 트랜잭션 커밋을 자동으로 할 것인지를 결정 한다. 기본값: ON 기타 SET 기능 SET PLANCOMMIT ON; SET PLANCOMMIT OFF; AUTOCOMMIT OFF 모드에서 EXPLAIN PLAN이 ON (또는 ONLY) 조건일 때, DESC, SELECT * FROM TAB; 또는 SELECT * FROM seq_name; 등과 같은 명령어를 수행 했을 때 자동으로 commit 할지를 결정한다. 기본값: OFF 파일 관 리 파일로 자료 출 력 SPOOL filename; 화면에 보여지는 결과를 filename에 기록하 기 시작한다. SPOOL OFF; 화면에 보여지는 결과를 filename에 기록하 던 것을 중지한다. sql script 의 실행 START file_name; script 파일을 읽어, 파일 내의 SQL문들을 순차적으로 수행한다. @ file_name; iSQL 프롬프트 상에서 수행 시 start와 동일 한 기능을 갖는다. @@ file_name; 스크립트 파일 안에서 사용될 때 호출을 한 스크립트 파일이 위치하는 디렉터리에서 파 일을 찾아서 수행한다. SQL문 파일 저SAVE abc.sql; 현재 iSQL 버퍼에 있는 명령어 중 가장 마지 막 명령어가 파일로 저장된다. 10 iSQL User’s Manual 분류 종류 명령어 설명 장 SQL문의 load LOAD abc.sql; 파일에 저장되어 있는 명령어 중 가장 첫 번 째 명령어가 명령어 버퍼의 마지막으로 로드 된다. DML문을 파일로 저장 SET QUERYLOGGING ON; SET QUERYLOGGING OFF: INSERT, UPDATE, DELTE, MOVE 등의 DML문 실행 시 이를 $ALTIBASE_XDB_HOME/trc/isql_query.log 에 기록한다. 질의문 편집 ED 임시 파일을 생성하고 편집 ED filename[.sql] 기존 파일 또는 새로운 파일을 편집 2ED 또는 2 ED 히스토리 목록에 있는 번호가 2인 질의문을 편집한다. 출력 옵 션 제어 Select 결 과의 칼럼 포 맷팅 SET LINESIZE 100; select 결과 출력 시 디스플레이 되는 한 라 인의 사이즈를 설정한다. 10 에서 32767 사 이의 값이어야 한다. 기본값: 80 Select 결 과의 Clob 칼 럼 포맷 팅 SET LOBSIZE 10; CLOB 칼럼을 출력 시 디스플레이 되는 데이 터의 길이를 설정한다. 기본값: 80 SET LOBOFFSET 3; CLOB 칼럼을 출력 시 디스플레이 되는 데이 터의 오프셋을 설정한다. 기본값: 0 Select 결 과 건수 출력 SET FEED[BACK] ON; SET FEED[BACK] OFF; SET FEED[BACK] n; 쿼리 실행결과 건수의 출력여부를 설정한다. select 결 과의 row 포 매팅 SET PAGESIZE 10; select 결과 레코드들을 몇 개 단위로 출력할 지를 결정하는 명령어로 `0`으로 설정할 경우 결과 레코드 전체를 한꺼번에 출력한다. 기본값: 0 select 결 과의 헤 SET HEADING ON; SET HEADING select 결과 출력 시 헤더 출력 유무 기본값: ON iSQL 이용방법 11 분류 종류 명령어 설명 더 유무 OFF; select 결 과 칼럼 의 출력 사이즈 조절 SET COLSIZE N; CHAR, VARCHAR 타입 칼럼의 select 결과 출력 시 출력 값 사이즈 설정 기능 SQL문 실행시간 SET TIMING ON; SET TIMING OFF; SQL 명령 실행에 걸린 시간 출력유무 기본값: OFF SQL문 실행시간 출력 단 위 설정 SET TIMESCALE SEC; SET TIMESCALE MILSEC; SET TIMESCALE MICSEC; SET TIMESCALE NANSEC; SQL문의 쿼리 수행 시간 단위를 초, 밀리초, 마이크로초, 나노초 등으로 설정한다. foreign key 정보 출력의 유무 SET FOREIGNKEYS ON; SET FOREIGNKEYS OFF; 테이블 구조(DESC)를 볼 때 외래 키 정보 포함 출력 여부 설정. 기본값: OFF 스크립트 실행 결 과의 출 력 유무 SET TERM ON; SET TERM OFF; 스크립트 파일 실행의 결과를 화면상에 보여 줄지를 결정한다. 기본값: ON 실행 계 획 트리 출력 ALTER SESSION EXPLAIN PLAN = ON; ALTER SESSION EXPLAIN PLAN = ONLY; ALTER SESSION EXPLAIN PLAN = SELECT문에 대한 실행 계획의 출력 여부를 설정한다. 기본값: OFF 12 iSQL User’s Manual 분류 종류 명령어 설명 OFF; SELECT 결과 출 력 방향 SET VERTICAL ON; SET VERTICAL OFF; 레코드를 조회할 때 이 값을 ON으로 설정하 면, SELECT의 결과가 세로로 보여진다. 기본값: OFF iSQL 화면 설 정 값 보 기 SHOW LINESIZE 현재의 LINESIZE 값을 보여준다. SHOW COLSIZE 현재의 COLSIZE 값을 보여준다. SHOW LOBOFFSET 현재의 LOBOFFSET 값을 보여준다. SHOW LOBSIZE 현재의 LOBSIZE 값을 보여준다. SHOW PAGESIZE 현재의 PAGESIZE 값을 보여준다. SHOW PLANCOMMIT AUTOCOMMIT OFF 모드에서 명령어를 수 행할 때 자동으로 커밋되는 여부를 보여준 다. SHOW QUERYLOGGING DML 문이 실행될 때 $ALTIBASE_XDB_HOME/trc/isql_query.log 에 기록되는지 여부를 보여준다. SHOW FEEDBACK 현재 설정된 FEEDBACK 값을 보여준다. SHOW HEADING 현재의 HEADING 설정 여부를 보여준다. SHOW TERM 현재 TERM 설정 여부를 보여준다. SHOW TIMING 현재의 TIMING 설정 여부를 보여준다. SHOW TIMESCLAE 현재의 SQL문의 쿼리 수행 시간 단위가 무 엇으로 설정되었는지를 보여준다. SHOW USER 현재 사용자를 보여준다. SHOW FOREIGNKEYS 현재의 외래 키 설정 여부를 보여준다. SHOW VERTICAL 현재의 SELECT 결과가 세로로 출력되는지 여부를 보여준다. SHOW ALL 현재 세션의 화면 설정 값을 보여준다. 변수 및 변수 선VAR p1 INTEGER; INTEGER 타입의 변수 p1을 선언한다. iSQL 이용방법 13 분류 종류 명령어 설명 Prepared SQL문 언 VARIABLE p2 CHAR(10); CHAR 타입의 변수 p2를 선언한다. 변수에 값 할당 EXECUTE :p1 := 100; 변수 p1에 100을 할당한다. EXEC :p2 := 'abc'; 변수 p2에 ‘abc’를 할당한다. 변수 보 기 PRINT VAR[IABLE]; 현재 선언된 변수들을 보여준다. PRINT p1; 변수 p1의 타입과 값을 보여준다. Prepared SQL문 수행 PREPARE SQL문; Prepared SQL문으로 질의 최적화 과정과 실 행 과정을 나누어 수행하게 한다. iSQL에서의 SQL문 수행은 기본적으로 최적 화와 실행을 한번에 수행하는 Direct Execution 방법이다. iSQL 상에서 두 가지 수행 방법에 대한 결과 에는 차이가 없으며 Prepared SQL문의 경우 변수를 사용해 값을 바인딩 하여 SQL문 수 행이 가능하다. 사용자 편의 기 능 히스토리 목록 보 기 HISTORY; H; 현재 iSQL buffer에 저장되어 있는 명령어들 의 목록을 보여준다. 반복 실 행 / 현재 iSQL buffer의 명령어를 반복하여 실행 한다. 가장 최근에 수행한 명령어가 다시 실 행된다. 2/ HISTORY 명령에 의해 나타난 목록의 번호가 2인 명령어가 실행된다. 쉘 명령 실행 ! shell command 느낌표 다음에 쉘 명령을 입력하면 iSQL에서 바로 쉘 명령이 실행된다. 주석 /* comment */ -- comment 여러 라인 주석 한 라인 주석 도움말 HELP; HELP INDEX; HELP EXIT; 도움말 사용법 명령어 리스트 출력 EXIT 명령어에 대한 설명 14 iSQL User’s Manual iSQL 관련 환경변수 ALTIBASE_XDB_HOME 패키지가 설지된 디렉터리를 설정한다. MS 윈도우의 경우, 서버 설치 시에 자동으로 설정되지만, 클라이언트 설치 시에는 서버를 위한 환경 변수와 충돌이 있을 수 있으므로 자동으로 설정되지 않는다. 클라이언트 설치 시에는 사용자가 직접 설정해야 한다. ISQL 사용을 위해 반드시 설정해야 하는 환경변수이다. <예제> Windows (Server): ‘set ALTIBASE_XDB_HOME=C:/Program Files/Altibase/Altibase5_Server/altibase_xdb_home’, Windows (Client): ‘set ALTIBASE_XDB_HOME=C:/Program Files/Altibase/Altibase5_Client/altibase_xdb_home_client’) ALTIBASE_XDB_WSERVER_PORT_NO 접속할 서버의 포트 번호이다. -PORT 옵션 또는 altibase_xdb.properties 파일 내의 프로퍼티를 통해서 지정할 수도 있다. 포트 번호 설정의 우선 순위는 -PORT 옵션, 환경변수 ALTIBASE_XDB_WSERVER_PORT_NO, altibase_xdb.properties 파일 내의 WSERVER_PORT_NO 프로퍼티 순이며 아무것도 설정되지 않았을 경우에는 포트 번호 입력 프롬프트가 출력된다. ALTIBASE_XDB_NLS_USE 데이터 검색 시 사용자에게 보여주기 위해 사용되는 문자 집합이다. US7ASCII KO16KSC5601 MS949 BIG5 GB231280 iSQL 이용방법 15 UTF8 SHIFTJIS EUCJP -NLS_USE 옵션 또는 altibase_xdb.properties파일 내의 프로퍼티를 통해서 지정할 수도 있다. NLS_USE 설정의 우선 순위는 -NLS_USE 옵션, 환경 변수 ALTIBASE_XDB_NLS_USE, altibase_xdb.properties 파일 내의 프로퍼티 순이며 설정되지 않았을 경우에는 기본 문자 집합(US7ASCII)을 사용한다. ALTIBASE_XDB_NLS_NCHAR_LITERAL_REPLACE 기본적으로 클라이언트는 쿼리 문 전체를 데이터베이스 문자 셋으로 변환하여 전송한다. 그러나, 특정 리터럴에 대해 이런 동작을 막으려면, 이 환경 변수의 값을 1로 설정하고 그 리터럴 앞에 “N” 문자를 덧붙이면 된다. 즉, NCHAR 리터럴로 만드는 것이다. 이 환경 변수의 값이 1일 때, 클라이언트는 쿼리 문 내의 모든 리터럴 앞에 “N” 문자가 있는지 찾는다. 만약 찾게 되면 클라이언트는 그 리터럴을 데이터베이스 문자 셋으로 변환하지 않고 그대로 전송하며 서버가 직접 내셔널 문자 셋으로 변환한다. 이것은 데이터베이스 문자 셋과는 다른 인코딩이 필요한 NCHAR 타입 데이터를 사용하고자 할 때 유용하다. 0: “N” 문자가 있는지 검사하지 않고 쿼리 문 전체를 데이터베이스 문자 셋으로 변환한다. 1: “N” 문자가 붙어있는 NCHAR 리터럴은 데이터베이스 문자 셋으로 변환하지 않는다. 이 값을 1로 설정하는 것은 클라이언트의 비용이 크게 발생하므로, 사용시 주의가 필요하다. XDB_ISQL_CONNECTION 알티베이스를 클라이언트-서버 구조로 운영할 때, 사용자는 응용 시스템의 구성에 적합한 클라이언트-서버 프로토콜을 선택하여 환경 변수를 설정할 수 있다. 클라이언트-서버 구조의 운영을 위해 알티베이스 XDB는 TCP/IP, IPC와 UNIX DOMAIN 소켓 프로토콜을 제공한다. 여기에 더해서 XDB는 DA (Direct Attach) 모드 접속을 16 iSQL User’s Manual 허용하는데, 이 모드를 사용하기 위해서는 XDB_ISQL_CONNECTION 환경 변수의 값을 DA로 설정해야 한다. 알티베이스 XDB 서버와 통신하기 위한 기본값은 TCP/IP 프로토콜이다. 단, IPC 프로토콜을 이용할 경우엔 알티베이스 프로퍼티들 중에서 IPC 채널과 관련된 프로퍼티들의 값(WSERVER_IPC_CHANNEL_COUNT)도 함께 고려해야 한다. 예) IPC 사용시 환경 변수 설정 CSH: setenv XDB_ISQL_CONNECTION IPC SH: XDB_ISQL_CONNECTION=IPC; export XDB_ISQL_CONNECTION 예2> DA 모드로 접속 시 환경 변수 설정 CSH: setenv XDB_ISQL_CONNECTION DA SH: XDB_ISQL_CONNECTION=DA; export XDB_ISQL_CONNECTION XDB_ISQL_BUFFER_SIZE 쿼리를 저장할 버퍼의 크기를 환경변수를 이용하여 지정할 수 있다. 예) CSH: setenv XDB_ISQL_BUFFER_SIZE 128000 SH: XDB_ISQL_BUFFER_SIZE = 128000; export XDB_ISQL_BUFFER_SIZE ALTIBASE_XDB_DATE_FORMAT Date 데이터 타입인 data를 select 시 기본 날짜 형식인 YYYY/MM/DD HH:MI:SS을 환경변수 ALTIBASE_XDB_DATE_FORMAT을 설정하여 새로운 날짜 형식으로 나타낼 수 있다. 예) Born, Korn, 또는 Bash Shell의 경우 export ALTIBASE_XDB_DATE_FORMAT=’DD-MON-YYYY’ XDB_ISQL_EDITOR 기본 편집기 (윈도우: 메모장, 그 외: /bin/vi )를 바꾸기 위한 환경변수를 설정할 수 있다. 예) CSH: setenv XDB_ISQL_EDITOR /usr/bin/ed SH: XDB_ISQL_EDITOR=/usr/bin/ed; export XDB_ISQL_EDITOR ALTIBASE_XDB_WSERVER_IPC_FILEPATH iSQL 이용방법 17 유닉스 환경에서 클라이언트가 IPC로 서버에 접속할 때 ALTIBASE_XDB_HOME 환경 변수 값이 서로 다른 경우, 유닉스 도메인의 소켓 경로가 일치하지 않아 접속할 수 없다. 이 때 클라이언트 측의 ALTIBASE_XDB_WSERVER_IPC_FILEPATH 환경 변수 또는 -IPC_FILEPATH iSQL 옵션을 서버의 $ALTIBASE_XDB_HOME/conf/cm-ipcw파일로 설정하여 서버와 클라이언트가 같은 소켓 파일을 사용하도록 하면, IPC 접속이 가능하다. 18 iSQL User’s Manual 개인별 iSQL 환경 설정 iSQL 사용자들은 특별한 방법으로 iSQL 환경을 설정하고 각 세션에서 그러한 설정을 다시 사용할 수 있다. 예를 들어, OS 파일을 통하여 질의 결과마다 현재 시간을 출력할 수 있도록 사용자가 원하는 출력 서식 형태로 만들 수 있다. 이러한 파일은 다음과 같이 두 가지로 나눌 수 있다. glogin.sql iSQL 시작 시의 초기화 작업을 위하여 DB 관리자에 의해 생성된 전역 스크립트 파일인 glogin.sql의 사용을 지원한다. iSQL은 임의의 사용자가 iSQL을 기동할 때 마다 이 스크립트를 실행한다. 전역 파일은 DB 관리자가 모든 사용자들에게 특별한 사이트에서 iSQL 환경을 설정할 수 있도록 한다. 전역 스크립트 파일은 $ALTIBASE_XDB_HOME/conf 밑에 위치한다. login.sql iSQL은 또한 glogin.sql 후에 실행되는 login.sql 파일도 지원한다. 만약, glogin.sql 파일과 login.sql 파일이 모두 존재하는 경우 iSQL 구동 시 glogin.sql이 실행된 후 login.sql이 실행되므로 login.sql에 있는 명령어들로 우선수행 (override) 된다. 하나의 유닉스 계정을 여러 명이 사용할 경우에는 glogin.sql 파일을 개인적인 용도로 수정하기가 불가능할 수도 있다. 이런 경우 일반 사용자는 SQL 명령어들, 저장 프로시저, 또는 iSQL 명령어들을 각자의 개인용 작업 디렉터리 내에 login.sql 파일에 첨가할 수 있다. 사용자가 iSQL을 구동할 때, iSQL은 자동적으로 현재 디렉터리에서 login.sql 파일을 찾고, 그 안에 명령어들을 수행한다. login.sql 파일은 iSQL 초기 설정이나 각각의 세션에 대한 동작을 조정할 수 없다. LOGIN 파일 변경 사용자는 임의의 다른 스크립트들처럼 LOGIN 파일을 변경할 수 있다. 다음은 임의의 사용자(user1)가 autocommit mode를 off로 iSQL 이용방법 19 변경하고 SQL 문들을 실행하기 위하여 LOGIN 파일을 작성한 예이다. $ vi glogin.sql AUTOCOMMIT ON SET HEADING OFF SELECT sysdate FROM dual; $ vi login.sql AUTOCOMMIT OFF; SET HEADING ON DROP TABLE savept; CREATE TABLE savept(num INTEGER); INSERT INTO savept VALUES(1); SAVEPOINT sp1; INSERT INTO savept VALUES(2); SELECT * FROM savept; ROLLBACK TO SAVEPOINT sp1; SELECT * FROM savept; COMMIT; $ xdbisql ------------------------------------------------------- ALTIBASE XDB Client Query utility. Release Version 6.1.1.1 Copyright 2012, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : user1 Write Password : XDB_ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 Set autocommit on success. -> 먼저 glogin.sql을 실행 28-DEC-2004 -> heading off 1 row selected. Set autocommit off success. -> glogin.sql이 실행된 후 사용자의 현재 작업 디렉터리에서 login.sql을 실행 Drop success. Create success. 1 row inserted. Savepoint success. -> autocommit mode off 에서만 실행 가능 1 row inserted. SAVEPT.NUM -> heading on -------------- 1 2 2 rows selected. Rollback success. SAVEPT.NUM -------------- 1 1 row selected. Commit success. iSQL 사용 예 21 2. iSQL 사용 예 이 장은 iSQL을 이용하여 데이터베이스를 다루는 몇 가지 예를 설명한다. 22 iSQL User’s Manual 로그인 iSQL 유틸리티를 사용하기 위해서는 먼저 로그인 과정을 거쳐야 하는데, 커맨드 라인 상에서 직접 연결 정보를 입력하는 방법과 입력 프롬프트 상에서 입력하는 방법이 있다. xdbisql -U userID -P password [-SYSDBA] 또는 xdbisql [-SYSDBA] 서버와 연결하기 위한 부가 정보로는 서버 이름(-S), 사용자 ID(-U), 패스워드(-P)가 있다. 사용자 ID와 패스워드는 대소문자를 구별하지 않는다. SYS 사용자가 관리자 모드로 iSQL 유틸리티를 사용하기 위해서는 - SYSDBA 옵션을 사용한다. SYSDBA 옵션으로 원격에서도 접속이 가능하다. 제한 사항 SYSDBA 모드로 접속하는 것은 한 명의 사용자만 허용된다. 2명 이상의 사용자가 동시에 SYSDBA 모드로 접속할 수 없다. 원격에서 SYSDBA 모드로 접속할 수 있지만, DBMS를 구동할 수는 없다. 시스템 권한에 대한 자세한 정보는 SQL Reference 을 참조하기 바란다. iSQL 사용 중 발생하는 에러에 대한 자세한 정보는 Error Message Reference를 참조하기 바란다. $ xdbisql -U sys -P manager [-SYSDBA] 또는 $ xdbisql [-sysdba] ------------------------------------------------------- ALTIBASE XDB Client Query utility. Release Version 6.1.1.1 Copyright 2012, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : sys Write Password : manager -> 화면에는 암호가 나타나지 않는다. XDB_ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL 사용 예 23 xdbiSQL(sysdba)> -> iSQL이 서버와 연결된 상태이며, 여기에서 SQL, iSQL, PSM 명령등을 입력하여 실행할 수 있다. 24 iSQL User’s Manual 알티베이스의 구동 및 종료 알티베이스의 구동 및 종료는 iSQL을 사용해 수행한다. 알티베이스 구동 알티베이스를 구동시키기 위해서는 데이터베이스 생성 시와 마찬가지로 우선 xdbisql을 -sysdba 옵션으로 띄워야 한다. * 알티베이스의 startup 명령어는 알티베이스(xdbisql 포함)를 설치한 유닉스 계정으로만 수행이 가능하다. 다음은 iSQL를 이용한 알티베이스 구동 예제이며 알티베이스 구동에 대한 자세한 설명은 Administrator’s Manual 제2장 알티베이스 구동 및 종료의 내용을 참조한다. $ xdbisql -s 127.0.0.1 -u sys -p manager -sysdba ------------------------------------------------------- ALTIBASE XDB Client Query utility. Release Version 6.1.1.1 Copyright 2012, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- XDB_ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1 [ERR-910FB : Connected to idle instance] xdbiSQL(sysdba)> startup service Connecting to the DB server..... Connected. TRANSITION TO PHASE : PROCESS TRANSITION TO PHASE : CONTROL TRANSITION TO PHASE : META [SM] Recovery Phase - 1 : Preparing Database : Created Shared Memory Version => Parallel Loading [SM] Recovery Phase - 2 : Loading Database [SM] Recovery Phase - 3 : Skipping Recovery Threads... [SM] Refine Memory Table : ................................................... ............................................... [SUCCESS] [SM] Rebuilding Indices [Total Count:116] ................................................ ........................................................... ......... [SUCCESS] TRANSITION TO PHASE : SERVICE [CM] Listener started : TCP on port 20300 [IPV4] [CM] Listener started : UNIX [QP-PREPARE] PSM loading......... [SUCCESS] iSQL 사용 예 25 --- Begin to execute Replication Manager --- TRANSITION TO PHASE : PROCESS TRANSITION TO PHASE : CONTROL TRANSITION TO PHASE : META TRANSITION TO PHASE : SERVICE [QP-PREPARE] PSM loading......... [SUCCESS] [RP] Initialization : [PASS] --- Replication Manager Starts SUCCESS --- [RP] Initialization : [PASS] --- Begin to execute WServer --- TRANSITION TO PHASE : PROCESS TRANSITION TO PHASE : CONTROL TRANSITION TO PHASE : META TRANSITION TO PHASE : SERVICE [CM] Listener started : TCP on port 20302 [IPV4] [CM] Listener started : UNIX [CM] Listener started : IPC [QP-PREPARE] PSM loading......... [SUCCESS] [RP] Initialization : [PASS] --- WServer Start SUCCESS --- --- STARTUP Process SUCCESS --- Command executed successfully. 알티베이스 종료 현재 구동중인 알티베이스 서버를 종료하려면 SHUTDOWN 명령어를 사용한다. 다음은 iSQL를 이용한 알티베이스 종료 예제이며 알티베이스 종료에 대한 자세한 설명은 Administrator’s Manual 제2장 알티베이스 구동 및 종료의 내용을 참조한다. xdbiSQL(sysdba)> shutdown normal Ok..Shutdown Proceeding.... TRANSITION TO PHASE : Shutdown Altibase shutdown normal success. 26 iSQL User’s Manual 접속 연결 및 해제 접속 연결 명시된 사용자 ID로 알티베이스에 연결한다. 첫 연결 실패 시 CONNECT 명령어는 사용자 ID나 패스워드를 다시 프롬프트(prompt) 하지 않는다. CONNECT [logon] [nls] [AS SYSDBA]; logon: userID[/password] nls: NLS=character_set userID/password 알티베이스에 연결하고자 하는 사용자의 id와 패스워드 NLS=character_set 문자집합 xdbiSQL> CONNECT sys/manager NLS=US7ASCII Connect success. AS SYSDBA AS 절은 SYS 사용자가 sysdba 관리자 모드로 서버에 접속하는 것을 허용한다. CONNECT가 성공하면 현재의 세션을 종료하고 명시된 사용자 ID와 패스워드, altibase_xdb.properties 내의 프로퍼티 정보를 사용해서 서버에 접속한다. 따라서 이전의 세션 정보는 없어진다. 예를 들어 altibase_xdb.properties의 AUTOCOMMIT 모드가 TRUE였고, iSQL에서 AUTOCOMMIT 모드를 FALSE로 변경하여 쿼리를 수행하다가 이 CONNECT문을 수행하였다면 AUTOCOMMIT 모드는 altibase_xdb.properties 의 AUTOCOMMIT 프로퍼티에 의하여 TRUE로 변경된다. CONNECT가 실패한다면 이전의 세션은 종료되고 서버와의 연결이 끊어진 상태가 된다. 즉, 이후에 수행되는 SQL문의 결과는 모두 “Not connected.” 이다. 만약, 다시 서버와 연결을 시도할 때는 CONNECT userID/password [AS SYSDBA];를 수행한다. $ xdbisql ------------------------------------------------------- ALTIBASE XDB Client Query utility. iSQL 사용 예 27 Release Version 6.1.1.1 Copyright 2012, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : SYS Write Password : XDB_ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 xdbiSQL> SHOW USER; User : SYS xdbiSQL> CREATE USER altiadmin IDENTIFIED BY altiadmin1234; Create success. xdbiSQL> CONNECT altiadmin/altiadmin1234; Connect success. xdbiSQL> SHOW USER; User : ALTIADMIN xdbiSQL> CREATE TABLE altitbl(i1 INTEGER, i2 CHAR(5)); Create success. xdbiSQL> SELECT * FROM tab; TABLE NAME TYPE --------------------------------------------- ALTITBL TABLE . . . 33 row selected. xdbiSQL> CONNECT sys/manager; Connect success. xdbiSQL> SHOW USER; User : SYS xdbiSQL> CREATE TABLE systbl(i1 INTEGER, i2 CHAR(5)); Create success. xdbiSQL> SELECT * FROM tab; USER NAME TABLE NAME TYPE ----------------------------------------------- SYSTEM_ SYS_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINTS_ SYSTEM TABLE . . . ALTIADMIN ALTITBL TABLE. SYS SYSTBL TABLE . . . 93 rows selected. 접속 해제 현재 세션을 종료하고 서버와의 연결을 끊는다. 이후에 수행되는 SQL문의 결과는 모두 “Not connected.”이며, 다시 서버와 연결을 시도할 때는 CONNECT userID/password;를 수행한다. DISCONNECT; xdbiSQL> INSERT INTO systbl VALUES(1, 'A1'); 1 row inserted. xdbiSQL> INSERT INTO systbl VALUES(2, 'A2'); 1 row inserted. xdbiSQL> SELECT * FROM systbl; SYSTBL.I1 SYSTBL.I2 28 iSQL User’s Manual -------------------------- 1 A1 2 A2 2 rows selected. xdbiSQL> DISCONNECT; Disconnect success. xdbiSQL> INSERT INTO systbl VALUES(3, 'A3'); [ERR-91020 : No Connection State] xdbiSQL> SELECT * FROM systbl; [ERR-91020 : No Connection State] xdbiSQL> CONNECT sys/manager; Connect success. iSQL 사용 예 29 데이터베이스와 객체 정보 조회 성능 뷰 조회 성능 뷰는 서버의 상태 및 데이터베이스 정보를 조회할 수 있는 데이터 딕셔너리 테이블의 일종으로 알티베이스가 제공하는 성능 뷰의 목록을 확인하기 위해서는 다음 명령어를 사용한다. xdbiSQL> SELECT * FROM V$TAB; TABLE NAME TYPE --------------------------------------------- V$ALLCOLUMN PERFORMANCE VIEW V$ARCHIVE PERFORMANCE VIEW V$BUFFPOOL_STAT PERFORMANCE VIEW V$DATABASE PERFORMANCE VIEW V$DATAFILES PERFORMANCE VIEW V$DISKGC PERFORMANCE VIEW V$DISKTBL_INFO PERFORMANCE VIEW V$FLUSHINFO PERFORMANCE VIEW . 알티베이스가 제공하는 전체 성능 뷰의 목록과 칼럼의 의미 등은 General Reference 의 데이터 딕셔너리 설명을 참조한다. 각 성능 뷰의 데이터는 일반 테이블 조회와 동일한 SELECT문을 사용하여 조회할 수 있으며 조인 등을 사용해 다양한 형태로 결과를 출력할 수 있다. 테이블 목록 보기 데이터베이스에 존재하는 모든 테이블에 대한 정보를 알고 싶으면 아래와 같은 명령을 사용하면 된다. sys_tables_ 메타 테이블은 알티베이스에서 제공하는 데이터베이스 카탈로그 정보를 수록하는 시스템 내부 테이블이다. xdbiSQL> SELECT * FROM system_.sys_tables_; . . xdbiSQL> SELECT * FROM tab; -> 이 명령어는 iSQL 에서만 사용가능. USER NAME TABLE NAME TYPE ----------------------------------------------- . .. 테이블 구조 보기 30 iSQL User’s Manual 사용자가 생성한 테이블에 관한 정보를 알고 싶으면 아래와 같은 명령을 사용한다. DESC table_name; CREATE TABLE department ( DNO SMALLINT PRIMARY KEY, DNAME CHAR(30) NOT NULL, DEP_LOCATION CHAR(9), MGR_NO INTEGER ); xdbiSQL> DESC department; -> table_name: 테이블 정보(테이블 구조)를 알고 싶은 테이블명. [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ----------------------------------------------------------- NAME TYPE IS NULL ----------------------------------------------------------- DNO SMALLINT FIXED NOT NULL DNAME CHAR(30) FIXED NOT NULL DEP_LOCATION CHAR(9) FIXED MGR_NO INTEGER FIXED [ INDEX ] ----------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- __SYS_IDX_ID_122 BTREE UNIQUE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- DNO 시퀀스 정보 보기 데이터베이스에 존재하는 모든 시퀀스에 대한 정보를 알고 싶으면 아래와 같은 명령을 사용하면 된다. SELECT * FROM seq; xdbiSQL> CONNECT sys/manager; Connect success. xdbiSQL> CREATE USER user1 IDENTIFIED BY user1; Create success. xdbiSQL> CONNECT user1/user1; Connect success. xdbiSQL> CREATE SEQUENCE seq1 MAXVALUE 100 CYCLE; Create success. xdbiSQL> CREATE SEQUENCE seq2; Create success. xdbiSQL> CONNECT sys/manager; Connect success. xdbiSQL> CREATE SEQUENCE seq2 START WITH 20 INCREMENT BY 30; Create success. xdbiSQL> CREATE SEQUENCE seq3 CACHE 40; Create success. xdbiSQL> SELECT * FROM seq; -> SYS 계정으로 데이터베이스에 접속한 경우 생성된 모든 sequence 들의 정보를 출력한다. USER_NAME iSQL 사용 예 31 -------------------------------------------- SEQUENCE_NAME CURRENT_VALUE INCREMENT_BY ------------------------------------------------ MIN_VALUE MAX_VALUE CYCLE CACHE_SIZE ------------------------------------------------ SYS SEQ2 20 30 1 9223372036854775806 NO 20 SYS SEQ3 1 1 1 9223372036854775806 NO 40 USER1 SEQ1 1 1 1 100 YES 20 USER1 SEQ2 1 1 1 9223372036854775806 NO 20 4 rows selected. xdbiSQL> CONNECT user1/user1; Connect success. xdbiSQL> SELECT * FROM seq; -> user1이 생성한 모든 sequence 들의 정보를 출력한다. SEQUENCE_NAME CURRENT_VALUE INCREMENT_BY ------------------------------------------------ MIN_VALUE MAX_VALUE CYCLE CACHE_SIZE ------------------------------------------------ SEQ1 1 1 1 100 YES 20 SEQ2 1 1 1 9223372036854775806 NO 20 2 rows selected. 32 iSQL User’s Manual 트랜잭션 제어 트랜잭션 모드 설정 한 번 명령어를 수행할 때마다 자동으로 commit 할 것인지 여부를 결정하는 기능이다. xdbiSQL> AUTOCOMMIT OFF; -> 사용자가 commit 하기 전에는 commit 되지 않음 Set autocommit off success. xdbiSQL> AUTOCOMMIT ON; -> 명령어를 수행할 때마다 자동으로 commit Set autocommit on success. PLANCOMMIT SET PLANCOMMIT ON/OFF; autocommit off (non-autocommit) 모드에서 explain plan이 on (또는 only) 조건일 때, desc, select * from tab; 또는 select * from seq; 등과 같은 명령어를 수행했을 때 자동으로 commit 할지를 결정하는 기능이다. 기본값은 OFF 이다. * 참고: 기본값이 OFF 이므로 autocommit off 세션에서 explain plan이 on (또는 only) 조건일 때 알티베이스는 위의 명령어(desc, select * from tab; 또는 select * from seq;)를 자동 commit 하지 않고 오류 메시지를 발생한다. 이 값이 ON이면, iSQL은 이런 명령어들을 실행한 후 commit을 수행해서 에러가 발생하지 않도록 한다. iSQL 사용 예 33 파일 관리 작업 결과 저장 iSQL을 통해 작업한 결과를 지정한 파일로 저장하는 기능을 제공한다. 다음과 같이 spool 명령을 이용하면 지정한 book.txt 파일에 작업한 결과가 저장된다. 이 기능을 해제하고 싶으면 SPOOL OFF 명령을 사용한다. xdbiSQL> SPOOL book.txt Spool start. [book.txt] -> 이후의 모든 명령과 그 결과들이 book.txt 파일에 저장된다. 이 파일은 현재 디렉터리에 생성된다. xdbiSQL> SPOOL OFF Spool Stop -> 더 이상 명령과 그 결과들을 파일에 저장하지 않는다. 스크립트 파일 실행 @ 명령어 @file_name[.sql] 또는 START file_name[.sql] file_name[.sql]: 수행 될 스크립트 파일, 확장자를 생략하면 iSQL은 기본 스크립트 파일 확장자(.sql)로 간주한다. iSQL 명령어와 SQL구문들이 저장된 스크립트 파일을 실행하면, 한번에 파일내의 명령어들을 순차적으로 실행한다. @ 명령어는 START와 같은 기능을 갖는다. 스크립트 파일내의 exit 또는 quit 명령어는 iSQL을 종료시킨다. 스크립트 파일내에는 일반적으로 SQL문, iSQL 명령어, 또는 Stored Procedure 블록 등이 포함될 수 있다. 다음은 $ALTIBASE_XDB_HOME/sample/APRE/schema 디렉터리에 있는 스크립트 schema.sql을 현재 디렉터리에서 수행하는 예이다. xdbiSQL> START schema.sql <- 파일내의 sql 문이 실행된다. 또는 34 iSQL User’s Manual xdbiSQL> @schema.sql 스크립트 파일을 명시할 때, 사용자 계정의 알티베이스 홈 디렉터리($ALTIBASE_XDB_HOME)를 의미하는 물음표(“?”)를 사용할 수 있다. 다음은 $ALTIBASE_XDB_HOME/sample/APRE/schema 디렉터리에 있는 스크립트 schema.sql을 다른 디렉터리에서 수행하는 예이다. xdbiSQL> @?/sample/schema.sql 물음표(“?”)는 다음 iSQL 명령어에서도 사용할 수 있다: edit, save, load, spool, start * 스크립트 파일 내에서 주석의 사용은 -- 또는 /* */으로 가능하다. --는 이 표시 다음부터 그 라인의 끝까지를 주석으로 처리하고 여러 라인을 주석으로 처리할 때는 주석부분을 /*와 */ 사이에 넣으면 된다. @@ 명령어 @@file_name[.sql] file_name[.sql]: 수행될 내포형 스크립트를 나타낸다. 확장자를 생략하면 iSQL은 기본 명령어 파일 확장자(.sql)로 간주한다. 명시된 스크립트를 수행한다. @@ 명령어는 @ 명령어와 유사한 기능을 갖는다. 이 명령어는 수행될 스크립트와 같은 경로에서 명시된 스크립트를 찾는 기능을 가지고 있기 때문에 내포형 스크립트를 수행하는데 유용하다. @@ 명령어는 다음과 같은 용도로 쓰일 수 있다. 사용자가 임의의 스크립트 파일 내에 @@file_name.sql을 입력하고 그 스크립트 파일을 실행하면, iSQL은 file_name.sql을 호출한 스크립트 파일과 동일한 디렉터리에서 file_name.sql을 찾아서 수행한다. file_name.sql 은 이를 호출한 스크립트 파일과 같은 디렉터리에 있어야 한다. 만일 그런 파일이 존재하지 않으면, iSQL은 오류 메시지를 보여준다. 사용자가 iSQL 프롬프트 상에서 @@file_name.sql을 입력하여 실행하는 것은 @file_name.sql을 실행하는 것과 동일하다. 스크립트에는 일반적으로 SQL문, iSQL 명령어, 또는 Stored Procedure 블록 등이 포함될 수 있다. 스크립트 내에 exit 또는 quit 명령어는 iSQL을 종료시킨다. 다음은 $ALTIBASE_XDB_HOME 디렉터리에서 a.sql 스크립트 iSQL 사용 예 35 파일을 실행하는 예제로, 이 파일 내에서 schema.sql 스크립트 파일을 실행한다. 이 예제가 에러 없이 제대로 수행되려면, a.sql은 schema.sql파일이 위치하는 $ALTIBASE_XDB_HOME/sample/APRE/schema 디렉터리에 같이 있어야 한다. xdbiSQL> @sample/APRE/schema/a.sql $ cat a.sql @@schema.sql * 참고: 이 후의 예제는 위의 스크립트를 실행해서 생성된 테이블들을 (부록 Schema 참고) 가지고 iSQL 환경에서 질의에 따른 결과를 편집한 것이다. SQL문의 저장 현재 iSQLbuffer에 있는 명령어 중 가장 최근에 수행한 명령어를 파일로 저장하는 기능이다. 이 파일은 현재 디렉터리에 생성된다. xdbiSQL> SELECT * FROM book; xdbiSQL> SAVE book.sql; -> book.sql 파일에 ‘SELECT * FROM book;’가 저장된다. Save completed. SQL문의 로드 지정한 파일의 첫 번째 명령어를 iSQL버퍼의 마지막 위치에 로드시키는 기능이다. xdbiSQL> LOAD book.sql xdbiSQL> SELECT * FROM book; Load completed. xdbiSQL> / -> SELECT * FROM book; 문이 실행된 것을 볼 수 있다. DML문 저장 INSERT, UPDATE, DELETE, MOVE 등의 DML문 실행시 이를 $ALTIBASE_XDB_HOME/trc/isql_query.log에 기록한다. 이 기능을 설정하려면 SET QUERYLOGGING을 ON으로 하고, 해제하려면 OFF하면 된다. 36 iSQL User’s Manual xdbiSQL> SET QUERYLOGGING ON; -> 이후의 모든 DML 문이 $ALTIBASE_XDB_HOME/trc/isql_query.log에 저장된다. xdbiSQL> CREATE TABLE T1 ( I1 INTEGER ); Create success. xdbiSQL> INSERT INTO T1 VALUES ( 1 ); 1 row inserted. xdbiSQL> UPDATE T1 SET I1 = 2; 1 row updated. xdbiSQL> SELECT * FROM T1; I1 -------------- 2 1 row selected. xdbiSQL> DELETE FROM T1; 1 row deleted. xdbiSQL> DROP TABLE T1; Drop success. xdbiSQL> EXIT % cat $ALTIBASE_XDB_HOME/trc/isql_query.log -> SET QUERYLOGGING ON으로 실행한 후의 DML을 확인할 수 있다. [2009/09/16 10:36:14] [127.0.0.1:25310 SYS] INSERT INTO T1 VALUES ( 1 ) [2009/09/16 10:36:31] [127.0.0.1:25310 SYS] UPDATE T1 SET I1 = 2 [2009/09/16 10:36:37] [127.0.0.1:25310 SYS] DELETE FROM T1 질의문 편집 최근 질의문 편집 iSQL 상에서 파일을 생성하고 편집할 수 있도록 명령어 ed를 제공한다. 인수 없이 ed를 실행하면 가장 최근 실행된 질의문이 iSQL.buf 라는 임시 파일로 생성되며 다음과 같은 화면을 볼 수 있다. (지면을 절약하기 위해 몇 줄만 화면으로 표시한다.) xdbiSQL> SELECT sysdate FROM dual; SYSDATE --------------- 01-JAN-2000 1 row selected. xdbiSQL> ED SELECT sysdate FROM dual; ~ ~ ~ "iSQL.buf" 1L, 26C 기존 파일 편집 존재하는 파일을 편집하기 위해서는 iSQL 상에서 ed 실행 시 그 파일 이름을 뒤에 넣으면 된다. 화면이 초기화 되어 있을 때 빈 줄 표시는 ~(tilde) 문자로 표시된다. iSQL 사용 예 37 xdbiSQL> ED myquery.sql "myquery.sql" INSERT INTO employee(ENO, E_FIRSTNAME, E_LASTNAME, SEX) VALUES(21, 'MSJUNG', 'F'); INSERT INTO employee(ENO, E_FIRSTNAME, E_LASTNAME, SEX, JOIN_DATE) VALUES(22, 'Joshua', 'Baldwin', 'M', TO_DATE('2001-11-19 00:00:00', 'YYYY-MM-DD HH:MI:SS')); ~ ~"myquery.sql" 히스토리 목록에 있는 질의문 편집 히스토리 목록에서 해당 번호를 사용하여 이전에 수행했던 명령을 편집할 수 있다. 즉, 해당 번호의 질의문이 iSQL.buf 임시 파일로 생성되어 편집을 할 수 있으며, 편집 결과는 히스토리의 마지막에 등록되어 가장 마지막 명령을 재수행하는 ‘/’ 으로도 실행이 가능하다. xdbiSQL> h 1 : SELECT * FROM customers; 2 : SELECT * FROM employees; xdbiSQL> 2ed or xdbiSQL> 2 ed SELECT * FROM employees; ~ ~ "iSQL.buf" * 파일을 편집하기 위해서 명령 줄에 인수 2라는 파일 이름을 넣은 (xdbiSQL> ed 2) 명령어와 구분된다. 편집 후 (employees를 orders로 변경) xdbiSQL> h <- 현재 xdbisql buffer에 있는 히스토리 목록 1 : SELECT * FROM customers; 2 : SELECT * FROM employees; : SELECT * FROM orders; <- 2 ed 명령어에 의해 편집된 질의문이 히스토리 목록에 가장 마지막 명령어로 저장된다. xdbiSQL> / <- 가장 최근에 수행한 명령어가 실행된다. ORDERS.ONO ORDERS.ORDER_DATE ORDERS.ENO ORDERS.CNO ----------------------------------------------- ORDERS.GNO ORDERS.QTY ORDERS.ARRIVAL_DATE ORDERS.PROCESSING ----------------------------------------------- 0011290007 2000/11/29 00:00:00 12 7111111431202 A111100002 70 2000/12/02 00:00:00 C 0011290011 2000/11/29 00:00:00 12 7610011000001 E111100001 1000 2000/12/05 00:00:00 D … 0012310012 2000/12/31 00:00:00 19 7308281201145 C111100001 250 2001/01/03 00:00:00 O 30 rows selected. 38 iSQL User’s Manual iSQL 사용 예 39 SELECT 결과 포매팅 SELECT 문에 대한 결과들을 사용자가 보기 좋게 포매팅하는 기능이다. SET LINESIZE SELECT 문 결과 출력시 디스플레이되는 한 라인의 사이즈를 설정한다. 10 에서 200 사이의 값이어야 한다. xdbiSQL> SET LINESIZE 100; -> 한 라인의 디스플레이 크기를 100으로 설정한다. SET LOBSIZE CLOB 칼럼을 SELECT 문으로 조회 시 디스플레이 되는 데이터의 길이를 설정한다. CLOB 칼럼의 데이터를 SELECT 문으로 조회하기 위해서 우선 트랜잭션 모드를 AUTOCOMMIT OFF로 설정해야 한다. CREATE TABLE C1(I1 INTEGER, I2 CLOB); INSERT INTO C1 VALUES(1, 'A123456789'); INSERT INTO C1 VALUES(2, 'A1234'); INSERT INTO C1 VALUES(3, 'A12345'); INSERT INTO C1 VALUES(4, 'A1234567890123'); xdbiSQL> autocommit off; -> CLOB 칼럼 조회를 위해 트랜잭션 모드를 OFF로 설정한다. Set autocommit off success. xdbiSQL> select * from c1; C1.I1 C1.I2 --------------------------- 1 A123456789 2 A1234 3 A12345 4 A1234567890123 4 rows selected. xdbiSQL> set lobsize 10; -> CLOB 칼럼의 데이터를 select 문으로 조회할 때 화면에 나타나는 데이터 길이를 설정한다. xdbiSQL> select * from c1; C1.I1 C1.I2 -------------------------- 1 A123456789 2 A1234 3 A12345 4 A123456789 4 rows selected. 40 iSQL User’s Manual SET LOBOFFSET CLOB 칼럼을 SELECT 문으로 조회할 때 디스플레이 되는 Clob 데이터의 시작 위치를 설정한다. CLOB 칼럼의 데이터를 SELECT 문으로 조회하기 위해서 우선 트랜잭션 모드를 AUTOCOMMIT OFF로 설정해야 한다. CREATE TABLE C1(I1 INTEGER, I2 CLOB); INSERT INTO C1 VALUES(1, 'A123456789'); INSERT INTO C1 VALUES(2, 'A1234'); INSERT INTO C1 VALUES(3, 'A12345'); INSERT INTO C1 VALUES(4, 'A1234567890123'); xdbiSQL> autocommit off; Set autocommit off success. xdbiSQL> set loboffset 4; -> CLOB 칼럼의 데이터를 select 문으로 조회할 때 화면에 나타나는 데이터의 시작 위치를 설정한다. xdbiSQL> select * from c1; C1.I1 C1.I2 -------------------------- 1 456789 2 4 3 45 4 4567890123 4 rows selected. SET FEEDBACK SELECT 문 결과 출력시 선택된 결과 건수를 출력한다. SET FEEDBACK ON|OFF|n ON: SELECT문 수행 후 결과 데이터 건수를 출력한다. OFF: SELECT문 수행 후 결과 데이터 건수를 출력하지 않는다. n: 결과 건수가 n이상일 경우에만 출력한다. xdbiSQL> SET FEEDBACK ON; xdbiSQL> SELECT * FROM employees WHERE ENO < 3; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 2 rows selected. iSQL 사용 예 41 SET PAGESIZE 결과 row들을 몇 개 단위로 보여줄 것인지 결정한다. xdbiSQL> SET PAGESIZE 2; -> 결과 row를 2개 단위로 보여준다. xdbiSQL> SELECT * FROM employees; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 3 Kobain Ken engineer 0162581369 1001 2000 M 650226 11-JAN-2010 H 4 Foster Aaron PL 0182563984 3001 1800 M 820730 H ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 5 Ghorbani Farhad PL 01145582310 3002 2500 M 20-DEC-2009 H 6 Momoi Ryu programmer 0197853222 1002 1700 M 790822 09-SEP-2010 H . . . 20 rows selected. xdbiSQL> SET PAGESIZE 0; -> 결과 전체를 한 단위로 보여준다. xdbiSQL> SELECT * FROM employees; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 3 Kobain Ken engineer 0162581369 1001 2000 M 650226 11-JAN-2010 H . 42 iSQL User’s Manual . . 20 rows selected. SET HEADING 결과에 헤더를 출력할지 결정한다. xdbiSQL> SET HEADING OFF; -> 결과에 헤더를 출력하지 않는다. xdbiSQL> SELECT * FROM employees; 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 3 Kobain Ken engineer 0162581369 1001 2000 M 650226 11-JAN-2010 H . . . 20 rows selected. xdbiSQL> SET HEADING ON; -> 결과에 헤더를 출력한다. xdbiSQL> SELECT * FROM employee; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 3 Kobain Ken engineer 0162581369 1001 2000 M 650226 11-JAN-2010 H . . . 20 rows selected. SET COLSIZE SELECT 문 결과 출력시 디스플레이되는 CHAR, VARCHAR 타입 칼럼의 사이즈를 설정하여, 길이가 긴 문자열을 포함하는 칼럼이 존재할 경우 인식을 용이하게 한다. xdbiSQL> CREATE TABLE LOCATION( ID INTEGER, NAME CHAR(20), ADDRESS VARCHAR(500), PHONE CHAR(20)); iSQL 사용 예 43 Create success. xdbiSQL> INSERT INTO LOCATION VALUES(1, 'ALTIBASE', 'Inyoung Bldg, 5fl 44-11 Youido-dong Youngdungpo-qu seoul, 150-890. Korea', '82-2-769-7500'); 1 row inserted. 아래는 CHAR 또는 VARCHAR 타입 칼럼의 디스플레이 사이즈를 7로 설정하여 조회하는 예제이다. xdbiSQL> SET COLSIZE 7; xdbiSQL> SELECT ID,NAME,ADDRESS,PHONE FROM LOCATION; ID NAME ADDRESS PHONE -------------------------------------------- 1 ALTIBAS 10Fl., 82-2-20 E Daerung 82-1000 post-to wer II, Guro-d ong, Gu ro-qu, Seoul 1 52-790. Korea 1 row selected. 44 iSQL User’s Manual 출력 옵션 제어 수행시간 출력 SQL 문을 실행하는데 걸린 시간을 알려주는 기능이다. xdbiSQL> SET TIMING ON; -> 명령 실행 후 마지막 라인에 실행시간을 출력한다. xdbiSQL> SELECT * FROM employees; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H . . . 20 rows selected. elapsed time : 0.01 xdbiSQL> SET TIMING OFF; -> 실행시간을 출력하지 않는다. 수행시간 단위 설정 SQL문의 쿼리 수행 시간 단위를 설정하는 기능이다. 설정할 수 있는 단위는 다음과 같다. 초 밀리초 마이크로초 나노초 xdbiSQL> SET TIMING ON xdbiSQL> SET TIMESCALE SEC; xdbiSQL> SELECT * FROM employees; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R ... 20 rows selected. iSQL 사용 예 45 elapsed time : 0.00 xdbiSQL> SET TIMESCALE MILSEC; xdbiSQL> SELECT * FROM employee; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R ... ... 20 rows selected. elapsed time : 0.72 xdbiSQL> SET TIMESCALE MICSEC; xdbiSQL> SELECT * FROM employee; ENO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R ... 20 rows selected. elapsed time : 966.00 xdbiSQL> SET TIMESCALE NANSEC; xdbiSQL> SELECT * FROM employee; NO E_LASTNAME E_FIRSTNAME EMP_JOB ----------------------------------------------------------- ------------------- EMP_TEL DNO SALARY SEX BIRTH JOIN_DATE STATUS ----------------------------------------------------------- ------------------------ 1 Moon Chan-seung CEO 01195662365 3002 M R ... 20 rows selected. elapsed time : 681000.00 외래키 출력 DESC 명령어를 사용하여 테이블 구조를 볼 때 외래 키에 대한 정보를 보여주는 기능이다. xdbiSQL> SET FOREIGNKEYS ON; -> 외래 키에 대한 정보를 출력한다. xdbiSQL> DESC employees; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ----------------------------------------------------------- ------------------- NAME TYPE IS NULL 46 iSQL User’s Manual ----------------------------------------------------------- ------------------- ENO INTEGER FIXED NOT NULL E_LASTNAME CHAR(20) FIXED NOT NULL E_FIRSTNAME CHAR(20) FIXED NOT NULL EMP_JOB VARCHAR(15) FIXED EMP_TEL CHAR(15) FIXED DNO SMALLINT FIXED SALARY NUMERIC(10, 2) FIXED SEX CHAR(1) FIXED BIRTH CHAR(6) FIXED JOIN_DATE DATE FIXED STATUS CHAR(1) FIXED [ INDEX ] ----------------------------------------------------------- ------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- ------------------- __SYS_IDX_ID_238 BTREE UNIQUE ENO ASC EMP_IDX1 BTREE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- ------------------- ENO [ FOREIGN KEYS ] ----------------------------------------------------------- ----------- xdbiSQL> SET FOREIGNKEYS OFF; -> 외래 키에 대한 정보를 출력하지 않는다. xdbiSQL> DESC employees; [ ATTRIBUTE ] ----------------------------------------------------------- ------------------- NAME TYPE IS NULL ----------------------------------------------------------- ------------------- ENO INTEGER FIXED NOT NULL E_LASTNAME CHAR(20) FIXED NOT NULL E_FIRSTNAME CHAR(20) FIXED NOT NULL EMP_JOB VARCHAR(15) FIXED EMP_TEL CHAR(15) FIXED DNO SMALLINT FIXED SALARY NUMERIC(10, 2) FIXED SEX CHAR(1) FIXED BIRTH CHAR(6) FIXED JOIN_DATE DATE FIXED STATUS CHAR(1) FIXED [ INDEX ] ----------------------------------------------------------- ------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- ------------------- iSQL 사용 예 47 __SYS_IDX_ID_238 BTREE UNIQUE ENO ASC EMP_IDX1 BTREE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- ----------- ENO 스크립트 파일 실행결과 출력 스크립트 파일 실행의 결과를 화면상에 보여줄지를 결정한다. OFF 기능은 iSQL 상에서 스크립트 실행 시 생성된 결과가 화면에 출력되는 것을 막는다. 그러나, OFF가 설정되어 있더라도 질의를 직접 입력하는 경우 (예: xdbiSQL> select * from t1;) 질의 결과는 화면에 출력 되며, 스크립트 명령을 이용하는 경우에만 (예: xdbiSQL> @t.sql ) 화면에 출력되지 않는다. xdbiSQL> SET TERM OFF; xdbiSQL> SET TIMING ON; -> 실행시간이 화면에 출력되지 않는다. xdbiSQL> @schema.sql -> 스크립트 실행 결과를 출력하지 않는다. xdbiSQL> SELECT eno, e_firstname, e_lastname FROM employees; -> 질의를 직접 입력하는 경우 결과는 출력된다. ENO E_FIRSTNAME E_LASTNAME ----------------------------------------------------------- - 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani . . . xdbiSQL> SET TERM ON; -> 스크립트 실행 결과를 출력한다. xdbiSQL> @schema.sql xdbiSQL> ALTER SESSION SET AUTOCOMMIT = TRUE; ->결과 시작 Alter success. xdbiSQL> DROP TABLE ORDERS; Drop success. elapsed time : 0.00 xdbiSQL> DROP TABLE EMPLOYEES; Drop success. elapsed time : 0.00 . . . xdbiSQL> CREATE INDEX ODR_IDX3 ON ORDERS (GNO ASC); Create success. 48 iSQL User’s Manual elapsed time : 0.00 -> 결과 끝 실행 계획 출력 SQL 튜닝을 위하여 iSQL상에서 실행 계획 (Explain Plan)을 출력하는 기능이다. SQL 문의 실행 계획은 SELECT, INSERT, UPDATE, DELETE 등의 DML 문에 대해서 확인이 가능하다. 이를 위해서 SELECT 등의 구문을 수행하기 전에 다음 명령을 수행하여야 한다. ALTER SESSION SET EXPLAIN PLAN = option; 여기서 option은 ON, OFF, ONLY의 세 가지 설정이 있으며, 기본 설정값은 OFF이다. ON: SELECT문 실행 후 결과 레코드와 함께 Execution Plan 을 보여준다. ONLY: SELECT문에 대해 Prepare 과정만 수행한 후 Execution 과정을 수행하지 않고 실행 계획만 보여준다. 주 언어 변수 바인딩이 존재하는 SELECT 문 또는 실행 수행 시간이 오래 걸리는 질의에 대해 단순히 실행 계획만 확인할 경우 이 기능을 사용한다. OFF: SELECT문 실행 후 결과 레코드만 보여준다. 사용자가 기술한 WHERE절에 존재하는 조건들의 처리 방법 등의 보다 자세한 정보가 필요한 경우는 다음 명령을 사용한다. ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 1; 위의 구문처럼 해당 프로퍼티를 1로 설정하여 ON시키면, 실행 계획 정보에 WHERE절의 조건들이 FIXED KEY RANGE, VARIABLE KEY RANGE, FILTER 등으로 자세하게 분류되어 표시된다. 따라서 WHERE절을 복잡하게 사용한 경우 어떤 술어들이 인덱스 스캔을 통해 수행되는지 확인할 수 있다. 단, 특정 최적화 기법에 의해 질의가 변경된 경우는 이러한 정보가 출력되지 않을 수 있다. 다음은 해당 SQL문을 사용한 출력 예이다. TRCLOG_DETAIL_PREDICATE을 설정하고 EXPLAIN PLAN = ON으로 한 경우 xdbiSQL> alter system set trclog_detail_predicate = 1; Alter success. xdbiSQL> alter session set explain plan = on; Alter success. xdbiSQL> SELECT eno, e_lastname, e_firstname FROM employees WHERE eno = 1; ENO E_LASTNAME E_FIRSTNAME iSQL 사용 예 49 ----------------------------------------------------------- - 1 Moon Chan-seung 1 row selected. ----------------------------------------------------------- - PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_238, ACCESS: 1, SELF_ID: 2 ) [ FIXED KEY ] AND OR ENO = 1 ----------------------------------------------------------- - TRCLOG_DETAIL_PREDICATE을 설정하지 않고, EXPLAIN PLAN = ON으로 한 경우 xdbiSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. xdbiSQL> ALTER SESSION SET EXPLAIN PLAN = ON; Alter success. xdbiSQL> SELECT eno, e_lastname, e_firstname FROM employees WHERE eno = 1; ENO E_LASTNAME E_FIRSTNAME ----------------------------------------------------------- - 1 Moon Chan-seung 1 row selected. ----------------------------------------------------------- - PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_238, ACCESS: 1, SELF_ID: 2 ) ----------------------------------------------------------- - TRCLOG_DETAIL_PREDICATE을 설정하지 않고, EXPLAIN PLAN = ONLY로 한 경우 xdbiSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. xdbiSQL> ALTER SESSION SET EXPLAIN PLAN = ONLY; Alter success. xdbiSQL> SELECT eno, e_lastname, e_firstname FROM employees WHERE eno = 1; ENO E_LASTNAME E_FIRSTNAME ----------------------------------------------------------- - No rows selected. ----------------------------------------------------------- - PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_238, ACCESS: ??, SELF_ID: 2 ) ----------------------------------------------------------- - EXPLAIN PLAN = ONLY인 경우 질의 실행 없이 실행 계획만 생성하므로 ACCESS 항목과 같이 실제 실행 후 그 값이 결정되는 항목들은 물음표 (“??”)로 표시된다. 50 iSQL User’s Manual 결과 출력 방향 설정 iSQL에서 SELECT 구문으로 조회할 경우, 결과를 세로로 보여줄 것인가 가로로 보여줄 것인가를 선택할 수 있다. 조회 결과가 행이 적고, 열이 많을 경우에 적합한 출력이다. 일반적으로 이러한 경우에 가로로 출력되면 해당하는 열을 맞춰 값을 보기가 어렵다. 하지만 출력 결과의 방향을 세로로 설정하면 보기가 편리하다. xdbiSQL>SET VERTICAL ON; -> 출력 결과 모드를 세로로 설정한다. xdbiSQL> SELECT * FROM employees WHERE eno = 2; ENO : 2 E_LASTNAME : Davenport E_FIRSTNAME : Susan EMP_JOB : designer EMP_TEL : 0113654540 DNO : SALARY : 1500 SEX : F BIRTH : 721219 JOIN_DATE : 18-NOV-2009 STATUS : H 1 row selected. iSQL 사용 예 51 iSQL 화면 설정 보기 다음은 현재 세션에서 iSQL 화면 설정 값을 보는 예를 보여준다. xdbiSQL> SHOW USER -> 현재 세션에 접속한 사용자 User : SYS xdbiSQL> SHOW COLSIZE ColSize : 0 xdbiSQL> SHOW LOBOFFSET LobOffset: 0 xdbiSQL> SHOW LINESIZE Linesize : 100 xdbiSQL> SHOW LOBSIZE LobSize : 80 xdbiSQL> SHOW PAGESIZE Pagesize : 0 xdbiSQL> SHOW TIMESCALE TimeScale : Second xdbiSQL> SHOW HEADING Heading : On xdbiSQL> SHOW TIMING Timing : Off xdbiSQL> SHOW VERTICAL Vertical : Off xdbiSQL> SHOW FOREIGNKEYS ForeignKeys : Off xdbiSQL> SHOW PLANCOMMIT PlanCommit : Off xdbiSQL> SHOW QUERYLOGGING QueryLogging : Off xdbiSQL> SHOW TERM Term : On xdbiSQL> SHOW FEEDBACK Feedback : 1 xdbiSQL> SHOW ALL User : SYS ColSize : 0 LobOffset : 0 LineSize : 80 LobSize : 80 PageSize : 0 TimeScale : Second Heading : On Timing : Off Vertical : Off ForeignKeys : Off PlanCommit : Off 52 iSQL User’s Manual 호스트 변수 호스트 변수를 선언하여 사용할 수 있다. 호스트 변수는 프로시저나 함수 실행 시 유용하다. 호스트 변수 선언하기 구문 VAR[IABLE] var_name var_type 타입 변수 선언 시 사용할 수 있는 타입은 다음과 같다. INTEGER, BYTE(n), NIBBLE(n), NUMBER, NUMBER(n), NUMBER(n,m), NUMERIC, NUMERIC(n), NUMERIC(n,m), CHAR(n), VARCHAR(n), NCHAR(n), NVARCHAR(n), DATE DECIMAL, DECIMAL(n), DECIMAL(n,m), FLOAT, FLOAT(n), DOUBLE, REAL BIGINT, SMALLINT 예제 아래는 변수를 선언하는 예를 보여준다. xdbiSQL> VAR p1 INTEGER xdbiSQL> VAR p2 CHAR(10) xdbiSQL> VAR v_double DOUBLE xdbiSQL> VAR v_real REAL 호스트 변수에 값 할당하기 구문 EXEC[UTE] :var_name := value; 예제 아래는 변수에 값을 할당하는 예를 보여준다. xdbiSQL> EXECUTE :p1 := 100; Execute success xdbiSQL> EXEC :p2 := ‘abc’; Execute success iSQL 사용 예 53 호스트 변수 보기 구문 PRINT VAR[IABLE] -> 선언된 모든 변수를 보여준다. PRINT var_name -> var_name의 타입과 값을 보여준다. 예제 다음은 선언된 모든 변수값을 보여준다. xdbiSQL> PRINT VAR [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- P1 INTEGER 100 P2 CHAR(10) abc V_REAL REAL V_DOUBLE DOUBLE xdbiSQL> PRINT p2 -> 변수 p2에 관한 정보만 출력한다. NAME TYPE VALUE ------------------------------------------- P2 CHAR ( 10 ) abc 54 iSQL User’s Manual PREPARE SQL문 수행 Prepared SQL문 수행과 Direct SQL문 수행의 차이 iSQL상에서 SQL문을 수행하면 기본적으로 Direct Execution 방법으로 수행된다. Direct Execution 이란 질의에 대한 구문 분석, 정당성 검사, 최적화 및 수행을 한번에 수행하는 것을 의미한다. 이에 반해 Prepared Execution 방법은 prepare시에 질의에 대한 구문 분석, 정당성 검사, 최적화까지만을 수행해 질의에 대한 실행 계획을 수립해 두고 이후에 클라이언트로부터 실행 요구 메시지를 받으면 수행을 하는 방법이다. ODBC를 사용한 응용프로그램 작성의 경우 Prepared Execution 방법이 일반적이며 호스트 변수 바인딩을 통해 한 SQL문에 대한 반복적인 수행이 필요한 경우 속도의 이점이 있다. iSQL 상에서는 이 두 방법의 차이는 변수 사용 여부의 차이만 존재하며 속도의 이점은 존재하지 않는다. Prepared SQL문 구문 PREPARE SQL_statement; 예제 다음은 PREPARE 명령어를 사용한 SQL문 수행 예제이다. xdbiSQL> VAR t1 INTEGER; xdbiSQL> EXEC :t1 := 1; Execute success. xdbiSQL> PREPARE SELECT eno, e_firstname, e_lastname, sex FROM employees WHERE eno=:t1; ENO E_FIRSTNAME E_LASTNAME SEX ----------------------------------------------------------- ------- 1 Chan-seung Moon M 1 row selected. iSQL 사용 예 55 프로시저 생성과 실행 및 삭제 프로시저 생성 프로시저를 생성하는 기능을 제공한다. 프로시저 생성시 반드시 END; / 구문으로 끝나야 한다. 생성된 프로시저는 sys_procedures_ 메타 테이블을 참조하여 확인할 수 있다. 프로시저 실행 프로시저를 실행하는 기능을 제공한다. 프로시저를 실행함으로써 다양한 쿼리를 한꺼번에 수행할 수 있다. 실행할 프로시저에 파라미터가 있는 경우 반드시 프로시저 실행전에 파라미터 개수만큼 변수가 선언되어 있어야 한다. 예제1 다음은 INSERT 문을 수행하는 프로시저 emp_proc를 생성하는 예를 보여준다. (IN 파라미터 이용) xdbiSQL> CREATE OR REPLACE PROCEDURE emp_proc(p1 IN INTEGER, p2 IN CHAR(20), p3 IN CHAR(20), p4 IN CHAR(1)) AS BEGIN INSERT INTO employees(eno, e_firstname, e_lastname, sex) VALUES(p1, p2, p3, p4); END; / Create success. xdbiSQL> SELECT * FROM system_.sys_procedures_ order by created desc limit 1; USER_ID PROC_OID ------------------------------------ PROC_NAME OBJECT_TYPE STATUS ----------------------------------------------------------- ----------- PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID RETURN_SIZE ----------------------------------------------------------- -- RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN CREATED ----------------------------------------------------------- -------------- LAST_DDL_TIME 56 iSQL User’s Manual ---------------- 2 3208680 EMP_PROC 0 0 4 2 192 29-FEB-2012 29-FEB-2012 1 row selected. 아래는 emp_proc를 실행하는 예를 보여준다. xdbiSQL> VAR eno INTEGER xdbiSQL> VAR first_name CHAR(20) xdbiSQL> VAR last_name CHAR(20) xdbiSQL> VAR sex CHAR(1) xdbiSQL> EXECUTE :eno := 21; Execute success. xdbiSQL> EXECUTE :first_name := 'Joel'; Execute success. xdbiSQL> EXECUTE :last_name := 'Johnson'; Execute success. xdbiSQL> EXECUTE :sex := 'M'; Execute success. xdbiSQL> EXECUTE emp_proc(:eno, :firstname, :lastname, :sex); Execute success. xdbiSQL> SELECT eno, e_firstname, e_lastname, sex FROM employees WHERE eno = 21; ENO E_FIRSTNAME E_LASTNAME SEX ----------------------------------------------------------- ------ 21 Joel Johnson M 1 row selected. 예제2 다음은 SELECT 문을 수행하는 프로시저 outProc를 생성하는 예를 보여준다. xdbiSQL> CREATE TABLE outTbl(i1 INTEGER, i2 INTEGER); Create success. xdbiSQL> INSERT INTO outTbl VALUES(1,1); 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> SELECT * FROM outTbl; OUTTBL.I1 OUTTBL.I2 --------------------------- 1 1 1 1 1 1 1 1 1 1 5 rows selected. xdbiSQL> CREATE OR REPLACE PROCEDURE outProc(a1 OUT INTEGER, a2 IN OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO a1 FROM outTbl WHERE i2 = a2; END; / iSQL 사용 예 57 Create success. 아래는 outProc를 실행하는 예를 보여준다. xdbiSQL> VAR t3 INTEGER xdbiSQL> VAR t4 INTEGER xdbiSQL> EXEC :t4 := 1; Execute success. xdbiSQL> EXEC outProc (:t3, :t4); Execute success. xdbiSQL> PRINT t3; NAME TYPE VALUE ----------------------------------------------- T3 INTEGER 5 예제3 다음은 프로시저 outProc1을 생성하는 예를 보여준다. xdbiSQL> CREATE OR REPLACE PROCEDURE outProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1; p3 := p1 + 100; END; / Create success. xdbiSQL> VAR v1 INTEGER xdbiSQL> VAR v2 INTEGER xdbiSQL> VAR v3 INTEGER xdbiSQL> EXEC :v1 := 3; Execute success. xdbiSQL> EXEC outProc1(:v1, :v2, :v3); Execute success. xdbiSQL> PRINT VAR; [ HOST VARIABLE ] ----------------------------------------------- NAME TYPE VALUE ----------------------------------------------- .. V1 INTEGER 3 V2 INTEGER 3 V3 INTEGER 103 .. 예제4 다음은 SELECT 문을 수행하는 프로시저 inoutProc를 생성하는 예를 보여준다. xdbiSQL> CREATE TABLE inoutTbl(i1 INTEGER); Create success. xdbiSQL> INSERT INTO inoutTbl VALUES(1); 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> SELECT * FROM inoutTbl; INOUTTBL.I1 -------------- 1 1 58 iSQL User’s Manual 1 3 rows selected. xdbiSQL> CREATE OR REPLACE PROCEDURE inoutProc (a1 IN OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO a1 FROM inoutTbl WHERE i1 = a1; END; / Create success. xdbiSQL> VAR t3 INTEGER xdbiSQL> EXEC :t3 := 1; Execute success. xdbiSQL> EXEC inoutProc(:t3); Execute success. xdbiSQL> PRINT t3; NAME TYPE VALUE ----------------------------------------------- T3 INTEGER 3 예제5 다음은 프로시저 inoutProc1을 생성하는 예를 보여준다. xdbiSQL> CREATE OR REPLACE PROCEDURE inoutProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1 + p2; p3 := p1 + 100; END; / Create success. 아래는 inoutProc1을 실행하는 예를 보여준다. xdbiSQL> VAR v1 INTEGER xdbiSQL> VAR v2 INTEGER xdbiSQL> VAR v3 INTEGER xdbiSQL> EXEC :v1 := 3; Execute success. xdbiSQL> EXEC :v2 := 5; Execute success. xdbiSQL> EXEC inoutProc1(:v1, :v2, :v3); Execute success. xdbiSQL> PRINT VAR; [ HOST VARIABLE ] ----------------------------------------------- NAME TYPE VALUE ----------------------------------------------- .. V1 INTEGER 3 V2 INTEGER 8 V3 INTEGER 103 .. 프로시저 삭제 프로시저를 삭제하는 기능을 제공한다. 다음은 emp_proc를 삭제하는 예를 보여준다. iSQL 사용 예 59 xdbiSQL> DROP PROCEDURE emp_proc; Drop success 60 iSQL User’s Manual 함수 생성과 실행 및 삭제 함수 생성 함수를 생성하는 기능을 제공한다. 함수 생성시 반드시 END; / 구문으로 끝나야 하며 리턴 타입이 정의되어 있어야 한다. 생성된 함수는 sys_procedures_ 메타 테이블을 참조하여 확인할 수 있다. 다음은 UPDATE 문과 SELECT 문을 수행하는 함수 emp_func를 생성하는 예를 보여준다. xdbiSQL> CREATE OR REPLACE FUNCTION emp_func(f1 IN INTEGER) RETURN NUMBER AS f2 NUMBER; BEGIN UPDATE employees SET salary = 1000000 WHERE eno = f1; SELECT salary INTO f2 FROM employees WHERE eno = f1; RETURN f2; END; / Create success. xdbiSQL> SELECT * FROM system_.sys_procedures_; USER_ID PROC_OID PROC_NAME ----------------------------------------------------------- -------------------- OBJECT_TYPE STATUS PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID ----------------------------------------------------------- --------------- RETURN_SIZE RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN ----------------------------------------------------------- ------------- CREATED LAST_DDL_TIME ------------------------------ . . . 2 3300024 INOUTPROC1 0 0 3 2 132 15-SEP-2010 15-SEP-2010 2 3302344 EMP_FUNC 1 0 1 6 30000 23 38 0 3 209 15-SEP-2010 15-SEP-2010 36 rows selected. iSQL 사용 예 61 함수 실행 함수를 실행하는 기능을 제공한다. 함수를 실행함으로써 다양한 쿼리를 한꺼번에 수행할 수 있다. 실행할 함수에 파라미터가 있는 경우 반드시 함수 실행전에 파라미터 개수만큼 변수가 선언되어 있어야 한다. 또한, 함수의 실행 결과를 저장할 변수도 정의되어 있어야 한다. 다음은 emp_func를 실행하는 예를 보여준다. xdbiSQL> VAR eno INTEGER xdbiSQL> VAR ret NUMBER xdbiSQL> EXEC :eno := 11; Execute success. xdbiSQL> EXEC :ret := emp_func(:eno); Execute success. xdbiSQL> SELECT eno, salary FROM employees WHERE eno = 11; ENO SALARY --------------------------- 11 1000000 1 row selected. 함수 삭제 함수를 삭제하는 기능을 제공한다. 다음은 emp_func를 삭제하는 예를 보여준다. xdbiSQL> DROP FUNCTION emp_func; Drop success 62 iSQL User’s Manual 사용자 편의 기능 히스토리 이전에 수행했던 명령들의 리스트를 보여 준다. 해당 번호를 사용하여 이전에 수행했던 명령을 간단하게 실행할 수 있다. xdbiSQL> HISTORY; -> history 목록보기 또는 xdbiSQL> H; 1 : SELECT * FROM tab; 2 : SELECT * FROM book; 3 : HISTORY; xdbiSQL> / -> 가장 마지막 명령(HISTORY;)을 재수행 xdbiSQL> 2/ -> history 목록의 2번에 해당하는 명령(SELECT * FROM book;)실행 쉘 명령 iSQL에서 !다음에 바로 쉘 명령을 수행할 수 있는 편리한 기능이다. xdbiSQL> !ls -al total 3417 -rw-r----- 1 wlgml337 section 1198 Nov 1 13:30 .aliases -rw------- 1 wlgml337 section 5353 Oct 18 21:17 .bash_history -rw-r----- 1 wlgml337 section 1436 Nov 2 15:42 .bashrc -rw-r----- 1 wlgml337 section 1549 Dec 13 17:36 .profile drwxr-x--- 2 wlgml337 section 512 Nov 2 02:00 TEMP drwxr-xr-x 2 root root 512 Oct 16 11:29 TT_DB -rw------- 1 wlgml337 section 3446548 Dec 18 13:19 core drwxr-x--- 2 wlgml337 section 512 Nov 11 16:33 cron drwxr-x--- 2 wlgml337 section 512 Nov 15 10:52 test drwxr-xr-x 6 wlgml337 section 512 Nov 11 11:45 work 도움말 iSQL이 제공하는 명령에 대한 도움말을 제공한다. HELP 명령은 도움말 사용법을 보여 주며 특정 명령에 대한 도움말은 HELP 명령 다음에 정보를 알고자 하는 명령을 입력하면 된다. iSQL 사용 예 63 xdbiSQL> HELP; Use 'help [command]' Enter 'help index' for a list of command xdbiSQL> HELP INDEX; @ EDIT QUIT / EXIT ROLLBACK ALTER HEADING SAVE AUTOCOMMIT H[ISTORY] SELECT COMMIT INSERT SPOOL CREATE LINESIZE START DELETE LOAD TIMING DESC LOBOFFSET UPDATE DROP LOBSIZE VAR[IABLE] EXECUTE MOVE TERM EXPLANINPLAN PAGESIZE VERTICAL xdbiSQL> HELP EXIT; exit; or quit; - exit iSQL 64 iSQL User’s Manual 내셔널 캐릭터 사용법 NCHAR 및 NVARCHAR 타입의 내셔널 캐릭터 상수 문자를 사용하기 위해서 아래와 같은 방법으로 환경변수 등을 설정해야 데이터의 손실 염려가 없다. 환경변수 ALTIBASE_XDB_NLS_NCHAR_LITERAL_REPLACE의 값을 1로 설정한다. $ export ALTIBASE_XDB_NLS_NCHAR_LITERAL_REPLACE =1 SQL 구문에서 NCHAR 타입 상수 문자열을 사용하기 위해 해당 문자열 바로 앞에 “N”을 붙여 사용한다. xdbiSQL> create table t1 (c1 nvarchar(10)); Create success. xdbiSQL> insert into t1 values (N'AB가나'); 1 row inserted. xdbiSQL> select * from t1; C1 ------------------------ AB가나 1 row selected. 찾아보기 65 찾아보기 ! ! 명령어 ............................................... 13 / / 명령어 ......................................... 13, 62 @ @ 명령어 ......................................... 9, 33 @@ ....................................................... 9 @@ 명령어 .......................................... 34 A ALTIBASE_XDB_DATE_FORMAT........... 16 ALTIBASE_XDB_HOME ........................ 14 ALTIBASE_XDB_IPC_FILEPATH ............. 16 ALTIBASE_XDB_NLS_NCHAR_LITERAL_RE PLACE ............................................. 15 ALTIBASE_XDB_NLS_USE ..................... 14 ALTIBASE_XDB_WSERVER_PORT_NO .. 14 AUTOCOMMIT OFF ............................. 32 AUTOCOMMIT ON .............................. 32 C comment ............................................ 13 D DESC ................................................... 30 disconnect ............................................. 8 E ed 명령어 ...................................... 10, 38 exit ....................................................... 8 G glogin.sql ............................................ 18 H help .................................................... 13 history ........................................... 13, 62 host variable ........................................ 52 I iSQL 구성 ............................................. 18 iSQL 명령어............................................ 8 iSQL 설정 ............................................... 3 iSQL 화면 설정 ..................................... 51 iSQL 환경변수 ...................................... 12 L LOBOFFSET .................................... 10, 40 LOBSIZE ......................................... 10, 39 login.sql .............................................. 18 P PAGESIZE ............................................ 41 PREPARE SQL문 ................................... 54 Q quit ....................................................... 8 S SELECT 결과 포매팅 ............................. 39 set foreignkeys .................................... 11 set linesize ........................................... 10 set pagesize ......................................... 10 set term ............................................... 11 shell command .................................... 62 show all ............................................... 12 SQL문의 로드 ....................................... 35 SQL문의 저장 ....................................... 35 START ................................................. 33 SYSDBA........................................... 5, 22 T tab ...........................
-
- [ALTIBASE XDB 6.1.1] iSQL User's Manual ㅣ 2013-05-24
- ALTIBASE XDB Tools iSQL User ’s Manual Release 6.1.1 April 26, 2013 ALTIBASE XDB Tools iSQL User ’s Manual Release 6.1.1 Copyright 2001~2012 Altibase Corporation. All rights reserved. This manual contains proprietary information of Altibase® C
-
미리보기
ALTIBASE XDB Tools iSQL User ’s Manual Release 6.1.1 April 26, 2013 ALTIBASE XDB Tools iSQL User ’s Manual Release 6.1.1 Copyright 2001~2012 Altibase Corporation. All rights reserved. This manual contains proprietary information of Altibase® Corporation; it is provided under a license agreement containing restric- tions on use and disclosure and is also protected by copyright patent and other intellectual property law. Reverse engineering of the software is prohibited. All trademarks, registered or otherwise, are the property of their respective owners Altibase Corporation 10F, Daerung PostTower II, 182-13, Guro-dong Guro-gu Seoul, 152-847, South Korea Telephone: +82-2-2082-1000 Fax: 82-2-2082-1099 Homepage: http://www.altibase.com iii Contents Preface ............................................................................................................................................................................. i About This Manual .................................................................................................................................................................................... ii Intended Audience .................................................................................................................................................................... ii Software Environment ............................................................................................................................................................. ii Organization ................................................................................................................................................................................ ii Documentation Conventions ................................................................................................................................................ ii Related Documents ................................................................................................................................................................... v On-line Manuals.......................................................................................................................................................................... v Altibase Welcomes Your Comments................................................................................................................................... v 1. Using iSQL .................................................................................................................................................................. 1 1.1 iSQL Overview ..................................................................................................................................................................................... 2 1.1.1 iSQL Main Functionality ................................................................................................................................................ 2 1.2 Setting Up iSQL ................................................................................................................................................................................... 3 1.3 iSQL Command-Line Options ........................................................................................................................................................ 5 1.4 iSQL Commands ................................................................................................................................................................................. 8 1.5 iSQL Environment Variables ........................................................................................................................................................ 14 1.5.1 ALTIBASE_XDB_HOME................................................................................................................................................ 14 1.5.2 ALTIBASE_XDB_WSERVER_PORT_NO ................................................................................................................... 14 1.5.3 ALTIBASE_XDB_NLS_USE .......................................................................................................................................... 14 1.5.4 ALTIBASE_XDB_NLS_NCHAR_LITERAL_REPLACE............................................................................................. 14 1.5.5 XDB_ISQL_CONNECTION........................................................................................................................................... 15 1.5.6 XDB_ISQL_BUFFER_SIZE ............................................................................................................................................ 15 1.5.7 ALTIBASE_XDB_DATE_FORMAT ............................................................................................................................. 15 1.5.8 XDB_ISQL_EDITOR ...................................................................................................................................................... 16 1.5.9 ALTIBASE_XDB_WSERVER_IPC_FILEPATH........................................................................................................... 16 1.6 Personalizing iSQL .......................................................................................................................................................................... 17 1.6.1 glogin.sql ......................................................................................................................................................................... 17 1.6.2 login.sql ............................................................................................................................................................................ 17 1.6.3 Editing the LOGIN file.................................................................................................................................................. 17 2. Examples of iSQL in Use .......................................................................................................................................... 19 2.1 Logging In to iSQL .......................................................................................................................................................................... 20 2.1.1 Login Restrictions ......................................................................................................................................................... 20 2.2 Starting Up and Shutting Down ALTIBASE XDB................................................................................................................... 21 2.2.1 Starting Up ALTIBASE XDB ........................................................................................................................................ 21 2.2.2 Shutting Down ALTIBASE XDB................................................................................................................................. 22 2.3 Connecting and Disconnecting ................................................................................................................................................. 23 2.3.1 Connecting to a Database ......................................................................................................................................... 23 2.3.2 Disconnecting from a Database .............................................................................................................................. 26 2.4 Retrieving Information Related to the Database and Database Objects .................................................................... 27 2.4.1 Performance Views ...................................................................................................................................................... 27 2.4.2 Viewing the List of Tables .......................................................................................................................................... 27 2.4.3 Viewing a Table Structure ......................................................................................................................................... 28 2.4.4 Viewing Sequence Information ............................................................................................................................... 28 2.5 Controlling Transactions .............................................................................................................................................................. 30 2.5.1 Defining Transaction Modes .................................................................................................................................... 30 2.5.2 PLANCOMMIT ................................................................................................................................................................ 30 2.6 File Management ............................................................................................................................................................................ 31 2.6.1 Saving Results ................................................................................................................................................................ 31 2.6.2 Running Scripts ............................................................................................................................................................. 31 2.6.3 Saving SQL Statements .............................................................................................................................................. 32 2.6.4 Loading SQL Statements ........................................................................................................................................... 33 2.6.5 Saving DML Statements ............................................................................................................................................. 33 2.6.6 Editing Query Statements ......................................................................................................................................... 33 2.7 Formatting SELECT Query Results ............................................................................................................................................. 36 2.7.1 SET LINESIZE ................................................................................................................................................................... 36 iv 2.7.2 SET LOBSIZE .................................................................................................................................................................... 36 2.7.3 SET LOBOFFSET ............................................................................................................................................................. 37 2.7.4 SET FEEDBACK ............................................................................................................................................................... 37 2.7.5 SET PAGESIZE ................................................................................................................................................................. 38 2.7.6 SET HEADING.................................................................................................................................................................. 38 2.7.7 SET COLSIZE .................................................................................................................................................................... 39 2.8 Setting Output Options ................................................................................................................................................................ 40 2.8.1 Getting the Elapsed Time .......................................................................................................................................... 40 2.8.2 Setting Execution Time Units for Output ............................................................................................................. 40 2.8.3 Describing Foreign Key Information ..................................................................................................................... 41 2.8.4 Outputting Script Execution Results ..................................................................................................................... 42 2.8.5 Outputting an Execution Plan ................................................................................................................................. 43 2.8.6 Setting Result Output Orientation ......................................................................................................................... 45 2.9 Viewing iSQL Display Settings .................................................................................................................................................... 46 2.10 Host Variables ................................................................................................................................................................................ 48 2.10.1 Declaring a Host Variable ........................................................................................................................................ 48 2.10.2 Assigning a Value to a Host Variable ................................................................................................................... 48 2.10.3 Viewing Host Variables ............................................................................................................................................ 49 2.11 Executing Prepared SQL Statements ..................................................................................................................................... 50 2.11.1 Prepared SQL versus Dynamic SQL Statements ............................................................................................. 50 2.11.2 Prepared SQL Statements ....................................................................................................................................... 50 2.12 Creating, Executing and Dropping Stored Procedures................................................................................................... 51 2.12.1 Creating Procedures ................................................................................................................................................. 51 2.12.2 Executing Procedures ............................................................................................................................................... 51 2.12.3 Dropping Procedures ............................................................................................................................................... 55 2.13 Creating, Executing and Dropping Functions .................................................................................................................... 56 2.13.1 Creating Functions .................................................................................................................................................... 56 2.13.2 Executing Functions.................................................................................................................................................. 56 2.13.3 Dropping Functions .................................................................................................................................................. 57 2.14 Convenient User Functions ....................................................................................................................................................... 58 2.14.1 History ............................................................................................................................................................................ 58 2.14.2 Shell Commands ........................................................................................................................................................ 58 2.14.3 Getting Help ................................................................................................................................................................. 58 2.15 Using National Character Sets .................................................................................................................................................. 60 iPreface Preface About This Manual iSQL User’s Manual ii About This Manual This manual describes how to use iSQL to access a database. Intended Audience The following ALTIBASE® XDB™ users will find this manual useful: database administrators performance managers d atabase admin i stra t o rs application developers technical support workers I t is r e c o mmended that those reading this manual possess the following background knowledge: basic knowledge in the use of computers, operating systems, and operating system utilities experience in using relational databases and an understanding of database concepts computer programming experience experience in database ser ver, operating system or network administration Software Environment This manual has been prepared assuming that ALTIBASE XDB 6 is used as the database ser ver. Organization This manual is organized as follows: Chapter1: Using iSQL This chapter presents an over view of iSQL and explains the commands and how to use iSQL. Chapter2: Examples of iSQL in Use This chapter provides in- depth examples of each of the commands provided with iSQL. Documentation Conventions This section describes the conventions used in this manual. Understanding these conventions will make it easier to find information in this manual and other manuals in the series. There are two sets of conventions: About This Manual iii Preface syntax diagrams s ample c o de c o n v entions Syntax D iagrams This manual describes command syntax using diagrams composed of the following elements: Elements Meaning The star t of a command. If a syntactic element star ts with an arrow, it is not a complete command. The command continues to the next line. If a syntactic ele - ment ends with this symbol, it is not a complete command. The command continues from the previous line. If a syn- tactic element star ts with this symbol, it is not a complete command. The end of a statement. Indicates a mandator y element. Indicates an optional element. Indicates a mandator y element comprised of options. One, and only one, option must be specified. Indicates an optional element comprised of options. Reserved word ; SELECT NOT ADD DROP ASC DESC About This Manual iSQL User’s Manual iv Sample Code Conventions The code examples explain SQL, stored procedures, iSQL, and other command line statements. The following table describes the printing conventions used in the code examples. Indicates an optional element in which multiple elements may be specified. A comma must precede all but the first option. Elements Meaning , ASC DESC Rules Meaning Example [ ] Indicates an optional item. VARCHAR [(size)] [[FIXED |] VARIABLE] { } Indicates a mandator y field for which one or more items must be selected. { ENABLE | DISABLE | COMPILE } | A delimiter between optional or mandator y arguments. { ENABLE | DISABLE | COMPILE } [ ENABLE | DISABLE | COMPILE ] . . . Indicates that the previous argu- ment is repeated, or that sample code has been omitted. xdbiSQL> select e_lastname from employees; E_LASTNAME ------------------------ Moon Davenport Kobain . . . 20 rows selected. O ther Symbols Symbols other than those shown above are par t of the actual code. EXEC :p1 := 1; acc NUMBER(11,2); Italics Statement elements in italics indi- cate variables and special values specified by the user. SELECT * FROM table_name; CONNECT userID/password; Lower Case Char- acters Indicate program elements set by the user, such as table names, col- umn names, file names, etc. SELECT e_lastname FROM employees; About This Manual vPreface Related Docum e n t s For more detailed information, please re fe r to th e fol low ing documents: ALTIBASE XDB Installation Guide A L T IB ASE XDB Getting S t a r t e d ALTIBASE XDB Administrators’ Manual ALTIBASE XDB Replication Manual ALTIBASE XDB Precompiler Users’ Manual ALTIBASE XDB ODBC Reference A L T IB ASE XDB Ap plica t ion P r og ram I n t e r f ace Us ers ’ M a nual ALTIBASE XDB iSQL Users’ Manual A L T IB ASE XDB Utilities M a nual ALTIBASE XDB Error Message Reference On-line Manuals Online versions of our manuals (PDF or HTML) are available from the Altibase Customer Suppor t (http://suppor t.altibase.com/). Altibase Welcomes Your Comments Please let us know what you like or dislike about our manuals. To help us with future versions of our manuals, please tell us about any corrections or classifications that you would find useful. Include the following information: The name and version of the manual that you are using Any comments that you have about the manual Your name, address, and phone number When you need an immediate assistance regarding technical issues, please contact Altibase Cus- tomer Suppor t (http://suppor t.altibase.com/). Thank you. We appreciate your feedback and suggestions. Upper Case Char- acters Keywords and all elements pro- vided by the system appear in upper case. DESC SYSTEM_.SYS_INDICES_; Rules Meaning Example About This Manual iSQL User’s Manual vi 1Using iSQL 1 Using iSQL 1.1 iSQL Overview iSQL User’s Manual 2 1.1 iSQL Over view iSQL is a user tool for accessing an Altibase database and retrieving and modifying stored data using SQL statements and a number of additional commands. 1.1.1 iSQL Main Func tionality ALTIBASE XDB Star tup and Shutdown iSQL allows you to per form database management tasks, such as star ting up and shutting down the ser ver, and execute SQL statements using the same command prompt. Database Connection tion After ALTIBASE XDB star ts up, you can use various user names to connect to and disconnect from the database. Database Object Information Inquiry iSQL allows you to use SQL statements to quer y all database object information, and suppor ts con- venient commands for inquiring about main objects. Database Management via SQL Statements Because iSQL can be used to execute any kind of SQL statement, you can control transactions and alter databases quickly and conveniently. Functions to Improve User Convenience The above tasks can be easily and conveniently accomplished using the file management and edit- ing functions, the ability to execute shell commands over iSQL, and the HISTORY function. 1.2 Setting Up iSQL 3Using iSQL 1.2 S e tting Up iSQL In order for iSQL to access a ser ver, the following information is necessar y. ALTIBASE_XDB_HOME A path to a ser ver or client installation server_name T h e na me ( o r IP a ddr ess) of a c o mput e r on wh ich AL TI BASE XDB Se r v er is r u nn in g port_no T h e po r t number to be used wh en con n ec tin g via T C P or IP C user_id A User ID r e giste r ed in th e data ba se password The password corresponding to the User ID NLS_USE T h e cha r ac t e r se t w i th wh i c h t o display retrieved data to the user ALTIBASE_XDB_HOME can only be set using an environment variable, while the other settings may be made using command-line options. (For more information, please refer to 1.3 iSQL Command- Line Options.) The ALTIBASE_XDB_HOME environment variable must be set in order to use iSQL. In the case of Win- dows, this is set automatically when the ser ver is installed, but, in the case of the client, must be set manually by the user. We strongly suggest that you verify that this setting has been properly made, as the application may not run properly if this setting is not made. por t_no and NLS_USE can be set using the environment variables or the ser ver settings file (altibase_xdb.properties). If these settings are made via all three methods, they will take priority as follows, in descending order: 1. command-line options 2. environment variables (ALTIBASE_XDB_WSERVER_PORT_NO, ALTIBASE_XDB_NLS_USE) 3. ser ver settings file (altibase_xdb.proper ties) Therefore, when it is desired to connect using options other than those that have been previously set, the command-line options can be used, so that it is not necessar y to change the settings in the ser ver setting file or the environment variables. If any options have not been set, when iSQL is executed for the first time, the user will be prompted to enter the corresponding variables. At this time, it is essential to enter values that are valid and fol- low the proper format, other wise iSQL may not run properly. However, if the NLS_USE option in par ticular has not been set, no command prompt will appear at the time of execution. Instead, US7ASCII will be used, and a connection attempt will be made. In this case, if the character set of the database is not US7ASCII, the application will not execute properly, or some of the user ’s data may become corrupted. Thus it is paramount that NLS_USE be set to a suit- able value for the usage environment. In order to ensure stable iSQL operation, we recommend that the following environment variables 1.2 Setting Up iSQL iSQL User’s Manual 4 be set: ALTIBASE_XDB_HOME: the path to a ser ver or client installation ALTIBASE_XDB_WSER VER_PORT_NO: the por t number to use to connect to the ser ver ALTIBASE_XDB_NLS_USE: the character set to use to display retrieved data to the user PATH: the path containing the executable file, which must equal $ALTIBASE_XDB_HOME/bin 1.3 iSQL Command-Line Options 5Using iSQL 1.3 iSQL C o mmand-Line Options The ALTIBASE XDB ser ver must be star ted before iSQL is executed. The following options are case - insensitive. xdbisql [-H] [-S server_name] [-U user_id] [-P password] [-SYSDBA] [-PORT port_no] [-UNIXDOMAIN-FILEPATH filepath] [-IPC-FILEPATH filepath] [-SILENT] [-F infile_name] [-O outfile_name] [-NLS_USE] [-NLS_NCHAR_LITERAL_REPLACE 0|1] [-prefer_ipv6] -S ser v er_name Specifies the name (or IP address) of a computer on which ALTIBASE XDB Ser ver is running. When connecting in IPC, if this option is specified, it is ignored and no error is raised regardless of the operating system. It can be a host name, an IPv4 address, or an IPv6 address. An IPv6 address must be enclosed by a left square bracket([) and a right square bracket(]). For example, in the case of localhost (meaning this computer), localhost can be specified as the host name, 127.0.0.1 as the IPv4 address, or [::1] as the IPv6 address. For more information about the IPv6 address notation, please refer to the ALTIBASE XDB Administrator's Manual. -U us er_id Specifies a user ID registered in the database. -P passwor d Specifies the password corresponding to the user ID. -SYSDBA Specifies whether the administrative session will be created for SYS user. iSQL will connect to Daemon process if ser ver was running and -SYSDBA option was used. If the ser ver was not running, then iSQL will connect to idle instance and it can star t the ser ver. -PORT p o r t _no Specifies the por t number for connecting via TCP/IP. Users need to set 'XDB_ISQL_CONNEC TION=TCP' in the client environment and then enter the por t number with the -PORT option. If the environment variable XDB_ISQL_CONNEC TION is not set to IPC and the -PORT option is omitted, iSQL will tr y to connect via TCP/IP. First, I t will check the environment variable ALTIBASE_XDB_WSER VER_PORT_NO and then in the WSERVER_PORT_NO proper ty in altibase_xdb.proper ties, and if it is not set in either of those places, a prompt to enter it will be raised. -UNIXDOMAIN-FILEPATH filepath 1.3 iSQL Command-Line Options iSQL User’s Manual 6 When a ser ver and client connect using a Unix domain socket in a Unix environment (XDB_ISQL_CONNEC TION=UNIX), the connection will fail if the ser ver and client have different values for ALTIBASE_XDB_HOME and also have different Unix domain socket paths. In this case, if the ser ver and client use corresponding files (e.g. ALTIBASE_XDB_HOME/conf/cm- unixw), Unix domain communication is possible. -IPC-FILEPATH filepath When the client and the ser ver are to connect via IPC (XDB_ISQL_CONNEC TION=IPC) in a Unix environment, if ALTIBASE_XDB_HOME is set differently on them, they will not be able to con- nect if they have different socket paths. In this case, Unix domain communication can be achived using the ALTIBASE_XDB_HOME/conf/cm-ipcw file, and then information about shared memor y can be retrieved. However, this option can be omitted if ALTIBASE_XDB_WSER VER_IPC_FILEPATH is set. -F infi le_nam e Specifies a script file to be executed immediately after iSQL is launched. -O outfile_name Specifies a file in which to store the results of the excuted iSQL commands. This file will be cre - ated in the current director y. If the file already exists, it will be over written. -H Output s help inf o r m a t ion for iSQL execution. -SILENT T h is optio n tur n s o n sil e nt mo de . I f sil e nt mo de is on , non cr itica l me ssage s , such as th e c o p y - right notice, etc. will not be displayed. -NLS_USE Specifies the cha r a c ter set with which to display data to the user. The following character sets may be specified: US7ASCII K O16 K SC 56 01 MS949 BIG5 G B 231 28 0 UTF8 SHIFTJIS EUCJP I f omit t e d , the en vir onmen t v a riable AL TIB A SE _XDB_ N LS_USE o r altibase_x db .pr o per t ies will be used, in descending order of preference, and if it is still not specified, the basic character set (US7ASCII) will be used. -NLS_NCHAR_LITERAL_REPLACE 0: conver t all strings to the database character set without checking for the "N" character 1: do not conver t strings that are preceded by the "N" character to the database charac- 1.3 iSQL Command-Line Options 7Using iSQL ter s e t -prefer_ipv6 This option determines the IP address to be connected first when a host name is given for the - s option. If this option is specified and a host name is given for the -s option, this means that resolving the host name to the IPv6 address is preferred. If this option is omitted, isql connects to the IPv4 address by default. If it fails to connect to the preferred IP version address, an attempt is made to connect using the other IP version address. For example, when localhost is given for the -s option and this option is specified, isql first tries to connect to the [::1] IPv6 address. If this attempt fails, isql proceeds to connect to the 127.0.0.1 IPv4 address. If any of the -S, -U, or -P options are missing from the above command, the user will be prompted to input the option values. 1.4 iSQL Commands iSQL User’s Manual 8 1.4 iSQL Commands When iSQL is star ted, an iSQL command prompt will appear, and when iSQL commands are entered, the results of execution will be displayed. The iSQL commands are described individually in the fol- lowing table. Categor y Type Commands Description iSQL star tup and shut- down Star tup $ xdbisql [option] If you execute this command in a shell, iSQL will star t up. For information on the available options, please refer to the 1.3 iSQL Command-Line Options section. Prompt xdbiSQL> Type a command at the iSQL prompt and press the ENTER key. Shutdown EXIT; QUIT; Used to shut down iSQL. ALTIBASE XDB startup and shutdown ALTIBASE XDB Star tup STARTUP Use the PRE-PROCESS, PROCESS, CON- TROL, META, or SER VICE option to star t ALTIBASE XDB up to the corresponding stage. ALTIBASE XDB Shutdown SHUTDOWN Use one of the NORMAL, IMMEDIATE, or ABORT options to shut down ALTIBASE XDB. Database con- nection and disconnection Access the ser ver as another user CO N N E C T [logon] [nls] [AS sysdba]; where logon has the syn- tax: user1[/pass1] where nls has the syntax: NLS=character_set This command allows access to the database as user1 with password pass1 after having already accessed the data- base as another user in iSQL. If CON- NEC T is successful, the information related to the previous session is cleared.The AS clause allows the SYS user to access the ser ver in sysdba man- ager mode. Only one user is allowed to connect as sysdba at a time. The nls option specifies the character set. For detailed information on charac- ter sets, please refer to the 1.3 iSQL Command-Line Options: -NLS_USE option. Terminate a connection DISCONNEC T ; Ends the current session and terminates the connection with the ser ver. 1.4 iSQL Commands 9Using iSQL Database object infor- mation inquir y Display per- formance view list SELEC T * FROM V$TAB; Displays the list of all of the per for- mance views provided by the sys- tem.This command is available only in iSQL. Display table list SELEC T * FROM TAB ; Displays the list of currently created tables.This command is only available in iSQL. Display table structure DESC samp ; Lists the column definitions for the table samp Display sequence Information SELEC T * FROM V$SEQ; If you accessed the ser ver with the SYS account, information on all sequences is displayed.If you accessed the ser ver as another user, only the information on the sequences generated by that user will be displayed. This command is avail- able only in iSQL. Tr a n s a c t i o n control Setting trans- action mode AUTOCOMMIT ON; AUTOCOMMIT OFF; Determines whether to commit com- mands automatically at the time that they are executed. Default: ON Other SET functions SET PLANCOMMIT ON; SET PLANCOMMIT OFF; Determines whether to automatically commit commands such as DESC, SELEC T * FROM TAB, or SELEC T * FROM seq_name when EXPLAIN PLAN is ON (or ONLY ) and AUTOCOMMIT is OFF. Default: OFF Categor y Type Commands Description 1.4 iSQL Commands iSQL User’s Manual 10 Fi l e m a n a g e - ment Output data to a file SPOOL file_name ; Star ts writing the results shown on the screen to the file file_name. SPOOL OFF; Stops writing the results shown on the screen to the file file_name. SQL script execution START file_name ; Reads a script file and executes the SQL statements in sequence. @ file_name; Per forms a function similar to that of startup when executed via an iSQL prompt. @@ file_name; When used in a script, this command executes the file file_name in the same director y as the calling script. Save SQL statement to file SAVE abc.sql; Saves the last of the commands cur- rently in the iSQL buffer to a file. Lo ad S QL statement LOAD abc.sql; Loads the first of the commands saved in a file at the end of the command buf- fer. Save DML statements to file SET QUERYLOGGING ON; SET QUERYLOGGING OFF; This writes executed DML statements, such as INSERT, UPDATE, DELETE and MOVE, in $ALTIBASE_XDB_HOME/trc/ isql_query.log. Edit quer y statements ED For creating and editing temporar y files. ED file_name[.sql] For editing existing files or creating new files. 2ED or 2 ED Edits quer y command number 2 in the histor y list. Categor y Type Commands Description 1.4 iSQL Commands 11 Using iSQL Control out- put option Fo r m a t SELEC T result column SET LINESIZE 100; Sets the length of a display line for out- putting the result of a SELEC T quer y. Must be between 10 and 32767 inclu- sive. Default: 80 Fo r m a t SELEC T result column of type CLOB SE T LOBSIZE 10; Sets the number of characters to display when a CLOB column is output. Default : 80 SET LOBOFFSET 3; Sets the number of characters by which to offset the display when a CLOB col- umn is output. Default : 0 Output SELEC T result count SET FEED[BACK ] ON; SET FEED[BACK ] OFF; SET FEED[BACK ] n; Determines whether to output the number of rows in a quer y result. Fo r m a t r o w s of SELEC T result SET PAGESIZE 10; Sets how many records of a SELEC T quer y result are output at one time. When set to 0, all resultant records are output. Default: 0 Show/hide SELEC T result header SET HEADING ON; SET HEADING OFF; Sets whether to output the header of a SELEC T result Default: ON Set SELEC T result output size. SE T COLSIZE N ; Sets the number of characters to output when CHAR or VARCHAR type columns are output as a SELEC T quer y result. Show SQL statement execution time SET TIMING ON; SET TIMING OFF; Sets whether to output the amount of time taken to execute a SQL command. Default: OFF Set the SQL statement execution time units for output SET TIMESCALE SEC; SET TIMESCALE MILSEC; SET TIMESCALE MICSEC; SET TIMESCALE NANSEC; Sets the unit of time for executing SQL statements as seconds, milliseconds, microseconds or nanoseconds. Show/hide foreign key information SET FOREIGNKEYS ON; SET FOREIGNKEYS OFF; Determines whether to include foreign key information in the output when dis- playing the table structure (using DESC). Default: OFF Show/hide script execu- tion result SET TERM ON; SET TERM OFF; Determines whether to display the results of execution of a script file on the screen. Default: ON Categor y Type Commands Description 1.4 iSQL Commands iSQL User’s Manual 12 Control out- put option Output execu- tion plan tree ALTER SESSION SET EXPLAIN PLAN = ON; ALTER SESSION SET EXPLAIN PLAN = ONLY; ALTER SESSION SET EXPLAIN PLAN = OFF; Determines whether to output an exe - cution plan for a SELEC T statement. Default: OFF SELEC T result output direc- tion SET VERTICAL ON; SET VERTICAL OFF; Displays SELEC T results ver tically when set to ON. Default: OFF Show value of iSQL display settings SHOW LINESIZE Displays the current LINESIZE value. SHOW COLSIZE Displays the current COLSIZE value. SHOW LOBOFFSET Displays the current LOBOFFSET value. SHOW LOBSIZE Displays the current LOBSIZE value. SHOW PAGESIZE Displays the current PAGESIZE value. SHOW PLANCOMMIT Shows whether PLANCOMMIT is ON or OFF. SHOW QUERYLOGGING Shows whether DML statements will be written to ALTIBASE_XDB_HOME/trc/ isql_quer y.log when executed. SHOW FEEDBACK Shows the current FEEDBACK value. SHOW HEADING Shows the current HEADING setting. SHOW TERM Shows the current TERM setting. SHOW TIMING Shows the current TIMING setting. SHOW TIMESCALE This shows the current time units for the execution of SQL statements. SHOW USER Shows the current user. SHOW FOREIGNKEYS Shows the current foreign key display setting. SHOW VERTICAL Shows whether the results of a SELEC T quer y will be output ver tically. SHOW ALL Shows the set values of the display set- tings for the current session. Categor y Type Commands Description 1.4 iSQL Commands 13 Using iSQL Variable and Prepared SQL statements Va r i a b l e d e c - laration VA R p1 INTEGER; Declares the variable p1 as integer type. VA R I A B L E p2 CHAR(10); Declares the variable p2 as CHAR type. Assign values to variables EXECUTE :p1 := 100 ; Assigns the value 100 to variable p1. EXEC :p2 := ‘abc’ ; Assigns the text ‘a b c ’ to variable p2. Va r i a b l e d i s - play PRINT VAR[IABLE] ; Shows the currently declared variables. PRINT p1; Shows the type and value of variable p1. Prepared SQL statement execution PREPARE SQL statement ; Separates the processes of quer y opti- mization and execution, and executes the quer y as a prepared SQL statement. In iSQL, the default execution method for executing SQL statements is the Direct Execution method, in which opti- mization and execution are per formed at once.There is no difference between the two execution methods in iSQL in terms of the results obtained, however, prepared SQL statements can be used to bind variables to values and execute SQL statements based thereon. Functions for user conve - nience Histor ylist dis- play HISTORY; H; Shows a list of the commands currently saved in the iSQL buffer. Repeat execu- tion / Repeats execution of the command cur- rently in the iSQL buffer. The most recently executed command will be executed again. 2/ Executes the second command in a list output using the HISTORY command. Shell com- mand execu- tion ! shell command A shell command that follows an excla- mation point will be immediately exe - cuted from within iSQL. Comment /* comment */ -- comment Indicate a multiple -line comment and a single -line comment, respectively. Help HELP; HELP INDEX; HELP EXIT; Provides information on how to use help, outputs a list of commands, and describes (e.g.) the EXIT command, respec tively. Categor y Type Commands Description 1.5 iSQL Environment Variables iSQL User’s Manual 14 1.5 iSQL Environment Variables 1.5.1 ALTIBASE_XDB_HOME Sets the director y in which the package is installed. In the case of MS Windows, this is set automatically when the ser ver is installed, however, when the client is installed, this is not automatically set due to the danger of a conflict with the environment variables for the ser ver. When installing the client, the user must manually set this director y. This environmental variable must be set in order to use ISQL. 1.5.2 ALTIBASE_XDB_WSERVER_PORT_NO This is the por t number of the ser ver to connect to. This can be specified either by using the -PORT option or in altibase_xdb.proper ties. If no designated por t number can be found (in descending order of precedence) in the -PORT option, in the environment variable ALTIBASE_XDB_WSERVER_PORT_NO, or in altibase_xdb.proper- ties, a prompt to enter the por t number will appear. 1.5.3 ALTIBASE_XDB_NLS_USE This is the character set used to display retrieved results to the user. US7ASCII K O16 K SC 56 01 MS949 BIG5 G B 231 28 0 UTF8 SHIFTJIS EUCJP T h is ca n b e set ei th er using the -NLS_USE option or in altibase_xdb.proper ties. If NLS_USE is not specified using the -NLS_USE option, the environment variable ALTIBASE_XDB_NLS_USE, or altibase_xdb.proper ties (in descending order of precedence), US7ASCII is used as the default character set. 1.5.4 ALTIBASE_XDB_NLS_NCHAR_LITERAL_REPLACE By default, iSQL conver ts an entire quer y string to the database character set before sending the data to the database. This behavior can be prevented for a given string literal by setting this prop - 1.5 iSQL Environment Variables 15 Using iSQL er ty to 1 and placing the "N" character in front of the string literal. A proper ty setting of 1 instructs iSQL to search for the "N" character in front of ever y string literal. If the "N" character is found, iSQL sends the string to the database without conver ting it to the data- base character set. This is useful when it is desired to use NCHAR type data that are encoded differ- ently from the database character set. 0: conver t all strings to the database character set without checking for the "N" character 1: do not conver t strings that are preceded by the "N" character to the database character set Note: Setting this variable to 1 can be expensive in terms of usage of client resources. 1.5.5 XDB_ISQL_CONNECTION When ALTIBASE XDB is used in a client-ser ver model, the user can set an environment variable to select the client-ser ver connection method that is suitable for the operating environment. ALTIBASE XDB suppor ts the TCP/IP, IPC, and DA (Direct Attach) mode communication mechanisms. For exam- pl e, to s ele c t DA m od e for com munication mechanism between ser ver and clients, the user must set the value “DA” for the environment variable XDB_ISQL_CONNEC TION. The default communication mechanism between ser ver and clients with ALTIBASE XDB ser vers is TCP/IP. Note that when using the IPC protocol the value of ALTIBASE XDB proper ties related to the IPC chan- nel (IPC_CHANNEL_COUNT ) must be considered. The following example shows how to set the environment variable when using the IPC protocol: CSH: setenv XDB_ISQL_CONNECTION IPC SH: XDB_ISQL_CONNECTION=IPC; export XDB_ISQL_CONNECTION The following example shows how to set the environment variable when using DA mode: CSH: setenv XDB_ISQL_CONNECTION DA SH: XDB_ISQL_CONNECTION=DA; export XDB_ISQL_CONNECTION 1.5.6 XDB_ISQL_BUFFER_SIZE The size of the buffer in which to store queries can be set using this environment variable. Ex) CSH: setenv XDB_ISQL_BUFFER_SIZE 128000 SH: XDB_ISQL_BUFFER_SIZE = 128000; export XDB_ISQL_BUFFER_SIZE 1.5.7 ALTIBASE_XDB_DATE_FORMAT When retrieving Date type data using a SELEC T statement, the environment variable ALTIBASE_XDB_DATE_FORMAT can be used to change the default date format, which is YYYY/MM/ DD HH:MI:SS, to some other date format. Ex) For Born, Korn, or Bash Shell export ALTIBASE_XDB_DATE_FORMAT=’DD-MON-YYYY’ 1.5 iSQL Environment Variables iSQL User’s Manual 16 1.5.8 XDB_ISQL_EDITOR This environment variable can be used to change the default editor ( Windows: notepad, the others: /bin/vi ). Ex) CSH: setenv XDB_ISQL_EDITOR /usr/bin/ed SH: XDB_ISQL_EDITOR=/usr/bin/ed; export XDB_ISQL_EDITOR 1.5.9 ALTIBASE_XDB_WSERVER_IPC_FILEPATH In a Unix environment, if a client and the ser ver have different values for ALTIBASE_XDB_HOME, they will not be able to connect via IPC if they have different Unix domain socket paths. In this case, in order to be able to connect via IPC, it will be necessar y to set the ALTIBASE_XDB_WSER VER_IPC_FILEPATH environment variable or the -IPC_FILEPATH iSQL option to the $ALTIBASE_XDB_HOME/conf/cm-ipcw file used by the ser ver. 1.6 Personalizing iSQL 17 Using iSQL 1.6 Personalizing iSQL iSQL users can customize their iSQL environment and use the same settings for each session. For example, using the OS file, the user can specify a desired output format so that each quer y result dis- plays the current time whenever quer y results are output. These files can be categorized into the fol- lowing two types. 1.6.1 glogin.sql For initialization tasks that must be conducted when iSQL is star ted, iSQL supports the creation of a global script file, glogin.sql, by the DB administrator. iSQL executes this script whenever any user executes iSQL or attempts to connec t to ALTIBASE XDB for the first time. The global file allows the DB administrator to make site -specific iSQL environment settings for all users. The global script file is located in $ALTIBASE_XDB_HOME/conf. 1.6.2 login.sql iSQL also suppor ts the login.sql file, which is executed after glogin.sql. If both the glogin.sql file and the login.sql file exist, login.sql is executed after glogin.sql during iSQL star tup, so the commands in login.sql will take precedence. If several people share one Unix account, it will be impossible for them to personalize the glogin.sql file. In this case, individual users may add SQL commands, stored procedures, or iSQL commands to their respective login.sql files in their personal work directories. When a user starts up iSQL, iSQL automatically searches the current director y for the login.sql file and executes the commands in it. The login.sql file cannot modify initial iSQL settings or individual session actions. 1.6.3 Editing the LOGIN file The user may change the LOGIN file, like any other script. The following is an example of user1 creat- ing a LOGIN file that turns off autocommit mode and executes SQL statements: $ vi glogin.sql AUTOCOMMIT ON SET HEADING OFF SELECT sysdate FROM dual; $ vi login.sql AUTOCOMMIT OFF SET HEADING ON DROP TABLE savept; CREATE TABLE savept(num INTEGER); INSERT INTO savept VALUES(1); SAVEPOINT sp1; INSERT INTO savept VALUES(2); SELECT * FROM savept; ROLLBACK TO SAVEPOINT sp1; SELECT * FROM savept; COMMIT; $ xdbisql ----------------------------------------------- Altibase Client Query utility. 1.6 Personalizing iSQL iSQL User’s Manual 18 Release Version 6.1.1.0.0 Copyright 2000, Altibase Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : user1 Write Password : XDB_ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 Set autocommit on success. -> Executing glogin.sql first 28-DEC-2004 -> heading off 1 row selected. Set autocommit off success. -> Execute login.sql in the current work director y of the user after glogin.sql is executed. Drop success. Create success. 1 row inserted. Savepoint success. -> It is executable only when Autocommit mode is off 1 row inserted. NUM -> heading on -------------- 1 2 2 rows selected. Rollback success. NUM -------------- 1 1 row selected. Commit success. 19 Examples of iSQL in Use 2 Examples of iSQL in Use This chapter describes several examples of the use of iSQL to manipulate databases. 2.1 Logging In to iSQL iSQL User’s Manual 20 2.1 Logging In to iSQL To use iSQL, users must first be logged in. Connection information may be input directly via a com- mand line, or via the iSQL input prompt. xdbisql -U userID -P password [-SYSDBA] or xdbisql [-SYSDBA] Additional information necessar y for connection with the ser ver is the ser ver name (-S), user ID (-U), and password (-P). The user ID and password are not case -sensitive. In order for the SYS user to use iSQL as an administrator, the SYSDBA option is used. The SYSDBA option can be used for remote access. 2.1.1 Login Restric tions Only one user is permitted to connect in SYSDBA mode at one time. Two or more users cannot connect in SYSDBA mode at the same time. You can access the database remotely in SYSDBA mode, but can' t star t up the database. For detailed information on system privileges, please refer to the ALTIBASE XDB SQL Reference. For detailed information on errors that may arise during iSQL execution, please refer to the ALTIBASE XDB Error Message Reference. $ xdbisql -S 127.0.0.1 -U sys -P manager [-SYSDBA] or $ xdbisql [-sysdba] ----------------------------------------------- Altibase XDB Client Query utility. Release Version 6.1.1.0.0 Copyright 2000, Altibase Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : sys Write Password : manager -> The password on the screen is not displayed. XDB_ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1, PORT_NO = 20300 xdbiSQL(sysdba)> -> iSQL is connected to the ser ver, and SQL, iSQL, and PSM commands can be input and executed here. 2.2 Starting Up and Shutting Down ALTIBASE XDB 21 Examples of iSQL in Use 2.2 Star ting Up and Shutting Down ALTIBASE XDB iSQL can be used to star t up and shut down ALTIBASE XDB. 2.2.1 Star ting Up ALTIBASE XDB To start up ALTIBASE XDB, iSQL must first be launched with the -sysdba option, in the same way as when a database is created. Note: ALTIBASE XDB star tup commands can be executed only with the UNIX account with which ALTIBASE XDB (including iSQL) was installed. The following is an example of the use of iSQL to star t up ALTIBASE XDB. For more information on star ting up ALTIBASE XDB, please refer to the ALTIBASE XDB Administrators’ Manual Chapter 4: Star tup and Shutdown. $ xdbisql -s 127.0.0.1 -u sys -p manager -sysdba ------------------------------------------------ Altibase XDB Client Query utility. Release Version 6.1.1.0.0 Copyright 2000, Altibase Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------ XDB_ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1 [ERR-910FB : Connected to idle instance] xdbiSQL(sysdba)> startup service Connecting to the DB server..... Connected. TRANSITION TO PHASE : PROCESS TRANSITION TO PHASE : CONTROL TRANSITION TO PHASE : META [SM] Recovery Phase - 1 : Preparing Database : Created Shared Memory Version => Parallel Loading [SM] Recovery Phase - 2 : Loading Database [SM] Recovery Phase - 3 : Skipping Recovery Threads... [SM] Refine Memory Table : ............................................................................ ...................... [SUCCESS] [SM] Rebuilding Indices [Total Count:116] ............................................................................ ........................................ [SUCCESS] TRANSITION TO PHASE : SERVICE [CM] Listener started : TCP on port 20300 [IPV4] [CM] Listener started : UNIX [QP-PREPARE] PSM loading......... [SUCCESS] --- Begin to execute Replication Manager --- TRANSITION TO PHASE : PROCESS TRANSITION TO PHASE : CONTROL 2.2 Starting Up and Shutting Down ALTIBASE XDB iSQL User’s Manual 22 TRANSITION TO PHASE : META TRANSITION TO PHASE : SERVICE [QP-PREPARE] PSM loading......... [SUCCESS] [RP] Initialization : [PASS] --- Replication Manager Starts SUCCESS --- [RP] Initialization : [PASS] --- Begin to execute WServer --- TRANSITION TO PHASE : PROCESS TRANSITION TO PHASE : CONTROL TRANSITION TO PHASE : META TRANSITION TO PHASE : SERVICE [CM] Listener started : TCP on port 20302 [IPV4] [CM] Listener started : UNIX [CM] Listener started : IPC [QP-PREPARE] PSM loading......... [SUCCESS] [RP] Initialization : [PASS] --- WServer Start SUCCESS --- --- STARTUP Process SUCCESS --- Command executed successfully. 2.2.2 Shutting Down ALTIBASE XDB Use the SHUTDOWN command to shut down a running ALTIBASE XDB ser ver. The following is an example of t he use of iSQL to shut down ALTIBASE XDB. For more information on shutting down ALTIBASE XDB, please refer to the ALTIBASE XDB Administrators’ Manual Chapter 4: Star tup and Shutdown. xdbiSQL(sysdba)> shutdown normal Ok..Shutdown Proceeding.... TRANSITION TO PHASE : Shutdown Altibase shutdown normal success. 2.3 Connecting and Disconnecting 23 Examples of iSQL in Use 2.3 Connec ting and Disconnec ting 2.3.1 Connec ting to a Database The CONNEC T command is used to connect to ALTIBASE XDB with a specified user ID. If the first con- nection attempt fails, the CONNECT command does not prompt again for the user ID or password. CONNECT [logon] [nls] [AS SYSDBA]; where longon has the syntax: userID[/password] and nls has the syntax: NLS=character_set 2.3.1.1 userID/password The user ID and password with which to establish a connection to ALTIBASE XDB. 2.3.1.2 NLS=character_set The NLS option specifies the character set. xdbiSQL> CONNECT sys/manager NLS=US7ASCII Connect success. 2.3.1.3 AS SYSDBA The AS clause permits the SYS user to access the ser ver in sysdba manager mode. If CONNEC T is successful, the current session is terminated, and a connection is established to the ser ver using the specified user ID and password and the information in altibase_xdb.proper ties. Accordingly, the session information is cleared before connecting. For instance, if AUTOCOMMIT mode is set to TRUE in altibase_xdb.proper ties and AUTOCOMMIT mode is changed to FALSE in iSQL, when the CONNEC T statement is executed, AUTOCOMMIT mode will be changed to TRUE, because of the value in altibase_xdb.proper ties. If CONNEC T fails, the previous session is terminated and the connection with the ser ver is closed. In other words, the result of all SQL statements executed thereafter will be a “Not connected” message. Execute “CONNEC T userID/password [AS SYSDBA]” to attempt to re - establish a connection with the ser ver. $ xdbisql ----------------------------------------------- Altibase XDB Client Query utility. Release Version 6.1.1.0.0 Copyright 2000, Altibase Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------- Write Server Name (default:127.0.0.1) : 2.3 Connecting and Disconnecting iSQL User’s Manual 24 Write UserID : SYS Write Password : XDB_ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 xdbiSQL> SHOW USER; User : SYS xdbiSQL> CREATE USER altiadmin IDENTIFIED BY alti1234; Create success. xdbiSQL> CONNECT altiadmin/alti1234; Connect success. xdbiSQL> SHOW USER; User : ALTIADMIN xdbiSQL> CREATE TABLE altitbl(i1 INTEGER, i2 CHAR(5)); Create success. xdbiSQL> SELECT * FROM tab; TABLE NAME TYPE --------------------------------------------- ALTITBL TABLE CLEAR_DP SYNONYM DUAL SYNONYM EXPORT_PARTITION_TO_FILE SYNONYM EXPORT_TO_FILE SYNONYM EXPORT_USER_TABLES SYNONYM FCLOSE SYNONYM FCLOSE_ALL SYNONYM FCOPY SYNONYM FFLUSH SYNONYM FOPEN SYNONYM FREMOVE SYNONYM FRENAME SYNONYM GET_LINE SYNONYM IMPORT_FROM_FILE SYNONYM IS_OPEN SYNONYM NEW_LINE SYNONYM PRINT SYNONYM PRINTLN SYNONYM PUT SYNONYM PUT_LINE SYNONYM RAISE_APPLICATION_ERROR SYNONYM REGISTER SYNONYM REMOVE SYNONYM REMOVEALL SYNONYM REMOVE_DP SYNONYM REMOVE_XID SYNONYM RESUME_DP SYNONYM SET_DEFAULTS SYNONYM SIGNAL SYNONYM SLEEP SYNONYM WAITANY SYNONYM WAITONE SYNONYM 33 rows selected. xdbiSQL> CONNECT sys/manager; Connect success. xdbiSQL> SHOW USER; User : SYS xdbiSQL> CREATE TABLE systbl(i1 INTEGER, i2 CHAR(5)); Create success. 2.3 Connecting and Disconnecting 25 Examples of iSQL in Use xdbiSQL> SELECT * FROM tab; USER NAME TABLE NAME TYPE -------------------------------------------------- SYSTEM_ STO_COLUMNS_ SYSTEM TABLE SYSTEM_ STO_DATUMS_ SYSTEM TABLE SYSTEM_ STO_ELLIPSOIDS_ SYSTEM TABLE SYSTEM_ STO_GEOCCS_ SYSTEM TABLE SYSTEM_ STO_GEOGCS_ SYSTEM TABLE SYSTEM_ STO_PRIMEMS_ SYSTEM TABLE SYSTEM_ STO_PROJCS_ SYSTEM TABLE SYSTEM_ STO_PROJECTIONS_ SYSTEM TABLE SYSTEM_ STO_SRS_ SYSTEM TABLE SYSTEM_ STO_USER_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_COMMENTS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINTS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINT_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_DATABASE_ SYSTEM TABLE SYSTEM_ SYS_DATABASE_LINKS_ SYSTEM TABLE SYSTEM_ SYS_DATA_PORTS_ SYSTEM TABLE SYSTEM_ SYS_DIRECTORIES_ SYSTEM TABLE SYSTEM_ SYS_DN_USERS_ SYSTEM TABLE SYSTEM_ SYS_DUMMY_ SYSTEM TABLE SYSTEM_ SYS_ENCRYPTED_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_GRANT_OBJECT_ SYSTEM TABLE SYSTEM_ SYS_GRANT_SYSTEM_ SYSTEM TABLE SYSTEM_ SYS_INDEX_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_INDEX_PARTITIONS_ SYSTEM TABLE SYSTEM_ SYS_INDICES_ SYSTEM TABLE SYSTEM_ SYS_LOBS_ SYSTEM TABLE SYSTEM_ SYS_PART_INDICES_ SYSTEM TABLE SYSTEM_ SYS_PART_KEY_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_PART_LOBS_ SYSTEM TABLE SYSTEM_ SYS_PART_TABLES_ SYSTEM TABLE SYSTEM_ SYS_PRIVILEGES_ SYSTEM TABLE SYSTEM_ SYS_PROCEDURES_ SYSTEM TABLE SYSTEM_ SYS_PROC_PARAS_ SYSTEM TABLE SYSTEM_ SYS_PROC_PARSE_ SYSTEM TABLE SYSTEM_ SYS_PROC_RELATED_ SYSTEM TABLE SYSTEM_ SYS_REPLICATIONS_ SYSTEM TABLE SYSTEM_ SYS_REPL_HOSTS_ SYSTEM TABLE SYSTEM_ SYS_REPL_ITEMS_ SYSTEM TABLE SYSTEM_ SYS_REPL_OFFLINE_DIR_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_INDEX_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_INDICES_ SYSTEM TABLE SYSTEM_ SYS_REPL_OLD_ITEMS_ SYSTEM TABLE SYSTEM_ SYS_REPL_RECOVERY_INFOS_ SYSTEM TABLE SYSTEM_ SYS_SECURITY_ SYSTEM TABLE SYSTEM_ SYS_SYNONYMS_ SYSTEM TABLE SYSTEM_ SYS_TABLES_ SYSTEM TABLE SYSTEM_ SYS_TABLE_PARTITIONS_ SYSTEM TABLE SYSTEM_ SYS_TBS_USERS_ SYSTEM TABLE SYSTEM_ SYS_TRIGGERS_ SYSTEM TABLE SYSTEM_ SYS_TRIGGER_DML_TABLES_ SYSTEM TABLE SYSTEM_ SYS_TRIGGER_STRINGS_ SYSTEM TABLE SYSTEM_ SYS_TRIGGER_UPDATE_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_USERS_ SYSTEM TABLE SYSTEM_ SYS_VIEWS_ SYSTEM TABLE SYSTEM_ SYS_VIEW_PARSE_ SYSTEM TABLE SYSTEM_ SYS_VIEW_RELATED_ SYSTEM TABLE SYSTEM_ SYS_XA_HEURISTIC_TRANS_ SYSTEM TABLE ALTIADMIN ALTITBL TABLE SYS SYSTBL TABLE 2.3 Connecting and Disconnecting iSQL User’s Manual 26 CLEAR_DP SYNONYM DUAL SYNONYM EXPORT_PARTITION_TO_FILE SYNONYM EXPORT_TO_FILE SYNONYM EXPORT_USER_TABLES SYNONYM FCLOSE SYNONYM FCLOSE_ALL SYNONYM FCOPY SYNONYM FFLUSH SYNONYM FOPEN SYNONYM FREMOVE SYNONYM FRENAME SYNONYM GET_LINE SYNONYM IMPORT_FROM_FILE SYNONYM IS_OPEN SYNONYM NEW_LINE SYNONYM PRINT SYNONYM PRINTLN SYNONYM PUT SYNONYM PUT_LINE SYNONYM RAISE_APPLICATION_ERROR SYNONYM REGISTER SYNONYM REMOVE SYNONYM REMOVEALL SYNONYM REMOVE_DP SYNONYM REMOVE_XID SYNONYM RESUME_DP SYNONYM SET_DEFAULTS SYNONYM SIGNAL SYNONYM SLEEP SYNONYM WAITANY SYNONYM WAITONE SYNONYM 93 rows selected. 2.3.2 Disconnec ting from a Database DISCONNEC T is used to terminate the current session and disconnect from the ser ver. The result of all subsequently executed SQL statements will be a “Not connected” message, and “CONNEC T use - rID/password” must be executed in order to connect to the ser ver again. DISCONNECT; xdbiSQL> INSERT INTO systbl VALUES(1, 'A1'); 1 row inserted. xdbiSQL> INSERT INTO systbl VALUES(2, 'A2'); 1 row inserted. xdbiSQL> SELECT * FROM systbl; I1 I2 ---------------------- 1 A1 2 A2 2 rows selected. xdbiSQL> DISCONNECT; Disconnect success. xdbiSQL> INSERT INTO systbl VALUES(3, 'A3'); [ERR-91020 : No Connection State] xdbiSQL> SELECT * FROM systbl; [ERR-91020 : No Connection State] xdbiSQL> CONNECT sys/manager; Connect success. 2.4 Retrieving Information Related to the Database and Database Objects 27 Examples of iSQL in Use 2.4 Retrieving Information Related to the Database and Database Objec ts 2.4.1 Per formance Views A per formance view is a type of data dictionar y table capable of inquiring about the ser ver status and database information. The following SELEC T statement can be used to view the list of per for- mance views provided by ALTIBASE XDB: xdbiSQL> SELECT * FROM v$tab; TABLE NAME TYPE --------------------------------------------- V$ALLCOLUMN PERFORMANCE VIEW V$ARCHIVE PERFORMANCE VIEW V$BUFFPAGEINFO PERFORMANCE VIEW V$BUFFPOOL_STAT PERFORMANCE VIEW V$CATALOG PERFORMANCE VIEW V$DATABASE PERFORMANCE VIEW V$DATAFILES PERFORMANCE VIEW V$DATATYPE PERFORMANCE VIEW V$DBA_2PC_PENDING PERFORMANCE VIEW V$DBLINK_REMOTE_STATEMENT_INFO PERFORMANCE VIEW V$DBLINK_REMOTE_TRANSACTION_INFO PERFORMANCE VIEW V$DBLINK_TRANSACTION_INFO PERFORMANCE VIEW V$DB_FREEPAGELISTS PERFORMANCE VIEW V$DB_PROTOCOL PERFORMANCE VIEW V$DIRECT_PATH_INSERT PERFORMANCE VIEW V$DISKTBL_INFO PERFORMANCE VIEW V$DISK_BTREE_HEADER PERFORMANCE VIEW V$DISK_RTREE_HEADER PERFORMANCE VIEW V$EVENT_NAME PERFORMANCE VIEW V$FILESTAT PERFORMANCE VIEW V$FLUSHER PERFORMANCE VIEW V$FLUSHINFO PERFORMANCE VIEW . . For the complete list of the per formance views provided with ALTIBASE XDB and the meanings of the columns, please refer to the ALTIBASE XDB General Reference Chapter 3: Data Dictionary. Data in a particular per formance view can be queried in the same way as an ordinar y table using a SELEC T statement, and using JOIN, etc., results can be output in various forms. 2.4.2 Viewing the List of Tables Information on all of the tables that exist in the database can be retrieved using the following SELEC T statement. The SYS_TABLES_ meta table is an internal system table that contains informa- tion about the database catalog provided by ALTIBASE XDB. xdbiSQL> SELECT * FROM system_.sys_tables_; . . xdbiSQL> SELECT * FROM tab; -> This command is available in iSQL only. USER NAME TABLE NAME TYPE -------------------------------------------------- . . 2.4 Retrieving Information Related to the Database and Database Objects iSQL User’s Manual 28 2.4.3 Viewing a Table Struc ture The following command is used to retrieve information on user-created tables: DESC table_name; CREATE TABLE departments ( DNO SMALLINT PRIMARY KEY, DNAME CHAR(30) NOT NULL, DEP_LOCATION CHAR(9), MGR_NO INTEGER ); xdbiSQL> DESC departments; -> table_name : The name of a table whose information (table structure) you want to know. [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ----------------------------------------------------------- NAME TYPE IS NULL ----------------------------------------------------------- DNO SMALLINT FIXED NOT NULL DNAME CHAR(30) FIXED NOT NULL DEP_LOCATION CHAR(9) FIXED MGR_NO INTEGER FIXED [ INDEX ] ----------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ----------------------------------------------------------- __SYS_IDX_ID_122 BTREE UNIQUE DNO ASC [ PRIMARY KEY ] ----------------------------------------------------------- DNO 2.4.4 Viewing Sequence Information The following commands are used to obtain information on all sequences that exist in the database: SELECT * FROM seq; xdbiSQL> CONNECT sys/manager; Connect success. xdbiSQL> CREATE USER user1 IDENTIFIED BY user1; Create success. xdbiSQL> CONNECT user1/user1; Connect success. xdbiSQL> CREATE SEQUENCE seq1 MAXVALUE 100 CYCLE; Create success. xdbiSQL> CREATE SEQUENCE seq2; Create success. xdbiSQL> CONNECT sys/manager; Connect success. xdbiSQL> CREATE SEQUENCE seq2 START WITH 20 INCREMENT BY 30; Create success. xdbiSQL> CREATE SEQUENCE seq3 CACHE 40; Create success. xdbiSQL> SELECT * FROM seq; -> When accessing the database using the SYS account, informa- tion of all sequences will be displayed. USER_NAME -------------------------------------------- SEQUENCE_NAME CURRENT_VALUE -------------------------------------------------------------------- INCREMENT_BY MIN_VALUE MAX_VALUE CYCLE 2.4 Retrieving Information Related to the Database and Database Objects 29 Examples of iSQL in Use ---------------------------------------------------------------------------- CACHE_SIZE ------------------------- SYS SEQ2 30 1 9223372036854775806 NO 20 SYS SEQ3 1 1 9223372036854775806 NO 40 USER1 SEQ1 1 1 100 YES 20 USER1 SEQ2 1 1 9223372036854775806 NO 20 4 rows selected. xdbiSQL> CONNECT user1/user1; Connect success. xdbiSQL> SELECT * FROM seq; -> Information of all sequences created by User 1 will be dis- played. SEQUENCE_NAME CURRENT_VALUE -------------------------------------------------------------------- INCREMENT_BY MIN_VALUE MAX_VALUE CYCLE ---------------------------------------------------------------------------- CACHE_SIZE ------------------------- SEQ1 1 1 100 YES 20 SEQ2 1 1 9223372036854775806 NO 20 2 rows selected. 2.5 Controlling Transactions iSQL User’s Manual 30 2.5 Controlling Transac tions 2.5.1 Defining Transac tion Modes AUTOCOMMIT determines whether to automatically commit the results of a command at the time of execution. xdbiSQL> AUTOCOMMIT OFF; -> Commands are not automatically committed before being manually committed by the user. Set autocommit off success. xdbiSQL> AUTOCOMMIT ON; -> Commands are automatically committed at the time of execution. Set autocommit on success. 2.5.2 PLANCOMMIT SET PLANCOMMIT [ON/OFF]; When EXPLAIN PLAN has been set to ON or ONLY, there is the possibility that the iSQL commands DESC; SELEC T * FROM TAB; or SELEC T * FROM SEQ; will be committed, even if AUTOCOMMIT has been set to OFF. This setting determines whether to commit them automatically. This setting has been provided to overcome the misunderstanding where the user believes that such a command has not been prepared, but the system prepares the command in order to gener- ate the execution plan. The command would then be committed, without the user knowing it, when a COMMIT command is executed later. When this value is OFF (which is the default) in a session for which EXPLAIN PLAN is ON (or ONLY ) and AUTOCOMMIT is OFF, ALTIBASE XDB does not autocommit the above commands (DESC, SELEC T * FROM tab; or SELEC T * FROM seq;). When this value is ON, iSQL issues a special commit command to commit these commands. 2.6 File Management 31 Examples of iSQL in Use 2.6 File Management 2.6.1 Saving Results iSQL enables results returned through iSQL to be saved in a designated file. In the following exam- ple, results are stored in the designated file, book.txt, using the SPOOL command. To cancel this command, use the SPOOL OFF command. xdbiSQL> SPOOL book.txt Spool start. [book.txt] -> All subsequently executed commands and their results will be written to book.txt. The file is created in the current director y. xdbiSQL> SPOOL OFF Spool Stop -> From this point on, no more commands or results will be saved in the file. 2.6.2 Running Scripts 2.6.2.1 @ Command @ file_name[.sql] or START file_name[.sql] file_name[.sql]: The script file to be executed. If the filename extension is omitted, iSQL assumes the default command file extension (.sql). When this command is executed,, iSQL executes all of the commands in the specified script file in sequence. @command per forms the same function as START. An EXIT or QUIT command in the script file terminates iSQL. The script file may include general SQL statements, iSQL commands, references to stored pro- cedures, etc. The following is an example in which the schema.sql script, which can be found in the $ALTIBASE_HOME/sample/APRE/schema director y, which is the current director y, is executed. xdbiSQL> START schema.sql -> The SQL statements in the file are executed. or xdbiSQL> @schema.sql When specifying a script file, you can use a question mark (“?”) to indicate the ALTIBASE XDB home director y ($ALTIBASE_XDB_HOME) of the user account. The following is an example in which the schema.sql script, which can be found in the $ALTIBASE_HOME/sample/APRE/schema director y, is executed regardless of which directory is the current director y. 2.6 File Management iSQL User’s Manual 32 xdbiSQL> @?/sample/APRE/schema/schema.sql The question mark (“?”) can also be used with the following iSQL commands: EDIT, SAVE, LOAD, SPOOL, START The -- or /* */ charac ters can be used to inser t comments in script files. -- means that ever ything that follows until the end of the line will be handled as a comment, whereas comments that span several lines are placed between /* and */. 2.6.2.2 @@ Command @@ file_name[.sql] file_name[.sql]: This indicates the embedded script to be executed. If the extension is omitted, iSQL assumes the default command file extension(.sql). Executes the specified script. The functionality of the @@ command is similar to that of the @ com- mand. This command searches for script files in the same path as the script currently being executed, and is thus useful for executing embedded scripts. The @@ command can be used for the following purposes: If a script file that contains the text @@file_name.sql is executed, iSQL looks for the file speci- fied by file_name.sql, and executes its contents in sequence. file_name.sql must be located in the same director y as the script file that called it. If no such file exists, iSQL raises an error. If a user inputs @@ file_name . sq l at the iSQL prompt, the result will be the same as when using iSQL to execute @file_name.sql. The script typically may include SQL statements, iSQL commands, or stored procedures. An EXIT or QUIT command in the script terminates iSQL. The following is an example of the execution of a.sql, in which schema.sql is referenced, from the $ALTIBASE_XDB_HOME director y. In order for this example to be executed without error, a.sql must exist in the $ALTIBASE_HOME/sample/APRE/schema director y alongside schema.sql. xdbiSQL> @sample/APRE/schema/a.sql $ cat a.sql @@schema.sql Note: The following chapter provides examples of editing the results of a query in an iSQL environment based on the tables created by execution of the above script (see appendix Schema). 2.6.3 Saving SQL Statements Of the commands currently in the iSQL buffer, the SAVE command saves the most recently executed one in a file. 2.6 File Management 33 Examples of iSQL in Use This file will be created in the current directory. xdbiSQL> SELECT * FROM book; xdbiSQL> SAVE book.sql -> ‘SELEC T * FROM book;’ is saved in the file book.sql. Save completed. 2.6.4 Loading SQL Statements This function loads the first command in the specified file to the last position in the iSQL buffer. xdbiSQL> LOAD book.sql xdbiSQL> SELECT * FROM book; Load completed. xdbiSQL> / -> The results of execution of SELEC T * FROM book; can be seen. 2.6.5 Saving DML Statements Executed DML statements such as INSERT, UPDATE, DELE TE and MOVE are saved in $ALTIBASE_XDB_HOME/trc/isql_quer y.log. Specify SET QUERYLOGGING ON to use this functionality and OFF to disable it. xdbiSQL> SET QUERYLOGGING ON; -> From this point on, all executed DML statements will be saved in $ALTIBASE_XDB_HOME/trc/isql_quer y.log. xdbiSQL> CREATE TABLE t1 ( I1 INTEGER ); Create success. xdbiSQL> INSERT INTO t1 VALUES ( 1 ); 1 row inserted. xdbiSQL> UPDATE t1 SET i1 = 2; 1 row updated. xdbiSQL> SELECT * FROM t1; I1 -------------- 2 1 row selected. xdbiSQL> DELETE FROM t1; 1 row deleted. xdbiSQL> DROP TABLE t1; Drop success. xdbiSQL> EXIT $ cat $ALTIBASE_XDB_HOME/trc/isql_query.log -> All queries executed since SET QUERYLOG- GING ON was executed can be obser ved. [2009/09/16 10:36:14] [127.0.0.1:20300 SYS] INSERT INTO t1 VALUES ( 1 ) [2009/09/16 10:36:25] [127.0.0.1:20300 SYS] UPDATE t1 SET i1 = 2 [2009/09/16 10:36:31] [127.0.0.1:20300 SYS] DELETE FROM t1 2.6.6 Editing Quer y Statements 2.6.6.1 Editing the Most Recent Quer y Statement The command ed is provided for creating and editing files in iSQL. If you execute ed without parameters, a temporar y file named iSQL.buf containing the most recently executed quer y statements will be created, and the following screen will be visible. ( To save 2.6 File Management iSQL User’s Manual 34 space, only a few of the blank lines that would be displayed on the screen are shown here.) xdbiSQL> SELECT sysdate FROM dual; SYSDATE --------------- 01-JAN-2000 1 row selected. xdbiSQL> ED SELECT sysdate FROM dual; ~ ~ ~ "iSQL.buf" 1L, 26C 2.6.6.2 Editing Existing Files If you want to edit an existing file, type the file name in iSQL as a parameter when launching the text editor using the “ed” command. When the screen is initialized, blank lines will be displayed as ~ (tilde) characters. xdbiSQL> ED myquery.sql "myquery.sql" INSERT INTO employees(ENO, E_FIRSTNAME, E_LASTNAME, SEX) VALUES(21, 'Shiloh', 'Reynolds', 'F'); INSERT INTO employees(ENO, E_FIRSTNAME, E_LASTNAME, SEX, JOIN_DATE) VAL- UES(22, 'Joshua', 'Baldwin', 'M', TO_DATE('2001-11-19 00:00:00', 'YYYY-MM-DD HH:MI:SS')); ~ ~"myquery.sql" 2.6.6.3 Editing Quer y Statements in Histor y Lists You can use the number in the histor y list to edit previously executed commands. In detail, the query statements are stored in the temporary file iSQL.buf in association with numbers, and can be edited with reference to them. The edited quer y will be stored again as the most recent record in the histor y list, and can be executed by entering the ‘/’ (re -execute) character. xdbiSQL> H 1 : SELECT * FROM customers; 2 : SELECT * FROM employees; xdbiSQL> 2ed or xdbiSQL> 2 ed SELECT * FROM employees; ~ ~ "iSQL.buf" Note: The command-line parameter 2, which is the name of the file to be edited (xdbiSQL> ed 2), must be distinguished from the number indicating the line in the file to edit. After editing (employees was replaced with orders) xdbiSQL> h -> The histor y list currently in the isql buffer 1 : SELECT * FROM customers; 2 : SELECT * FROM employees; 2.6 File Management 35 Examples of iSQL in Use 3 : SELECT * FROM orders; -> The query statement edited using the 2 ed command will be saved as the last command in the histor y list. xdbiSQL> / -> The most recently executed command will be executed. ONO ORDER_DATE ENO CNO ------------------------------------------------------------------------ GNO QTY ARRIVAL_DATE PROCESSING ------------------------------------------------------ 11290007 29-NOV-2010 12 7111111431202 A111100002 70 02-DEC-2010 C 11290011 29-NOV-2010 12 7610011000001 E111100001 1000 05-DEC-2010 D 11290100 29-NOV-2010 19 7001011001001 E111100001 500 07-DEC-2010 D 12100277 10-DEC-2010 19 7610121220475 . . 12310012 31-DEC-2010 19 7308281201145 C111100001 250 03-JAN-2011 O 30 rows selected. 2.7 Formatting SELECT Query Results iSQL User’s Manual 36 2.7 Formatting SELEC T Quer y Results The results of a SELEC T quer y can be formatted as desired by the user. 2.7.1 SET LINESIZE Sets the size (number of characters) of one line to be displayed when the results of a SELEC T state - ment are output. I t must be between 10 and 32767. xdbiSQL> set linesize 70; xdbiSQL> select * from employees; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ EMP_JOB EMP_TEL DNO SALARY SEX --------------------------------------------------------------------- BIRTH JOIN_DATE STATUS --------------------------------- 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H . . 20 rows selected. 2.7.2 SET LOBSIZE This specifies the number of characters to display when a CLOB column is queried using a SELEC T statement. In order to quer y CLOB column data using a SELEC T statement, the transaction mode must first be set to AUTOCOMMIT OFF. xdbiSQL> CREATE TABLE c1(I1 INTEGER, I2 CLOB); INSERT INTO c1 VALUES(1, 'A123456789'); INSERT INTO c1 VALUES(2, 'A1234'); INSERT INTO c1 VALUES(3, 'A12345'); INSERT INTO c1 VALUES(4, 'A1234567890123'); xdbiSQL> AUTOCOMMIT OFF -> This sets the transaction mode to OFF so that a CLOB column can be que - ried. Set autocommit off success. xdbiSQL> SELECT * FROM c1; I 1 I 2 ---------------------------------------------------------------------------- -------------------- 1 A123456789 2 A 1 2 3 4 3 A12345 4 A1234567890123 2.7 Formatting SELECT Query Results 37 Examples of iSQL in Use 4 rows selected. xdbiSQL> SET LOBSIZE 10; -> This specifies the number of characters to display on the screen when quer ying a CLOB column using a SELEC T statement. xdbiSQL> SELECT * FROM c1; I1 I2 -------------------------- 1 A123456789 2 A1234 3 A12345 4 A123456789 4 rows selected. 2.7.3 SET LOBOFFSET This specifies the star ting location from which to display CLOB data when a CLOB column is queried using a SELEC T statement. In order to quer y CLOB column data using a SELEC T statement, the transaction mode must first be set to AUTOCOMMIT OFF. xdbiSQL> CREATE TABLE c1(I1 INTEGER, I2 CLOB); INSERT INTO c1 VALUES(1, 'A123456789'); INSERT INTO c1 VALUES(2, 'A1234'); INSERT INTO c1 VALUES(3, 'A12345'); INSERT INTO c1 VALUES(4, 'A1234567890123'); xdbiSQL> AUTOCOMMIT OFF Set autocommit off success. xdbiSQL> SET LOBOFFSET 4; -> This specifies the star ting location of data to be shown on the screen number of characters to skip) when quer ying a CLOB column using a SELEC T statement. xdbiSQL> SELECT * FROM c1; I1 I2 -------------------------- 1 456789 2 4 3 45 4 4567890123 4 rows selected. 2.7.4 SET FEEDBACK Outputs the number of records found when the results of a SELEC T statement are output. SET FEEDBACK ON|OFF|n; ON: Output the number of resultant records after execution of a SELEC T statement. OFF: Do not output the number of resultant records after execution of a SELEC T statement. n: Output the number of resultant records when the number is n or greater. xdbiSQL> set feedback on; xdbiSQL> select * from employees where eno < 3; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ EMP_JOB EMP_TEL DNO SALARY SEX --------------------------------------------------------------------- 2.7 Formatting SELECT Query Results iSQL User’s Manual 38 BIRTH JOIN_DATE STATUS --------------------------------- 1 Moon Chan-seung CEO 01195662365 3002 M R 2 Davenport Susan designer 0113654540 1500 F 721219 18-NOV-2009 H 2 rows selected. 2.7.5 SET PAGESIZE Specifies the number of resultant rows to display at one time. xdbiSQL> SET PAGESIZE 2; -> Show results in groups comprising two rows each. xdbiSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 3 Ken Kobain 4 Aaron Foster ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. xdbiSQL> SET PAGESIZE 0; -> Show all of the results on one page. xdbiSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. 2.7.6 SET HEADING Sets whether to output the header with a SELEC T result. xdbiSQL> SET HEADING OFF; -> Header is not displayed with the result. xdbiSQL> select eno, e_firstname, e_lastname from employees; 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 2.7 Formatting SELECT Query Results 39 Examples of iSQL in Use 6 Ryu Momoi . . . 20 rows selected. xdbiSQL> SET HEADING ON; -> Outputs header in result. xdbiSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. 2.7.7 SET COLSIZE When the results of a SELEC T statement are output, sets the number of characters from a column of type CHAR or VARCHAR to display so that columns containing long lines of tex t can be easily viewed. xdbiSQL> CREATE TABLE location( ID INTEGER, NAME CHAR(20), ADDRESS VARCHAR(500), PHONE CHAR(20)); Create success. xdbiSQL> INSERT INTO location VALUES(1, 'ALTIBASE', '10Fl., Daerungpost-tower II, Guro-dong, Guro-qu, Seoul 152-790. Korea', '82-2-2082-1000'); 1 row inserted. I n t he fo llowi n g ex am p le, t he nu m b er of ch arac ter s of a co lu m n o f t y pe C HA R or VA R C H A R i s s e t to 7: xdbiSQL> SET COLSIZE 7; xdbiSQL> SELECT id, name, address, phone FROM location; ID NAME ADDRESS PHONE -------------------------------------------- 1 ALTIBAS 10Fl., 82-2-20 E Daerung 82-1000 post-to wer II, Guro-d ong, Gu ro-qu, Seoul 1 52-790. Korea 1 row selected. 2.8 Setting Output Options iSQL User’s Manual 40 2.8 Setting Output Options 2.8.1 Getting the Elapsed Time This function displays the time it took to execute the SQL statement. xdbiSQL> SET TIMING ON; -> Output the execution time in the last line after the command is executed. xdbiSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 0.01 xdbiSQL> SET TIMING OFF; -> Execution time is not displayed. 2.8.2 Setting Execution Time Units for Output This function sets the units with which to output SQL statement execution time. Can be set to the following units: Seconds M illise c o nds Microseconds N a nose c o n ds xdbiSQL> SET TIMING ON xdbiSQL> SET TIMESCALE SEC; xdbiSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 0.00 xdbiSQL> SET TIMESCALE MILSEC; xdbiSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2.8 Setting Output Options 41 Examples of iSQL in Use 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 0.72 xdbiSQL> SET TIMESCALE MICSEC; xdbiSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 966.00 xdbiSQL> SET TIMESCALE NANSEC; xdbiSQL> select eno, e_firstname, e_lastname from employees; ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 681000.00 2.8.3 Describing Foreign Key Information This function displays information on foreign keys when the DESC command is used to view the table structure. xdbiSQL> SET FOREIGNKEYS ON; -> The foreign key information will be output. xdbiSQL> DESC bikes_ive_seen; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ---------------------------------------------------------------------------- NAME TYPE IS NULL ---------------------------------------------------------------------------- MID SMALLINT FIXED YEAR SMALLINT FIXED NOT NULL USED BIT(1) FIXED NOT NULL SOLD BIT(1) FIXED KMS INTEGER FIXED SAW_WHERE VARCHAR(20) FIXED ITEM_ID INTEGER FIXED NOT NULL 2.8 Setting Output Options iSQL User’s Manual 42 COMMENT VARCHAR(100) FIXED PRICE INTEGER FIXED NOT NULL DATE_SEEN DATE FIXED [ INDEX ] ---------------------------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ---------------------------------------------------------------------------- __SYS_IDX_ID_143 BTREE UNIQUE ITEM_ID ASC [ PRIMARY KEY ] ---------------------------------------------------------------------------- ITEM_ID [ FOREIGN KEYS ] ---------------------------------------------------------------------------- * MODEL_ID * __SYS_IDX_ID_142 ( MID ) ---> SYS.CANDIDATE_MODELS ( MID ) xdbiSQL> SET FOREIGNKEYS OFF; -> The foreign key information will not be output. xdbiSQL> DESC bikes_ive_seen; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ---------------------------------------------------------------------------- NAME TYPE IS NULL ---------------------------------------------------------------------------- MID SMALLINT FIXED YEAR SMALLINT FIXED NOT NULL USED BIT(1) FIXED NOT NULL SOLD BIT(1) FIXED KMS INTEGER FIXED SAW_WHERE VARCHAR(20) FIXED ITEM_ID INTEGER FIXED NOT NULL COMMENT VARCHAR(100) FIXED PRICE INTEGER FIXED NOT NULL DATE_SEEN DATE FIXED [ INDEX ] ---------------------------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ---------------------------------------------------------------------------- __SYS_IDX_ID_143 BTREE UNIQUE ITEM_ID ASC [ PRIMARY KEY ] ---------------------------------------------------------------------------- ITEM_ID xdbiSQL> 2.8.4 Outputting Script Execution Results Commands can be used to control the output of created results. When set to OFF, this function prevents the result of a script command executed in iSQL from being displayed on the screen. However, even if it is set OFF, the results of queries that are directly entered (e.g. xdbiSQL> select * from t1;) will still be displayed on the screen; the OFF setting only prevents script execution results (e.g.: xdbiSQL> @a.sql ) from being displayed. xdbiSQL> SET TERM OFF; xdbiSQL> SET TIMING ON; -> The execution time is not output to the screen. xdbiSQL> @schema.sql -> The script execution results are not output. xdbiSQL> select eno, e_firstname, e_lastname from employees; -> The results of directly input queries will be output. ENO E_FIRSTNAME E_LASTNAME ------------------------------------------------------------ 2.8 Setting Output Options 43 Examples of iSQL in Use 1 Chan-seung Moon 2 Susan Davenport 3 Ken Kobain 4 Aaron Foster 5 Farhad Ghorbani 6 Ryu Momoi . . . 20 rows selected. elapsed time : 0.00 xdbiSQL> SET TERM ON; -> Script execution results will be output. xdbiSQL> @schema.sql xdbiSQL> ALTER SESSION SET AUTOCOMMIT = TRUE; -> Start of results. Alter success. xdbiSQL> DROP TABLE ORDERS; Drop success. elapsed time : 0.00 xdbiSQL> DROP TABLE EMPLOYEES; Drop success. elapsed time : 0.00 . . . xdbiSQL> CREATE INDEX ODR_IDX3 ON ORDERS (GNO ASC); Create success. elapsed time : 0.00 -> End of results. 2.8.5 Outputting an Execution Plan In iSQL, an execution plan can be output to fine -tune SQL statements. Using an execution plan, DML statements such as SELEC T, INSERT, UPDATE and DELETE can be checked. In order to accomplish this, the following command must be executed before a statement such as a SELEC T statement is executed. ALTER SESSION SET EXPLAIN PLAN = option This option can be set to ON, OFF or ONLY. The default is OFF. ON: After the SELEC T statement is executed, the execution plan information is displayed along with the resultant records. ONLY: The SELEC T statement is prepared but not executed, and only the execution plan infor- mation is output.This can be used to check the execution plan for a SELEC T statement that involves host variable binding, or to quickly check the execution plan for queries that take a long time to execute. OFF: After the SELEC T statement is executed, only the resultant records are displayed. The following command is used to obtain detailed information about how conditions included in WHERE clauses written by the user will be execute: ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 1 If this proper ty is set to 1, signifying “ON”, as in the above statement, the execution plan’s WHERE clause conditions, including FIXED KEY RANGE, VARIBALE KEY RANGE and FILTER, are classified and displayed in detail. Therefore, if the WHERE clause is complicated, you can check which predicates 2.8 Setting Output Options iSQL User’s Manual 44 will be executed by scanning the sorted indexes. However, this information may not be output if queries are changed to optimize them in some way. The following example shows the output when the given SQL statement is executed: When TRCLOG_DETAIL_PREDICATE has been set to 1 (=on), and EXPLAIN PLAN = ON, the fol- lowing is output in addition to the results. xdbiSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 1; Alter success. xdbiSQL> ALTER SESSION SET EXPLAIN PLAN = ON; Alter success. xdbiSQL> select eno, e_lastname, e_firstname from employees where eno = 1; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ 1 Moon Chan-seung 1 row selected. ------------------------------------------------------------ PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_164, ACCESS: 1, SELF_ID: 2 ) [ FIXED KEY ] AND OR ENO = 1 ------------------------------------------------------------ xdbiSQL> When TRCLOG_DETAIL_PREDICATE is not set to 1, and EXPLAIN PLAN = ON, the following is output in addition to the results. xdbiSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. xdbiSQL> ALTER SESSION SET EXPLAIN PLAN = ON; Alter success. xdbiSQL> select eno, e_lastname, e_firstname from employees where eno = 1; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ 1 Moon Chan-seung 1 row selected. ------------------------------------------------------------ PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_164, ACCESS: 1, SELF_ID: 2 ------------------------------------------------------------ xdbiSQL> When TRCLOG_DETAIL_PREDICATE is not set to 1, and EXPLAIN PLAN = ONLY, only the follow- ing is output. xdbiSQL> ALTER SYSTEM SET TRCLOG_DETAIL_PREDICATE = 0; Alter success. xdbiSQL> ALTER SESSION SET EXPLAIN PLAN = ONLY; Alter success. xdbiSQL> select eno, e_lastname, e_firstname from employees where eno = 1; ENO E_LASTNAME E_FIRSTNAME ------------------------------------------------------------ No rows selected. ------------------------------------------------------------ 2.8 Setting Output Options 45 Examples of iSQL in Use PROJECT ( COLUMN_COUNT: 3, TUPLE_SIZE: 48 ) SCAN ( TABLE: EMPLOYEES, INDEX: __SYS_IDX_ID_164, ACCESS: 1, SELF_ID: 2 ------------------------------------------------------------ xdbiSQL> If EXPLAIN PLAN = ONLY, because only an execution plan is created and the query is not executed, values that would be determined after actual execution are indicated using question marks (“??”), like an ACCESS clause. 2.8.6 Setting Result Output Orientation When quer ying data using a SELEC T statement in iSQL, the results can be displayed either horizon- tally or ver tically. This function is suitable for outputting results that comprise a small number of rows and many col- umns. If such a result set is output horizontally, as is usually the case, it is difficult to compare columns and check the values. However, it is easy to see when output ver tically. xdbiSQL> SET VERTICAL ON; --> This sets the print direction vertically. xdbiSQL> SELECT * FROM employees WHERE eno = 2; ENO : 2 E_LASTNAME : Davenport E_FIRSTNAME : Susan EMP_JOB : designer EMP_TEL : 0113654540 DNO : SALARY : 1500 SEX : F BIRTH : 721219 JOIN_DATE : 18-NOV-2009 STATUS : H 1 row selected. 2.9 Viewing iSQL Display Settings iSQL User’s Manual 46 2.9 Viewing iSQL Display Settings The following is an example of viewing the values of the iSQL environment variables for the current session: xdbiSQL> SHOW USER -> This is the current user. User : SYS xdbiSQL> SHOW COLSIZE ColSize : 0 xdbiSQL> SHOW LOBOFFSET LobOffset: 0 xdbiSQL> SHOW LINESIZE LineSize : 80 xdbiSQL> SHOW LOBSIZE LobSize : 80 xdbiSQL> SHOW PAGESIZE PageSize : 0 xdbiSQL> SHOW TIMESCALE TimeScale : Second xdbiSQL> SHOW HEADING Heading : On xdbiSQL> SHOW TIMING Timing : Off xdbiSQL> SHOW VERTICAL Vertical : Off xdbiSQL> SHOW FOREIGNKEYS ForeignKeys : Off xdbiSQL> SHOW PLANCOMMIT PlanCommit : Off xdbiSQL> SHOW QUERYLOGGING QueryLogging : Off xdbiSQL> SHOW TERM Term : On xdbiSQL> SHOW FEEDBACK Feedback : 1 xdbiSQL> SHOW ALL User : SYS ColSize : 0 LobOffset : 0 LineSize : 80 LobSize : 80 PageSize : 0 TimeScale : Second Heading : On Timing : Off Vertical : Off ForeignKeys : Off PlanCommit : Off 2.9 Viewing iSQL Display Settings 47 Examples of iSQL in Use QueryLogging : Off Term : On Feedback : 1 2.10 Host Variables iSQL User’s Manual 48 2.10 Host Variables Host variables are first declared and then used. Host variables are useful when executing procedures or functions. 2.10.1 Declaring a Host Variable 2.10.1.1 Syntax VAR[IABLE] var_name var_type 2.10.1.2 Type The following types can be used when declaring variables: INTEGER, BYTE(n), NIBBLE(n), NUMBER, NUMBER(n), NUMBER(n,m), NUMERIC, NUMERIC(n), NUMERIC(n,m), CHAR(n), VARCHAR(n), NCHAR(n), NVARCHAR(n), DATE DECIMAL, DECIMAL(n), DECIMAL(n,m), FLOAT, FLOAT(n), DOUBLE, REAL BIGINT, SMALLINT 2.10.1.3 Example The following examples demonstrate how to declare variables: xdbiSQL> VAR p1 INTEGER xdbiSQL> VAR p2 CHAR(10) xdbiSQL> VAR v_double DOUBLE xdbiSQL> VAR v_real REAL 2.10.2 Assigning a Value to a Host Variable 2.10.2.1 Syntax EXEC[UTE] :var_name := value; 2.10.2.2 Example The following example shows how to assign a value to a variable: xdbiSQL> EXECUTE :p1 := 100; Execute success. xdbiSQL> EXEC :p2 := 'abc'; Execute success. 2.10 Host Variables 49 Examples of iSQL in Use 2.10.3 Viewing Host Variables 2.10.3.1 Syntax PRINT VAR[IABLE] -> Shows all declared variables. PRINT var_name -> Shows the type and value of the variable var_name. 2.10.3.2 Example The following shows the values of all declared variable: xdbiSQL> PRINT VAR [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- P1 INTEGER 100 P2 CHAR(10) abc V_REAL REAL V_DOUBLE DOUBLE xdbiSQL> PRINT p2 -> Outputs only variable p2 information. NAME TYPE VALUE ------------------------------------------------------- P2 CHAR(10) abc 2.11 Executing Prepared SQL Statements iSQL User’s Manual 50 2.11 Executing Prepared SQL Statements 2.11.1 Prepared SQL versus Dynamic SQL Statements SQL statements executed in iSQL are usually executed according to the so- called “Direct Execution” method. In Direct Execution, syntax analysis, validity testing, optimization and execution of a quer y are all per formed at once. However, in Prepared Execution, only the syntax analysis, validity testing, and optimization of the quer y are per formed to set up an execution plan for the quer y, which is then executed when requested by the client. When creating an application that uses ODBC, the Prepared Execution method is typically used, and is more advantageous in terms of speed when an SQL state - ment is to be repeatedly executed using host variable binding. In iSQL, the difference between these two methods lies only in whether variables are used or not; there is no advantage in terms of speed. 2.11.2 Prepared SQL Statements 2.11.2.1 Syntax PREPARE SQL_statement 2.11.2.2 Example The following is an example of the use of the PREPARE command to execute an SQL statement: xdbiSQL> VAR t1 INTEGER; xdbiSQL> EXEC :t1 := 3; Execute success. xdbiSQL> PREPARE SELECT eno, e_firstname, e_lastname, sex FROM employees WHERE eno=:t1; ENO : 3 E_FIRSTNAME : Ken E_LASTNAME : Kobain SEX : M 1 row selected. 2.12 Creating, Executing and Dropping Stored Procedures 51 Examples of iSQL in Use 2.12 Creating, Executing and Dropping Stored Proce - dures 2.12.1 Creating Procedures Suppor t is provided for the creation and execution of stored procedures. A stored procedure must end with the following: END; / Successful creation of the procedures can be confirmed by checking the sys_procedures_ meta table. 2.12.2 Executing Procedures Procedures are executed in order to execute multiple queries at one time. If the procedure to be exe - cuted has parameters, as many variables as there are parameters must be declared before the proce - dure is executed. 2.12.2.1 Example 1 In the following example, a procedure named emp_proc, which executes an INSERT statement using IN parameters, is created: xdbiSQL> CREATE OR REPLACE PROCEDURE emp_proc(p1 IN INTEGER, p2 IN CHAR(20), p3 IN CHAR(20), p4 IN CHAR(1)) AS BEGIN INSERT INTO employees(eno, e_firstname, e_lastname, sex) VALUES(p1, p2, p3, p4); END; / Create success. xdbiSQL> SELECT * FROM system_.sys_procedures_ order by created desc limit 1; USER_ID PROC_OID ------------------------------------ PROC_NAME OBJECT_TYPE STATUS ---------------------------------------------------------------------- PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID RETURN_SIZE ------------------------------------------------------------- RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN CREATED ------------------------------------------------------------------------- LAST_DDL_TIME ---------------- 2 3208680 EMP_PROC 0 0 4 2 192 29-FEB-2012 29-FEB-2012 1 row selected. emp_proc, which was created above, is executed: 2.12 Creating, Executing and Dropping Stored Procedures iSQL User’s Manual 52 xdbiSQL> VAR eno INTEGER xdbiSQL> VAR first_name CHAR(20) xdbiSQL> VAR last_name CHAR(20) xdbiSQL> VAR sex CHAR(1) xdbiSQL> EXECUTE :eno := 21; Execute success. xdbiSQL> EXECUTE :first_name := 'Joel'; Execute success. xdbiSQL> EXECUTE :last_name := 'Johnson'; Execute success. xdbiSQL> EXECUTE :sex := 'M'; Execute success. xdbiSQL> EXECUTE emp_proc(:eno, :firstname, :lastname, :sex); Execute success. xdbiSQL> SELECT eno, e_firstname, e_lastname, sex FROM employees WHERE eno = 21; ENO E_FIRSTNAME E_LASTNAME SEX ----------------------------------------------------------------- 21 Joel Johnson M 1 row selected. 2.12.2.2 Example 2 In the following example, a procedure called outProc, which executes a SELEC T statement, is cre - ated: xdbiSQL> CREATE TABLE outTbl(i1 INTEGER, i2 INTEGER); Create success. xdbiSQL> INSERT INTO outTbl VALUES(1,1); 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> SELECT * FROM outTbl; I1 I2 --------------------------- 1 1 1 1 1 1 1 1 1 1 5 rows selected. xdbiSQL> CREATE OR REPLACE PROCEDURE outProc(a1 OUT INTEGER, a2 IN OUT INTE- GER) AS BEGIN SELECT COUNT(*) INTO a1 FROM outTbl WHERE i2 = a2; END; / Create success. In the following example, outProc is executed: xdbiSQL> VAR t3 INTEGER xdbiSQL> VAR t4 INTEGER xdbiSQL> EXEC :t4 := 1; Execute success. xdbiSQL> EXEC outProc (:t3, :t4); 2.12 Creating, Executing and Dropping Stored Procedures 53 Examples of iSQL in Use Execute success. xdbiSQL> PRINT t3; NAME TYPE VALUE ------------------------------------------------------ T3 INTEGER 5 2.12.2.3 Example 3 In the following example, the procedure outProc1 is created: xdbiSQL> CREATE OR REPLACE PROCEDURE outProc1( p1 INTEGER, p2 IN OUT INTEGER, p3 OUT INTEGER) AS BEGIN p2 := p1; p3 := p1 + 100; END; / Create success. xdbiSQL> VAR v1 INTEGER xdbiSQL> VAR v2 INTEGER xdbiSQL> VAR v3 INTEGER xdbiSQL> EXEC :v1 := 3; Execute success. xdbiSQL> EXEC outProc1(:v1, :v2, :v3); Execute success. xdbiSQL> PRINT VAR; [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- . . V1 INTEGER 3 V2 INTEGER 3 V3 INTEGER 103 . . 2.12.2.4 Example 4 In the following example, a procedure called inoutProc1, which executes a SELEC T statement, is cre - ated: xdbiSQL> CREATE TABLE inoutTbl(i1 INTEGER); Create success. xdbiSQL> INSERT INTO inoutTbl VALUES(1); 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> / 1 row inserted. xdbiSQL> SELECT * FROM inoutTbl; I1 -------------- 1 1 1 3 rows selected. 2.12 Creating, Executing and Dropping Stored Procedures iSQL User’s Manual 54 xdbiSQL> CREATE OR REPLACE PROCEDURE inoutProc (a1 IN OUT INTEGER) AS BEGIN SELECT COUNT(*) INTO a1 FROM inoutTbl WHERE i1 = a1; END; / Create success. xdbiSQL> VAR t3 INTEGER xdbiSQL> EXEC :t3 := 1; Execute success. xdbiSQL> EXEC inoutProc(:t3); Execute success. xdbiSQL> PRINT t3; NAME TYPE VALUE ------------------------------------------------------- T3 INTEGER 3 2.12.2.5 Example 5 In the following example, the procedure inoutProc1 is created: xdbiSQL> CREATE OR REPLACE PROCEDURE inoutProc1( p1 INTEGER, p2 IN OUT INTE- GER, p3 OUT INTEGER) AS BEGIN p2 := p1 + p2; p3 := p1 + 100; END; / Create success. In the following example, the procedure inoutProc1 is executed: xdbiSQL> VAR v1 INTEGER xdbiSQL> VAR v2 INTEGER xdbiSQL> VAR v3 INTEGER xdbiSQL> EXEC :v1 := 3; Execute success. xdbiSQL> EXEC :v2 := 5; Execute success. xdbiSQL> EXEC inoutProc1(:v1, :v2, :v3); Execute success. xdbiSQL> PRINT VAR; [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- . . V1 INTEGER 3 V2 INTEGER 8 V3 INTEGER 103 . . 2.12 Creating, Executing and Dropping Stored Procedures 55 Examples of iSQL in Use 2.12.3 Dropping Procedures The DROP command is used to drop (delete) procedures. In the following example, the procedure emp_proc is deleted: xdbiSQL> DROP PROCEDURE emp_proc; Drop success. 2.13 Creating, Executing and Dropping Functions iSQL User’s Manual 56 2.13 Creating, Executing and Dropping Func tions 2.13.1 Creating Func tions A function is provided to create functions. When creating a function, you must end with the follow- ing syntax, and the return type must be defined. END; / Successful creation of the function can be confirmed by checking the sys_procedures_ meta table. In the following example, the function emp_func, which executes an UPDATE statement and a SELEC T statement, is created: xdbiSQL> CREATE OR REPLACE FUNCTION emp_func(f1 IN INTEGER) RETURN NUMBER AS f2 NUMBER; BEGIN UPDATE employees SET salary = 1000000 WHERE eno = f1; SELECT salary INTO f2 FROM employees WHERE eno = f1; RETURN f2; END; / Create success. xdbiSQL> SELECT * FROM system_.sys_procedures_; USER_ID PROC_OID PROC_NAME ---------------------------------------------------------------------------- --- OBJECT_TYPE STATUS PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID -------------------------------------------------------------------------- RETURN_SIZE RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN ------------------------------------------------------------------------ CREATED LAST_DDL_TIME ------------------------------ . . . 2 3300024 INOUTPROC1 0 0 3 2 132 15-SEP-2010 15-SEP-2010 2 3302344 EMP_FUNC 1 0 1 6 30000 23 38 0 3 209 15-SEP-2010 15-SEP-2010 36 rows selected. 2.13.2 Executing Func tions Functions can be executed to simultaneously execute multiple queries. If the function to be exe - c u t e d h a s p a r a m e t e r s, a s m a ny v a r i a b l e s a s t h e re a re f u n c t i o n s m u s t b e d e c l a re d b e fo re t h e f u n c t i o n is executed. Additionally, a variable for saving the result of the function must also be defined. 2.13 Creating, Executing and Dropping Functions 57 Examples of iSQL in Use The following is an example of executing the function emp_func: xdbiSQL> VAR eno INTEGER xdbiSQL> VAR ret NUMBER xdbiSQL> EXEC :eno := 11; Execute success. xdbiSQL> EXEC :ret := emp_func(:eno); Execute success. xdbiSQL> SELECT eno, salary FROM employees WHERE eno = 11; ENO SALARY --------------------------- 11 1000000 1 row selected. 2.13.3 Dropping Func tions The DROP FUNC TION statement is used to drop functions. In the following example, the function emp_func is deleted: xdbiSQL> DROP FUNCTION emp_func; Drop success. 2.14 Convenient User Functions iSQL User’s Manual 58 2.14 Convenient User Func tions 2.14.1 Histor y A list of all previously executed commands can be displayed using the HISTORY command. The num- ber corresponding to a previously executed command can be used to easily execute that command again. xdbiSQL> HISTORY; ->View histor y list. or xdbiSQL> H; 1 : SELECT * FROM tab; 2 : SELECT * FROM v$tab; xdbiSQL> / -> Re -execute the most recent command(HISTORY;)) xdbiSQL> 2/ -> Execute Command number 2 in history list(SELEC T * FROM book;) 2.14.2 Shell Commands The exclamation point (“!”) is a convenient function that allows direct execution of most shell com- mands from within iSQL. xdbiSQL> !ls -al total 3417 -rw-r----- 1 wlgml337 section 1198 Nov 1 13:30 .aliases -rw------- 1 wlgml337 section 5353 Oct 18 21:17 .bash_history -rw-r----- 1 wlgml337 section 1436 Nov 2 15:42 .bashrc -rw-r----- 1 wlgml337 section 1549 Dec 13 17:36 .profile drwxr-x--- 2 wlgml337 section 512 Nov 2 02:00 TEMP drwxr-xr-x 2 root root 512 Oct 16 11:29 TT_DB -rw------- 1 wlgml337 section 3446548 Dec 18 13:19 core drwxr-x--- 2 wlgml337 section 512 Nov 11 16:33 cron drwxr-x--- 2 wlgml337 section 512 Nov 15 10:52 test drwxr-xr-x 6 wlgml337 section 512 Nov 11 11:45 work 2.14.3 Getting Help Help is available for the commands provided with iSQL. The HELP command without parameters outputs information on how to use help. For help on specific commands, enter HELP followed by the name of the command for which help is desired. xdbiSQL> HELP; Use 'help [command]' Enter 'help index' for a list of command xdbiSQL> HELP INDEX; @ EDIT QUIT / EXIT ROLLBACK ALTER HEADING SAVE AUTOCOMMIT H[ISTORY] SELECT COMMIT INSERT SPOOL CREATE LINESIZE START DELETE LOAD TIMING DESC LOBOFFSET UPDATE 2.14 Convenient User Functions 59 Examples of iSQL in Use DROP LOBSIZE VAR[IABLE] EXECUTE MOVE TERM EXPLAINPLAN PAGESIZE VERTICAL xdbiSQL> HELP EXIT; exit; or quit; - exit iSQL 2.15 Using National Character Sets iS