SQLite는 경량 데이터베이스로, 임베디드 제품에 많이 사용되어 왔습니다. 임베디드 장치에서는 단지 몇백K 정도만 필요합니다. Windows/Linux/Unix 등 주류 운영체제를 지원할 수 있으며 Tcl, PHP, Java 등 다양한 프로그래밍 언어는 물론 ODBC 인터페이스와도 결합할 수 있습니다. 이는 Mysql 및 PostgreSQL과도 비교됩니다. 세계적으로 유명한 오픈 소스 소프트웨어인 데이터베이스 관리 시스템의 처리 속도는 그 어떤 시스템보다 빠릅니다.
SQLite는 매우 작지만 지원하는 SQL 문은 다른 오픈 소스 데이터베이스보다 열등하지 않습니다. 지원하는 SQL은 다음과 같습니다.
ATTACH DATABASE
거래 시작
논평
트랜잭션 커밋
복사
인덱스 생성
테이블 만들기
트리거 생성
보기 만들기
삭제
데이터베이스 분리
드롭 인덱스
드롭 테이블
드롭 트리거
드롭뷰
거래 종료
설명하다
표현
끼워 넣다
ON CONFLICT 절
프라그마
바꾸다
롤백 트랜잭션
선택하다
UPDATE
동시에 트랜잭션 처리 기능 등도 지원합니다. 어떤 사람들은 마이크로소프트의 Access와 같다고도 합니다. 때로는 약간 비슷하다고 느껴지지만 사실은 매우 다릅니다. 예를 들어, SQLite는 크로스 플랫폼을 지원하고, 작동이 간단하며, Office 지원이 필요하지 않은 Access와 달리 다양한 언어로 데이터베이스를 직접 생성할 수 있습니다. 매우 작은 애플리케이션이 있거나 임베디드 개발을 원하지만 적합한 데이터베이스 시스템이 없다면 지금 SQLite 사용을 고려할 수 있습니다. 현재 최신 버전은 3.2.2이고 공식 웹사이트는 http://www.sqlite.org 이며 소스 코드와 문서를 얻을 수 있습니다. 동시에, 데이터베이스 구조가 간단하고 시스템 소스 코드가 많지 않기 때문에 데이터베이스 시스템 개발을 연구하려는 전문가에게도 적합합니다.
이제 간략한 소개부터 시작하겠습니다. 주로 몇 가지 문제를 명확히 하고 싶습니다. 하나는 설치 및 사용 방법이고, 다른 하나는 PHP와 연동하여 개발하는 방법입니다.
1. 설치
1. Windows 플랫폼은
실제로 명령줄 프로그램인 Windows 아래에 파일을 다운로드합니다. (다운로드 주소: sqlite>
# SQLite 프롬프트. 명령 도움말을 보려면 .help를 입력하세요. sqlite에서는 모든 시스템 명령이 .:로 시작합니다.
sqlite> .help
.databases 연결된 데이터베이스의 이름과 파일을 나열합니다.
.dump ?TABLE? ... SQL 텍스트 형식으로 데이터베이스를 덤프합니다.
.echo ON|OFF 명령 에코를 켜거나 끕니다.
.exit 이 프로그램 종료
.explain ON|OFF EXPLAIN에 적합한 출력 모드를 켜거나 끕니다.
.header(s) ON|OFF 헤더 표시를 켜거나 끕니다.
.help 이 메시지 표시
.import FILE TABLE FILE에서 TABLE로 데이터 가져오기
.indices TABLE TABLE에 있는 모든 인덱스의 이름을 표시합니다.
.mode MODE ?TABLE? MODE가 다음 중 하나인 출력 모드를 설정합니다.
csv 쉼표로 구분된 값
열 왼쪽 정렬 열(.width 참조)
html HTML <테이블> 코드
TABLE에 대한 SQL 삽입 문 삽입
line 한 줄에 하나의 값
.separator 문자열로 구분된 값 목록
탭 탭으로 구분된 값
tcl TCL 목록 요소
.nullvalue STRING NULL 값 대신 STRING을 인쇄합니다.
.output FILENAME 출력을 FILENAME으로 보냅니다.
.output stdout 출력을 화면으로 보냅니다.
.prompt MAIN CONTINUE 표준 프롬프트 교체
.quit 이 프로그램 종료
.read FILENAME FILENAME에서 SQL을 실행합니다.
.schema ?TABLE? CREATE 문을 표시합니다.
.separator STRING 출력 모드 및 .import에서 사용되는 구분 기호 변경
.show 다양한 설정에 대한 현재 값을 표시합니다.
.tables ?PATTERN? LIKE 패턴과 일치하는 테이블 이름 나열
.timeout MS MS 밀리초 동안 잠긴 테이블을 열어보세요.
.width NUM NUM ... "열" 모드에 대한 열 너비 설정
SQLite>
www.knowsky.com
# 데이터베이스 카탈로그를 생성합니다
sqlite> 테이블 카탈로그 생성(
...> id 정수 기본 키,
...> pid 정수,
...> 이름 varchar(10) 고유
...> );
SQLite>
# 테이블이 존재하면 다음 메시지가 표시됩니다.
SQL 오류: 테이블 카탈로그가 이미 존재합니다.
# 인덱스 정보를 생성합니다
카탈로그(id asc)에 index Catalog_idx를 생성합니다.
# 테이블 정보를 확인하여 테이블이 몇 개 있는지 확인합니다.
sqlite>.테이블
AA 카탈로그
# 테이블의 구조를 봅니다:
sqlite> .schema 카탈로그
CREATE TABLE 카탈로그(
ID 정수 기본 키,
pid 정수,
이름 varchar(10) 고유
);
카탈로그(id asc)에서 INDEX Catalog_idx를 생성합니다.
#데이터 테이블에 레코드 삽입
sqlite> 카탈로그 (ppid,name) 값에 삽입 ('001','heiyeluren');
#성공하면 메시지가 표시되지 않습니다. 표현식이 잘못된 경우 오류 메시지가 표시됩니다.
SQL 오류: "set" 근처: 구문 오류
# 레코드가 몇 개 있는지 검색합니다.
sqlite> 카탈로그에서 count(*)를 선택합니다.
1
# 검색 기록을 검색합니다
sqlite> 카탈로그에서 *를 선택합니다.
1|1|heiyeluren
어쨌든 표준 SQL을 사용하여 실행하면 문제가 없습니다. 확실하지 않은 경우 공식 홈페이지에서 도움말 정보를 확인할 수 있습니다. 또한 SQLite는 테이블 구조 수정을 지원하지 않는다는 점에 유의해야 한다. 테이블 구조를 수정하려면 테이블을 삭제하고 다시 생성하는 수밖에 없기 때문에 테이블 생성 시 확장성을 고려해야 한다. 앞으로는 이 기능이 강화될 것으로 예상된다.
2. Linux/Unix 플랫폼
오류: 아직 설치하지 않았습니다. ㅎㅎ 그런데 아마도 Windows와 비슷할 것 같습니다. 이 부분은 나중에 보충하겠습니다.
2. SQLite의 PHP 개발
PHP 5는 더 이상 기본적으로 MySQL을 지원하지 않지만, 이는 SQLite가 얼마나 영향력이 있는지를 보여줍니다. 따라서 SQLite용 PHP를 개발하려면 PHP 5.0.0 이상을 사용하는 것이 좋습니다. 현재 SQLite 확장을 직접 지원하는 PHP 버전 5.0.4를 사용하고 있으므로 여기서는 PHP 확장 설치 방법에 대해 자세히 설명하지 않겠습니다.
여기서는 주로 SQLite의 개발에 대해 이야기하고 있습니다. 현재 PHP의 모든 주류 DB 클래스는 PEAR::DB 클래스 및 ADOdb 클래스를 포함한 SQLite 드라이버를 지원하므로 개발에 DB를 사용하는 것도 좋은 선택입니다.
간단히 설명하기 위해
다음
작업은 모두 Windows에서 실행
됩니다. PHP에는 SQLite에 대한 많은 처리 기능이 있습니다. 자세한 내용은 PHP 매뉴얼을 확인하세요.sqlite_open() 함수를 사용하여 sqlite 데이터베이스를 엽니다. 작업 리소스를 성공적으로 반환하고 실패하면 모든 후속 작업이 이 리소스에 대해 수행됩니다. sqlite_query 함수를 사용합니다.
아래에서는 현재 PHP 프로그램 디렉토리에 sqlite 데이터베이스 파일 abc.db가 있다고 가정합니다.
<?php
//sqlite 데이터베이스 열기
$db = @sqlite_open("abc.db");
//예외 처리
if (!$db) die("연결 Sqlite에 실패했습니다.n");
//foo라는 데이터베이스를 추가합니다.
@sqlite_query($db, "CREATE TABLE foo (bar varchar(10))");
//레코드 삽입
@sqlite_query($db, "foo 값에 삽입('fnord')");
//모든 레코드 검색
$result = @sqlite_query($db, 'foo에서 막대 선택');
//얻은 결과를 인쇄합니다.
print_r(sqlite_fetch_array($result))
?>
우리가 보는 출력은 다음과 같습니다:
배열
(
[0] => 프노르드
[바] => 프노르드
)은
코드가 성공적으로 실행되었음을 증명합니다. 입력이 없으면 프로그램을 확인하거나 데이터베이스 파일이 존재하는지 확인하세요.
그러면 이 기본적인 조작으로 좀 더 복잡한 연산과 SQL을 사용하여 조작하는 것도 고려해볼 수 있고, 방명록이나 CMS 시스템을 만들 수도 있을 것 같습니다.
2. PHP를 사용하여 데이터베이스를 생성하고 운영합니다
. sqlite.exe와 같은 도구가 없으면 PHP를 통해 sqlite 데이터베이스를 생성하고 관리할 수도 있습니다.
실제로 sqlite.exe 프로그램을 통해 생성된 데이터베이스의 내용은 비어 있는데, 실제로는 테이블이 생성되고 데이터가 추가된 후에만 데이터베이스 파일이 존재하므로 빈 테스트 등의 파일을 수동으로 추가할 수 있습니다. db 파일을 작동시키나요? 아래에서는 PHP 프로그램을 사용하여 데이터베이스를 생성하고 데이터 테이블 생성, 데이터 삽입 및 데이터 검색과 같은 간단한 기능을 수행합니다.
먼저 코드를 살펴보겠습니다. (코드는 길지만 이해하기 쉽습니다.)
<?php
/**
* 파일: sqlite.php
* 기능: sqlite 데이터베이스 처리
* 작가 : 헤이엘루렌
* 시간: 2005-8-5
*/
Define("LN", __LINE__);//줄 번호
Define("FL", __FILE__);//현재 파일
정의("DEBUG", 0);//디버그 스위치
$db_name = "heiyeluren.db";
//데이터베이스 파일을 생성합니다. 파일 내용이 비어 있습니다.
if (!file_exists($db_name)) {
if (!($fp = fopen($db_name, "w+"))) {
종료(error_code(-1, LN));
}
fclose($fp);
}
//데이터베이스 파일 열기
if (!($db = sqlite_open($db_name))) {
종료(error_code(-2, LN));
}
//데이터 테이블 구조 생성
if (!sqlite_query($db, "DROP TABLE 테스트")) {
종료(error_code(-3, LN));
}
if (!sqlite_query($db, "CREATE TABLE 테스트 (id 정수 기본 키, pid 정수, 이름 varchar(10) UNIQUE)")) {
종료(error_code(-3, LN));
}
//데이터 조각 삽입
if (!sqlite_query($db, " INSERT INTO test (name) VALUES ('heiyeluren') ")) {
종료(error_code(-4, LN));
}
//데이터 검색
if (!($result = sqlite_query($db, "SELECT * FROM 테스트"))) {
종료(error_code(-5, LN));
}
//검색된 데이터를 가져와서 표시합니다.
while ($array = sqlite_fetch_array($result)) {
echo "ID: ". $array[id] ."<br>이름: ". $array[name] ;
}
/* 오류 메시지 코드 기능 */
함수 error_code($code, $line_num, $debug=DEBUG)
{
if ($code<-6 || $code>-1) {
거짓을 반환;
}
스위치($code) {
사례 -1: $errmsg = "데이터베이스 파일 생성 오류.";
부서지다;
사례 -2: $errmsg = "sqlite 데이터베이스 파일 열기에 실패했습니다.";
부서지다;
사례 -3: $errmsg = "테이블 생성에 실패했습니다. 테이블이 이미 존재합니다.";
부서지다;
사례 -4: $errmsg = "데이터 삽입에 실패했습니다.";
부서지다;
사례 -5: $errmsg = "데이터베이스 데이터 쿼리에 실패했습니다.";
부서지다;
사례 -6: $errmsg = "데이터 가져오기에 실패했습니다.";
부서지다;
사례 -7: $errmsg = "";
부서지다;
기본값: $errmsg = "알 수 없는 오류입니다.";
}
$m = "<b>[ 오류 ]</b><br>파일: ".basename(FL) ." <br>라인: ".LN ."<br>메시지: ".$errmsg ."" ;
if (!$debug) {
($m = $errmsg);
}
$m 반환;
}
?>
올바르게 작동하면 프로그램은 최종적으로
ID: 1을
출력합니다.
이름 : 헤이엘루렌
위 프로그램에는 디버깅, 예외 처리, 데이터베이스 액세스 등을 포함하여 비교적 완전한 기능이 포함되어 있습니다. 이는 간단한 응용 프로그램으로 간주됩니다. 관심이 있으면 확장할 수도 있습니다.
* 끝:
기본적인 작업은 여기까지입니다. 나중에 시간이 나면 내용을 완성하겠습니다. 관심이 있으시면 조사해 보시기 바랍니다. 어쩌면 귀하의 개인 홈페이지에 도움이 될만한 작은 데이터베이스가 필요할 수도 있습니다.
* 참고 문서:
http://www.donews.net/limodou/archive/2004/03/21/7997.aspx
http://www.linuxsir.org/bbs/showthread.php?p=1213668#post1213668
* SQLite 리소스 공식 홈페이지: http://www.sqlite.org
SQL 구문: http://www.sqlite.org/lang.html
개발 문서: http://www.sqlite.org/docs.html
FAQ: http://www.sqlite.org/faq.html
다운로드 주소: http://www.sqlite.org/download.html
작가: heiyeluren
날짜: 2005-8-5