Sqlite 사용 방법 및 시기

Sqlite 사용 방법 및 시기

2022-06-01 last update

7 minutes reading FAQ SQLite MySQL
참고: 이 강좌는 권장하지 않는 Ubuntu 버전을 사용합니다.Click here to read an updated version written for Ubuntu 20.04 .
Sqlite는 매우 간단하고 빠른 오픈 소스 SQL 엔진입니다.이 강좌는 Mysql이나 Postgres 등 성숙한 RDBMS가 아닌 Sqlite를 사용하는 것이 가장 좋은지, Sqlite를 설치하는 방법과 CRUD를 포함하는 기본적인 용법 예시 - 만들기, 읽기, 업데이트, 삭제를 설명합니다.

오해


Sqlite가 테스트와 개발에만 사용된다고 착각하지 마세요.예를 들어 매일 조회 수가 100000건에 달하는 사이트에 대해서는 보수적인 제한이다.Sqlite 데이터베이스의 최대 크기는 140TB(이걸로 충분하지?),그리고 그것은 성숙한 RDBMS보다 훨씬 빠르다.전체 데이터베이스와 기타 필요한 모든 데이터는 호스트 파일 시스템의 일반 파일에 저장되기 때문에 별도의 서버 프로세스가 필요하지 않습니다(모든 프로세스 간의 통신이 느린 필요를 없앴습니다).

VPS에서의 최상의 사용


Sqlite는 단순성에 집중합니다.그것은 완전히 내부이기 때문에, 통상적으로 대체품보다 훨씬 빠르다.이식성 (언어와 플랫폼에 관한) 을 찾고 있다면, 간단하고 빠르며 메모리 사용량이 적습니다. – Sqlite는 이상적인 선택입니다.읽기와 쓰기의 병발성이 필요할 때만 그 단점이 뚜렷하다. Sqlite는 한 번에 하나의 쓰기 프로그램만 지원할 수 있고, 여러 클라이언트가 동시에 Sqlite 데이터베이스에 접근해야 한다면 보통 높은 파일 시스템 지연이 불편할 수 있다.마지막으로 가능한 단점은 문법이 다른 SQL 시스템과 비슷하지만 독특하다는 것이다.다른 시스템으로 옮기는 것은 상당히 간단하지만, 만약 당신이 Sqlite를 성장시켰다면, 전환 과정에서 약간의 비용과 관련이 있을 것입니다.
더 많은 정보를 원하시면 there are some very good outlines on the pros and cons of Sqlite inside the official documentation

VPS에 Sqlite 설치


qlite3 모듈은 표준 Python 라이브러리의 일부이기 때문에 표준 Ubuntu 설치나 Python이 설치된 시스템에서는 더 이상 설치할 필요가 없습니다.Ubuntu에 Sqlite 명령줄 인터페이스를 설치하려면 다음 명령을 사용합니다.
sudo apt-get update
sudo apt-get install sqlite3 libsqlite3-dev
원본 코드에서 컴파일해야 한다면, grab the latest autoconf version from the official SQLite website본문을 작성할 때:
wget http://sqlite.org/2013/sqlite-autoconf-3080100.tar.gz
tar xvfz sqlite-autoconf-3080100.tar.gz
cd sqlite-autoconf-3080100
./configure
make
make install
(소스 코드 구축에 대한 참고 사항: 1) 표준 Ubuntu 설치에서 이 작업을 수행하지 마십시오. 이미 설치된 버전과 새로 설치된 버전 사이에 충돌이 있기 때문에 "헤드와 소스 버전이 일치하지 않습니다"오류가 발생할 수 있습니다.2) make 명령을 더 입력해야 할 것 같으면 원본 코드를 컴파일하는 데 시간이 걸릴 수 있으므로 기다려 주십시오.

기본 명령행 인터페이스 사용


