· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
SQ Lite

sqlite.gif
[GIF image (2.99 KB)]
초기작성자 - mcguiver9

SQLite 는 엄밀히 말해서 DB이지만 DBMS는 아닌 파일DB입니다.




1. 특징

  • Transactions are atomic, consistent, isolated, and durable (ACID) even after system crashes and power failures
  • 설치시 setup이나 admin설정이 필요없음
  • 대부분의 SQL92 구현
  • 데이터베이스가 파일 하나로 되어 있음
  • 2테라바이트(2의41승) 지원
  • BLOB과 문자열의 사이즈는 오직 메모리에 의해 제한
  • 실행파일의 사이즈 작음(250KB)
  • Client/Server 데이터베이스 엔진보다 빠른 속도
  • API 갯수가 아주 적음(프로그래밍하기에 간단)
  • 외부 Dependency가 없음
  • public domain 라이센스로 어떤 목적으로도 사용 가능
  • PHP5에서 기본 지원(MySQL 모듈이 빠져있지만 다시 화해했다는 얘기도 있음)

2. 3.0에 추가된 기능

  • 향상된 Compact한 데이터베이스 파일 형식
  • 명백한 타입 및 BLOB형식 지원
  • UTF-8, UTF-16 지원 추가
  • 사용자 정의 text collating sequences
  • 64 bit ROWIDs
  • 향상된 Concurrency

3. 빠른시작

SQLite라는 DB는 간단히 말해서 SQL을 사용하여 질의할 수 있는 파일DB 이다. DB가 Embeded된 Application을 쉽게 작성할 수 있을 것 같다. 천천히 이 꼬마괴물 DB에 대해서 알아보려 한다.

[http]Quickstart 원문보기

지겨운 메뉴얼부터 보지말고 SQLite를 일단 체험해보자. 여기서는 일단 제가 설치해 본 윈도우버젼을 설명한다.

C:\sqlite> sqlite3 test.db

C++에서의 구현 예제(단, 3개의 함수 제공- 초간단)
#include <stdio.h>
#include <sqlite3.h>

static int callback(void *NotUsed, int argc, char **argv, char **azColName){
  int i;
  for(i=0; i<argc; i++){
    printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
  }
  printf("\n");
  return 0;
}

int main(int argc, char **argv){
  sqlite3 *db;
  char *zErrMsg = 0;
  int rc;

  if( argc!=3 ){
    fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
    exit(1);
  }
  rc = sqlite3_open(argv[1], &db);
  if( rc ){
    fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
    sqlite3_close(db);
    exit(1);
  }
  rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
  if( rc!=SQLITE_OK ){
    fprintf(stderr, "SQL error: %s\n", zErrMsg);
  }
  sqlite3_close(db);
  return 0;
}


4. 사용가능 문법


  • ALTER TABLE
  • ANALYZE
  • ATTACH DATABASE
  • BEGIN TRANSACTION
  • comment
  • COMMIT TRANSACTION
  • COPY
  • CREATE INDEX
  • CREATE TABLE
  • CREATE TRIGGER
  • CREATE VIEW
  • DELETE
  • DETACH DATABASE
  • DROP INDEX
  • DROP TABLE
  • DROP TRIGGER
  • DROP VIEW
  • END TRANSACTION
  • EXPLAIN
  • expression
  • INSERT
  • ON CONFLICT clause
  • PRAGMA
  • REINDEX
  • REPLACE
  • ROLLBACK TRANSACTION
  • SELECT
  • UPDATE
  • VACUUM

5. 사용불가능 문법

아직 SQLite에서는 지원되지 않는 문법

  • FOREIGN KEY constraints
  • Complete trigger support
  • Complete ALTER TABLE support
  • Nested transactions
  • RIGHT and FULL OUTER JOIN
  • Writing to VIEWs
  • GRANT and REVOKE




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-04-05 18:12:32
Processing time 0.0082 sec