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;
피드 구독하기:
댓글
(Atom)
댓글 없음 :
댓글 쓰기