데이터베이스를 만들려면 다음 명령을 실행합니다.
sqlite3 database.db
여기서 "database"는 데이터베이스의 이름입니다.만약 파일database.db이 이미 존재한다면, Sqlite는 이 파일과의 연결을 열 것입니다.존재하지 않으면 생성됩니다.다음과 같은 출력을 볼 수 있습니다.
SQLite version 3.8.1 2013-10-17 12:57:35
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
이제 테이블을 만들고 데이터를 삽입합시다.'포도주'라는 이 표에는 아이디, 포도주 생산자, 포도주 종류와 포도주 원산국 네 열이 있다.아직 금요일이 아니기 때문에, 우리는 데이터베이스에 세 종류의 포도주만 삽입할 것이다.
CREATE TABLE wines (id integer, producer varchar(30), kind varchar(20), country varchar(20)); 
INSERT INTO WINES VALUES (1, "Rooiberg", "Pinotage", "South Africa");
INSERT INTO WINES VALUES (2, "KWV", "Shiraz", "South Africa");
INSERT INTO WINES VALUES (3, "Marks & Spencer", "Pinot Noir", "France");
우리는 이미 데이터베이스, 테이블, 그리고 일부 항목을 만들었다.이제 Ctrl + D 키를 눌러 Sqlite를 종료하고 다음 내용을 입력하십시오. (데이터베이스 이름을 "database"로 다시 바꾸십시오.) 이것은 우리가 방금 만든 데이터베이스에 다시 연결됩니다.
sqlite3 database.db
현재 유형:
SELECT * FROM wines;
우리가 방금 만든 항목을 보셔야 합니다.
1|Rooiberg|Pinotage|South Africa
2|KWV|Shiraz|South Africa
3|Marks & Spencer|Pinot Noir|France
너무 좋아요.이것이 바로 창작과 독서다.업데이트 및 삭제:
UPDATE wines SET country="South Africa" WHERE country="France";
프랑스에서 온 모든 포도주가 남아프리카에서 온 것으로 분류될 수 있도록 데이터베이스를 업데이트할 것이다.검사 결과:
SELECT * FROM wines;
다음을 참조하십시오.
1|Rooiberg|Pinotage|South Africa
2|KWV|Shiraz|South Africa
3|Marks & Spencer|Pinot Noir|South Africa
현재 우리의 모든 포도주는 남아프리카에서 왔다.KWV 축하를 마시고 데이터베이스에서 삭제합니다.
DELETE FROM wines WHERE id=2;
SELECT * FROM wines;
우리의 술 저장소에는 포도주 한 종류를 적게 넣어야 한다.
1|Rooiberg|Pinotage|South Africa
3|Marks & Spencer|Pinot Noir|South Africa
이것은 모든 기본적인 데이터베이스 조작을 포함한다.끝날 때까지 두 개의 테이블과 하나의 기본적인 연결을 사용하는 자질구레하지 않은 예시를 다시 시도해 봅시다.
명령Ctrl + D을 사용하여 Sqlite를 종료하고 sqlite3 database2.db를 사용하여 새 데이터베이스에 다시 연결합니다.
우리는 매우 유사한 wines 표를 만들 것이지만, 국가 이름과 현 대통령을 저장하는 데 사용할 countries 표도 만들 것이다.우선 countries 테이블을 만들고 남아프리카와 프랑스를 삽입합니다. (몇 줄의 sqlite 코드를 한 번에 복사해서 붙일 수 있습니다.)
CREATE TABLE countries (id integer, name varchar(30), president varchar(30));
INSERT INTO countries VALUES (1, "South Africa", "Jacob Zuma");
INSERT INTO countries VALUES(2, "France", "Francois Hollande");
그리고 우리는 포도 술자리를 다시 만들 수 있다.
CREATE TABLE wines (id integer, kind varchar(30), country_id integer);
INSERT INTO wines VALUES (1, "Pinotage", 1);
INSERT INTO wines VALUES (2, "Shiraz", 1);
INSERT INTO wines VALUES (3, "Pinot Noir", 2);
이제 남아프리카에 어떤 포도주가 있는지 봅시다.
SELECT kind FROM wines JOIN countries ON country_id=countries.id WHERE countries.name="South Africa";
다음을 참조하십시오.
Pinotage
Shiraz
이것은 기본 연결을 포함한다.Sqlite는 당신을 위해 많은 일을 했습니다.위의join문장에서 기본값은 INNER JOIN입니다. 비록 키워드 JOIN 만 사용하지만.그 밖에 우리는 지정할 필요가 없다wines.country_id. 왜냐하면 그것은 명확하기 때문이다.다른 한편, 우리가 명령을 시도한다면:
SELECT kind FROM wines JOIN countries ON country_id=id WHERE country_id=1;
우리는 오류 메시지를 받을 것이다 Error: ambiguous column name: id.이것은 매우 공평하다. 왜냐하면 우리의 두 시계는 모두 1열id이 있기 때문이다.그러나 일반적으로 Sqlite는 상당히 관용적이다.그것의 오류 메시지는 종종 어떤 문제를 찾고 복구하는 것을 매우 간단하게 하는데, 이것은 개발 과정을 가속화시키는 데 도움이 된다.
문법에 대한 진일보한 도움말the official documentation is full of diagrams like this one, 이것은 도움이 될 수 있지만, 구체적인 예시를 좋아한다면, here is a link to a tutorial with a nice overview of most of the join types.
마지막으로, Sqlite는 모든 주요 언어의 포장기와 드라이버를 가지고 있으며, 대부분의 시스템에서 실행할 수 있다.[이곳에서 많은 목록을 찾을 수 있습니다] http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers "target="\u blank).