SQLite를 사용하면 제일 먼저 하게 되는 게 바로 DB 생성입니다. SQLite의 특징을 살펴본 후, sqlite3 cli 를 사용해서 SQLite DB 생성하고 사용하는 방법을 함께 알아보도록 하겠습니다.
목차
SQLite DB의 특징
SQLite라는 이름의 Lite는 가볍다는 의미를 지니고 있습니다. 정말 가벼운 데이터베이스라고 할 수 있습니다. 가벼우면서도 얼마나 유용한지 SQLite DB의 특징을 먼저 살펴보겠습니다.
Serverless: 서버리스
Oracle이나 MySQL 등의 대형 데이터베이스는 파일을 어떻게 관리하는지 사용자가 거의 관여하지 않고 DB 서버에서 알아서 관리합니다. 하지만 SQLite의 경우에는 서버리스이기 때문에 사용자가 데이터베이스 파일 경로를 직접 다루어 주기만 하면 됩니다.
파일 하나에 데이터베이스 하나
즉, SQLite는 매우 간단한 파일 데이터베이스의 형식을 띄고 있기 때문에, 하나의 파일에 하나의 데이터베이스를 관리하고 있습니다. 그리고 테이블이나 인덱스와 같은 모든 정보는 데이터베이스 파일 하나에 모두 관리가 됩니다.
따라서 데이터베이스를 하나 새로 추가한다면, 새로운 파일로 데이터베이스를 만들어야 합니다. 즉, 하나의 파일에서 여러개의 데이터베이스를 다루지 않습니다.
이렇게 DB를 다루는 방식이 파일 하나를 다루면 된다는 단순한 점 때문에 Mobile 장치의 Android App이나 iOS App에서 SQLite를 많이 사용합니다. 물론 운영체제에 무관하게 동일한 데이터베이스 파일을 사용할 수 있습니다.
트랜잭션
SQLite의 모든 트랜잭션은 완전히 ACID를 준수합니다. 따라서 응용 프로그램이나 운영체제 충돌, 그리고 정전과 같은 예상하지 못한 상황이 발생하더라도 트랜잭션 내의 모든 변경이 완전히 이루어지든지, 또는 하나도 변경이 이루어지지 않는지 합니다.
환경설정 파일 사용하지 않음
MySQL은 my.cnf나 my.ini 파일의 설정파일이 필요하지만, SQLite는 설정파일이 필요없습니다.
SQLite In-memory DB 생성
매우 빠른 작업이 필요할 때에는 파일을 만들지 않고 메모리에 DB를 만들어서 활용할 수도 있습니다.
자, 그러면 이제 이런 특징들을 가지고 있는 SQLite DB 생성, 연결, 삭제 방법을 함께 살펴보도록 하겠습니다.
SQLite3 cli 설치
우선 sqlite3 cli를 이용할 것인데, 설치되지 않았다면 먼저 설치해 주셔야 합니다.
Ubuntu 운영체제에서 SQLite3 설치
먼저 터미널을 열어서 sqlite3 명령어를 실행해 보겠습니다.
sqlite3이 설치되어 있지 않으며 apt를 이용해서 sqlite3 패키지를 설치할 수 있다고 알려주네요. 아래 명령어를 사용해서 sqlite3 cli를 설치해 줍니다.
sudo apt install sqlite3
ShellScriptSQLite DB 생성 방법
Oralce이나 MySQL에서 create database 명령어를 사용하는 것과 같이, sqlite에서 데이터베이스를 만드는 방법에는 세 가지 방법이 있습니다.
DB 파일 지정해서 만들기(방법1)
sqlite3 도움말을 먼저 살펴보겠습니다. FILENAME은 SQLite 데이터베이스 이름이라는 것을 알 수 있습니다. 기존에 동일한 파일이 없다면 새로운 데이터베이스를 만들게 됩니다.
sqlite3 명령어와 더불어 Database 이름을 함께 지정해 주면 해당 데이터베이스 이름의 파일이 생성됩니다.
sqlite3 users.db
ShellScript데이터베이스 이름은 파일 확장자가 있어도 되고 없어도 됩니다. 확장자가 없다면 빠르게 식별하기 힘들 수도 있으니, .db 또는 .sqlite나 .sqlite3, .sq3 와 같이 식별하기 좋은 확장자를 사용하신다면 DB 파일인 것을 금세 알아차릴 수 있을 것입니다.
In-memory DB 생성 후 DB 이름 지정하기
우선 sqlite3 명령어를 실행하면 sqlite3 shell이 열립니다.
sqlite3
ShellScript그러면 아래와 같이 일시적인 인메모리 데이터베이스(transient in-memory database)에 연결되었음을 알려줍니다. 따라서 지금부터 만들어지는 데이터베이스는 메모리에만 보관되고 있으므로 sqlite3 shell을 종료하면 모두 사라집니다.
.open 명령어 사용해서 데이터베이스 저장(방법2)
아직 아무 데이터베이스 작업을 하지 않았다면 .open FILENAME 명령어를 사용해서 데이터베이스 이름을 지정한 후 작업할 수 있습니다.
.save 명령어로 데이터베이스 저장(방법3)
만약 .open 명령어로 파일이름을 지정하지 않은 채 이미 어떤 작업을 하시다가, .open 명령어를 사용하면 기존에 메모리 DB에서 작업하던 모든 내용은 사라집니다. 이미 테이블도 생성하는 등의 작업을 하셨다면 .save 명령어를 사용해서 인메모리 데이터베이스를 파일로 저장하시면 됩니다. 그림 4에서는 인메모리 DB에서 매우 간단한 user 테이블을 생성하고 데이터베이스 파일로 저장해 보았습니다.
위와 같이 .save 명령어를 사용해서 DB가 파일로 잘 저장되었는지 확인해 보면, 아래와 같이 데이터베이스 파일이 잘 생성된 것을 확인할 수 있습니다.
SQLite DB 여는(연결) 방법
별다른 방법이 있지 않습니다. 위에서 데이터베이스를 생성하는 명령어와 동일합니다. 터미널에서 sqlite3 FILENAME 이라는 명령어를 실행해서 열거나, sqlite3 실행 후 .open FIELNAME 명령어를 이용해서 데이터베이스를 사용할 수 있습니다. Oracle이나 MySQL에서 use database DATABASE_NAME 명령어를 사용하는 것과 동일한 역할을 합니다.
DB 파일을 사용하기 위해 여는 방법도 만들 때와 동일합니다. 위와 아래 모두 간단히 그림 4에서 만든 테이블이 잘 만들어졌는지 확인하기 위해 .tables 명령어와 .schema 명령어를 통해 테이블 구조도 간단히 확인해 보았습니다.
SQLite DB 삭제 방법
Oracle이나 MySQL에서는 drop database DATABASE_NAME의 명령어를 사용하지만, SQLite에서는 그냥 해당 파일을 삭제하면 됩니다.
rm users.db
ShellScript참고자료
Command Line Shell For SQLite 공식 문서를 참고했습니다.