소개



 
- SQLite 는 독립적이고, 서버가 필요 없으며, 특별한 설정을 할 필요도 없는, 트렌젝션이 가능한 SQL 데이타베이스 엔진으로 꾸준히 개발중인 Library 입니다. SQLite 의 코드는 공개되어 있고, 상업적이든 개인적이든, 어떤 용도로도 무료로 사용하실 수 있습니다. 현재 SQLite 는 꽤 유명한 프로젝트를 포함하여, 생각하는 것 이상으로 많은 프로그램에서 사용하고 있습니다.

 
- SQLite 는 SQL 데이타베이스 엔진을 내장하고 있습니다. 수 많은 SQL 데이타베이스와는 다르게, SQLite 는 별도의 서버 프로세스를 가지고 있지 않고, 일반 디스크 파일을 직접 읽고 씁니다. SQLite 의 데이타베이스는 오직 한 개의 파일에 멀티 테이블, 색인, 트리거, 뷰 등을 가지고 있습니다.그리고 데이타베이스 파일은 크로스 플랫폼을 지원한기 때문에, 32비트 - 64비트 또는 big-endian little-endian 아키텍처에서 서로 사용할 수 있습니다. 이것이 Applictiion File Format 으로 SQLite 가 사랑받는 이유입니다. 

- SQLite 는 매우 작은 라이브러리입니다. 컴파일러 세팅이나 타겟 플렛폼에 따라서 조금의 차이는 있겠지만, 350 kbye 정도밖에 되지 않습니다. 옵션 기능을 제거하면 200 kbyte 이하로도 만들 수 있습니다. 또한 실행시에는 메모리 스택영역은 4kbyte, 힙 영역은 100 kbyte 으로 매우 조금만 차지합니다. 이런 이유로 휴대폰, PDA, MP3 플레이어와 같이 메모리 제약적인 곳에서 SQLite 를 널리 쓰고 있습니다. 메모리와 성능은 서로 교환적입니다. 메모리 공간이 많을수록 속도는 빨라집니다. 그럼에도 불구하고 작은 메모리 환경에서도 우수한 속도를 자랑합니다.





FAQ


1. AUTOINCREMENT 필드는 어떻게 만드나요?


2. SQLite 에서 지원하는 자료형(data type)은 어떤 것들이 있나요? 


3. SQLite 은 이상하게도 integer 타입 컬럼에 문자열이 들어갑니다!


4. 왜 SQLite 에서는 한 table 안에서 primary key 로 '0' 과 '0.0' 을 함께 사용 할 수 없나요?


5. 여러 프로그램이나 한 프로그램의 여러 인스턴스에서 한 개의 database 파일을 동시에 접근할 수 있나요? 


6. SQLite 는 쓰레드에 안전(threadsafe)한가요?


7. SQLite 데이타베이스에 있는 모든 table 과 indices 를 출력하려면 어떻게 해야 하나요?


8. SQLite 데이타베이스의 사이즈 제한이 있나요?


9. SQLite 에서 VARCHAR 의 최대 크기는 얼마인가요?


10. SQLite 는 BLOB 타입을 지원하나요?


11. SQLite 에 table 에서 컬럼을 추가하거나 삭제하려면 어떻게 해야 하나요?


12. 많은 데이터를 지웠는데, 데이타 파일의 크기는 줄어들지 않습니다. 버그인가요?


13. 로열티를 지불하지 않고 SQLite 를 상업 프로그램을 만드는데 사용해도 되나요?


14. 홑따옴표(') 문자를 포함한 문자열을 사용하려면 어떻게 해야 하나요?


15. SQLITE_SCHEMA 에러는 무엇인가요? 그리고 왜 발생하나요?


16. ROUND(9.95, 1) 은 10.0 대신 9.9 가 리턴 됩니다. 9.95 를 반올림 해야 하는거 아닌가요?

17. SQLite 를 컴파일 할때, 수백개의 오류가 발생합니다. 코드에 문제가 있는게 아닌가요? 저질스런 코드 아닌가요?


18. 유니코드 문자에 대해서는 대소문자 구분없는 매칭(Case-insensitive matching)이 되지 않습니다.


19. INSERT 가 너무나 느립니다. 초당 겨우 열 개 정도 INSERT 할 수 있습니다.


20. 실수로 SQLite 데이타베이스에서 중요한 데이터를 지웠습니다. 복구 가능한가요?


21. SQLITE_CORRUPT 에러가 무엇인가요? 데이타베이스가 "malformed" 되었다는게 무슨 의미인가요? 그리고 왜 발생하는건가요?


22. SQLite 는 외래키(foreign keys)를 지원하나요?


23. SQLite 를 빌드할 때, 컴파일 옵션에 SQLITE_OMIT 를 사용하면 컴파일러에서 오류가 발생합니다. 


24. WHERE 절에 column1="column1" 이 동작하지 않는 것 같습니다. 왜냐면 column1 의 값이 "column1" 인 행 뿐만 아니라, 테이블의 모든 행이 리턴되기 때문입니다.


25. SQLite 에서 생성하는 문법 다이어그램(syntax diagrams)은 어떤가요?


26. SQL 표준에서는 컬럼에서 NULL 이 하나 또는 그 이상이더라도 UNIQUE 을 적용하도록 되어 있습니다. 하지만 SQLite 에는 그렇지 않는 것 같습니다. 버그인가요?



27. SQLite 의 Export Control Calssification Number(ECCN) 은 어떻게 되나요?