2015년 6월 25일 목요일

[DaTaBaSe] Firebird 2.5 사용


Firebird 2.5(이하 'FB') 를 써야 할 일이 생겼다. 인터넷에서 찾은 FB 관련 자료들을 정리해 둔다.


FB 설치가 완료 되면, 콘솔이나 도스창에서 명령어를 사용하기 위해서 설치 한 디렉토리 아래의 bin 디렉토리를 PATH에 등록하여 준다.


FB 설치 후, 가장 먼저 GSEC 모드로 진입 하여 SYSDBA 계정의 비밀번호를 변경해 주어야 한다.

SYSDBA 의 최초 로그인 비밀번호는 masterkey 이다.


SYSDBA 게정으로 GSEC 모드 진입
c:\> GSEC -USER SYSDBA -PASSWORD masterkey


SYSDBA 의 비밀번호 변경
GSEC> MODIFY SYSDBA -PW test1234


GSEC 모드에서 빠져 나온다.
GSEC> QUIT


변경한 비밀번호로 로그인을 한다.
c:\> GSEC -USER SYSDBA -PASSWORD test1234


사용자 추가
GSEC> ADD tester -PW test5678 -FNAME TESTER


사용자 목록
GSEC> DISPLAY
     user name             uid   gid admin     full name
--------------------------------------------------------------------------------
SYSDBA                      0     0                Sql Server Administrator
TESTER                       0     0                TESTER


사용자 삭제
GSEC> DELETE TESTER

GSEC> QUIT





DB 를 생성, 연결,  쿼리 작성 및 실행하기 위해 isql 모드로 진입 한다.
참고 : isql 모드에서는 명령어 마지막에 세미콜론(;) 을 꼭 붙여 준다.

c:\> isql
Use CONNECT or CREATE DATABASE to specify a database


DB 생성
SQL> CREATE DATABASE 'c:\fb-data\test_db.fdb' USER 'tester' PASSWORD 'test5678' DEFAULT CHARACTER SET UTF8;


DB 생성후 꼭 Commit 할 것.
SQL> COMMIT;


생성한 DB에 연결
SQL> CONNECT 'c:\fb-data\test_db.fdb' USER 'tester' PASSWORD 'test5678';
Database: c:\fb-data\test_db.fdb, User: tester


DB 버젼 정보
SQL> SELECT RDB$GET_CONTEXT('SYSTEM','ENGINE_VERSION') FROM RDB$DATABASE;

RDB$GET_CONTEXT
=================
2.5.4


DB 정보 표시
SQL> SHOW DATABASE;
Database: c:\fb-data\test_db.fdb
Owner: TESTER
PAGE_SIZE 4096
Number of DB pages allocated = 196
Sweep interval = 20000
Forced Writes are ON
Transaction - oldest = 135
Transaction - oldest active = 136
Transaction - oldest snapshot = 136
Transaction - Next = 139
ODS = 11.2
Default Character set: UTF8


테이블 생성
SQL> CREATE TABLE TB_TEST (
CON>    IDX INT NOT NULL ,
CON>    NAME VARCHAR(10) NOT NULL,
CON>    REGDATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CON>    PRIMARY KEY (IDX)
CON> );


인덱스 생성
SQL> CREATE INDEX IDX_DF ON TB_TEST (IDX);


주석 추가 : 콘솔의 isql 모드에서는 한글입력이 안됨.
SQL> COMMENT ON DATABASE IS '테스트 용 데이터베이스';
SQL> COMMENT ON TABLE TB_TEST IS '테스트용 테이블';
SQL> COMMENT ON COLUMN TB_TEST.IDX IS '고유순번';


테이블 목록
SQL> SHOW TABLE;
TB_TEST



MySQL 의 auto_increment 와 같은 속성을 만들기 위해서 제네레이터와 트리거를 이용하여야 한다.

제네레이터 생성
SQL> CREATE GENERATOR gen_AutoIDX;


제네레이터 초기화 : 이 단계는 나중에 필수가 아니며, 필요할때 초기화 하도록 한다.
SQL> SET GENERATOR gen_AutoIDX TO 0;


트리거 생성
SQL> SET TERM ^ ;
SQL> CREATE TRIGGER trg_AutoIDX FOR TB_TEST
CON> ACTIVE BEFORE INSERT POSITION 1
CON> AS
CON> BEGIN
CON> IF (NEW.IDX IS NULL) THEN
CON> NEW.IDX = GEN_ID(gen_AutoIDX, 1);
CON> END^
SQL>  SET TERM ; ^


생성된 트리거 목록
SQL> SHOW TRIGGERS;
Table name                       Trigger name                     Invalid
=============================================
TB_TEST                           TRG_AUTOIDX
SQL>



샘플 데이터 입력
SQL> INSERT INTO TB_TEST (NAME)VALUES('mr.kim');
SQL> INSERT INTO TB_TEST (NAME)VALUES('mr.lee');
SQL> INSERT INTO TB_TEST (NAME)VALUES('mr.park');
SQL> INSERT INTO TB_TEST (NAME)VALUES('mr.mun');
SQL> INSERT INTO TB_TEST (NAME)VALUES('mr.yun');
SQL> SELECT * FROM TB_TEST;

댓글 없음 :

댓글 쓰기