일반 Pure Java DB (H2 Database)

황제낙엽 2010.09.27 19:52 조회 수 : 252 추천:121

sitelink1  
sitelink2  
extra_vars5
extra_vars6 ko 


Features
    * Very fast database engine
    * Open source
    * Written in Java
    * Supports standard SQL, JDBC API
    * Embedded and Server mode, Clustering support
    * Strong security features
    * The PostgreSQL ODBC driver can be used
    * Multi version concurrency



Sample Application
  1. 첨부파일 #1 참조
  2. http://www.h2database.com/html/tutorial.html 에서 "Using Databases in Web Applications" 부분 참조




Test SQL

SET WRITE_DELAY 0;
SET CLUSTER '';
SET DEFAULT_TABLE_TYPE 0;
SET DEFAULT_LOCK_TIMEOUT 2000;
SET CACHE_SIZE 16384;

CREATE USER IF NOT EXISTS SA SALT 'f8752c85c729c186' HASH '883ecfdc106537ace2e018d70b96f50779fcc98fad6150910f3890ac568d9292' ADMIN;

DROP TABLE IF EXISTS PUBLIC.USERINFO;
DROP TABLE IF EXISTS PUBLIC.AUTHORITIES;
DROP TABLE IF EXISTS PUBLIC.EMPLOYEE;

CREATE TABLE PUBLIC.USERINFO(USERNAME VARCHAR(50) NOT NULL PRIMARY KEY,PASSWORD VARCHAR(50) NOT NULL,ENABLED INTEGER DEFAULT 0 NOT NULL);
CREATE TABLE PUBLIC.AUTHORITIES(USERNAME VARCHAR(12) NOT NULL,AUTHORITY VARCHAR(20) NOT NULL);
CREATE TABLE PUBLIC.EMPLOYEE(EMP_NAME VARCHAR(64),PASSWORD VARCHAR(64),EMAIL VARCHAR(64));

INSERT INTO PUBLIC.USERINFO(USERNAME, PASSWORD, ENABLED) VALUES
('admin','admin',1),
('kim','kim',0),
('son','son',1),
('user','user',1);

INSERT INTO PUBLIC.AUTHORITIES(USERNAME, AUTHORITY) VALUES
('admin','ADMIN'),
('admin','USER'),
('user','USER'),
('son','ADMIN'),
('son','USER'),
('kim','USER');

INSERT INTO PUBLIC.EMPLOYEE(EMP_NAME, PASSWORD, EMAIL) VALUES
('admin','admin','admin@gmail.com'),
('user','user','user@gmail.com'),
('son','son','son@gmail.com');




SQL Grammar

Commands (Data Manipulation)

SELECT
INSERT
UPDATE
DELETE
BACKUP
CALL
EXPLAIN
MERGE
RUNSCRIPT
SCRIPT
SHOW

Commands (Data Definition)

ALTER INDEX RENAME
ALTER SCHEMA RENAME
ALTER SEQUENCE
ALTER TABLE ADD
ALTER TABLE ADD CONSTRAINT
ALTER TABLE ALTER
ALTER TABLE DROP COLUMN
ALTER TABLE DROP CONSTRAINT
ALTER TABLE SET
ALTER TABLE RENAME
ALTER USER ADMIN
ALTER USER RENAME
ALTER USER SET PASSWORD
ALTER VIEW
ANALYZE
COMMENT
CREATE AGGREGATE
CREATE ALIAS
CREATE CONSTANT
CREATE DOMAIN
CREATE INDEX
CREATE LINKED TABLE
CREATE ROLE
CREATE SCHEMA
CREATE SEQUENCE
CREATE TABLE
CREATE TRIGGER
CREATE USER
CREATE VIEW
DROP AGGREGATE
DROP ALIAS
DROP ALL OBJECTS
DROP CONSTANT
DROP DOMAIN
DROP INDEX
DROP ROLE
DROP SCHEMA
DROP SEQUENCE
DROP TABLE
DROP TRIGGER
DROP USER
DROP VIEW
TRUNCATE TABLE

Commands (Other)

CHECKPOINT
CHECKPOINT SYNC
COMMIT
COMMIT TRANSACTION
GRANT RIGHT
GRANT ROLE
HELP
PREPARE COMMIT
REVOKE RIGHT
REVOKE ROLE
ROLLBACK
ROLLBACK TRANSACTION
SAVEPOINT
SET @
SET ALLOW_LITERALS
SET AUTOCOMMIT
SET CACHE_SIZE
SET CLUSTER
SET COLLATION
SET COMPRESS_LOB
SET DATABASE_EVENT_LISTENER
SET DB_CLOSE_DELAY
SET DEFAULT_LOCK_TIMEOUT
SET DEFAULT_TABLE_TYPE
SET EXCLUSIVE
SET IGNORECASE
SET LOG
SET LOCK_MODE
SET LOCK_TIMEOUT
SET MAX_LENGTH_INPLACE_LOB
SET MAX_LOG_SIZE
SET MAX_MEMORY_ROWS
SET MAX_MEMORY_UNDO
SET MAX_OPERATION_MEMORY
SET MODE
SET MULTI_THREADED
SET OPTIMIZE_REUSE_RESULTS
SET PASSWORD
SET QUERY_TIMEOUT
SET REFERENTIAL_INTEGRITY
SET SALT HASH
SET SCHEMA
SET SCHEMA_SEARCH_PATH
SET THROTTLE
SET TRACE_LEVEL
SET TRACE_MAX_FILE_SIZE
SET UNDO_LOG
SET WRITE_DELAY
SHUTDOWN

Other Grammar

Alias
And Condition
Array
Boolean
Bytes
Case
Case When
Cipher
Column Definition
Comments
Compare
Condition
Condition Right Hand Side
Constraint
Constraint Name Definition
Csv Options
Data Type
Date
Decimal
Digit
Dollar Quoted String
Double
Expression
Factor
Hex
Hex Number
Index Column
Int
Long
Name
Null
Number
Operand
Order
Quoted Name
Referential Constraint
Select Expression
String
Summand
Table Expression
Term
Time
Timestamp
Value

System Tables

Information Schema
Range Table




새로운 데이터베이스의 생성
(http://www.h2database.com/html/tutorial.html#creating_new_databases
)

데이터베이스 연결시 지정한 URL에 데이터베이스가 생성되어 있지 않다면 입력된 데이터베이스명으로 자동 생성된다.
만일 자동 생성을 원치 않는다면 다음과 같은 옵션으로 자동 생성을 막을 수 있다.

String url = "jdbc:h2:/data/sample;IFEXISTS=TRUE";

만일 해당 데이터베이스가 존재하지 않는 경우 데이터베이스가 존재하지 않는다는 오류 메세지를 출력한다.