SQLite | 데이터베이스 (Database) | 데이터베이스 생성 및 연결
SQLite 데이터베이스를 새로 만드는 방법, 그리고 생성 된 데이터베이스에 연결하는 방법에 대해 설명한다.
데이터베이스 생성
데이터베이스를 새로 만들려면 명령 프롬프트에서 다음과 같이 입력한다.
sqlite3 데이터베이스명
예를 들면 myfriend.sqlite3라는 데이터베이스를 만들려고 한다. 명령 프롬프트를 시작하고 sqlite 파일이 있는 디렉터리로 이동한 후에 다음과 같이 실행한다.
$ sqlite3 myfriend.sqlite3
$ sqlite3 myfriend.sqlite3
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite>
myfriend.sqlite3 데이터베이스가 존재하지 않으면 새로운 데이터베이스 myfriend.sqlite3가 생성되고 생성된 데이터베이스에 바로 연결된다.
데이터베이스에 연결된 상태되기에 테이블 등을 데이터베이스에서 만들 수 있다. 뭐라도 만들지 않으면 데이터베이스는 생성되지 않기에 여기서는 간단한 테이블을 생성해 보자. 테이블을 만드는 자세한 방법은 다른 페이지에서 하도록 하겠다.
$ sqlite3 myfriend.sqlite3
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite> create table customer (id, name);
$
명령 커맨드 도구를 종료하려면 .exit
라고 입력한다. 그러면 연결된 데이터베이스에서 연결이 끊인다.
.exit
그럼 실제로 확인해 보자. 먼저 myfriend.sqlite3 데이터베이스에 연결하여 .exit
을 입력해 본다.
$ sqlite3 myfriend.sqlite3
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite>.exit
$
그럼 sqlite3가 생성한 데이터베이스 파일 확인해 보자.
$ ls
myfriend.sqlite3 sample.sqlite3 sqldiff sqlite3 sqlite3_analyzer
데이터베이스명으로 지정한 이름과 동일한 이름의 파일이 생성되어 있다. SQLite에는 이렇게 데이터베이스를 생성하면 같은 이름의 파일이 작성되어 데이터베이스에 포함된 모든 데이터가 이 파일에 저장된다.
또한 sqlite3 파일이 있는 디렉터리로 이외에 다른 곳에 데이터베이스 파일을 설치하고자 한다면 다음과 같이 경로와 함께 지정한다.
sqlite3 경로/데이터베이스명
예를 들어, 절대 경로 /Users/devkuma/sqlite/test 디렉터리에 sample.sqlite3 데이터베이스를 만들려면 다음과 같이 실행한다.
$ sqlite3 /Users/devkuma/sqlite/testsample.sqlite3
데이터베이스명에 대해
데이터베이스명은 원하는 이름을 지정할 수 있다. 앞에서는 myfriend.sqlite3로 지정했지만 어떤 형식이라도 상관 없다.
myfriend
myfriend.db
myfriend.sqlite
myfriend.sqlite3
데이터베이스를 생성하면 SQLite에서는 데이터베이스명과 동일한 이름의 파일을 생성하여 데이터를 저장한다. 예를 들어, 데이터베이스명이 myfriend인 경우, 생성되는 파일명도 myfriend로 확장자가 없는 파일이 만들어지게 되어 나중에 파일을 보게 되면 이것이 무슨 파일인지 알아 보기가 힘들어 진다.
따라서 데이터베이스명을 정할 때 데이터베이스가 저장되는 파일명도 고려하여 지정하는 것이 좋다. 일반적으로 어떤 확장자가 사용되고 있는지는 모르겠지만 여기에서는 .sqlite3 확장자로 통일하겠다.
데이터베이스에 연결
데이터베이스에 대해 다양한 작업을 수행하려면 먼저 데이터베이스에 연결해야 한다. 신규 데이터베이스를 작성한 경우는 생성과 동시에 접속이 이루어 지지만, 이미 생성된 데이터베이스에 연결하려면 명령 프롬프트에서 다음과 같이 입력한다.
sqlite3 데이터베이스명
보면 알 수 있듯이 신규 데이터베이스를 만들 때와 같은 형식이다. 인수에 이미 존재하는 데이터베이스명을 지정하면, 새로운 데이터베이스가 생성되는 것이 아니라 인수에 지정된 데이터베이스에 연결이 된다.
그럼 앞에서 생성한 myfriend.sqlite3 데이터베이스에 연결을 시도해 보자. 명령 프롬프트를 시작하고 sqlite3가 있는 디렉터리로 이동 한 후에 다음과 같이 실행한다.
$ sqlite3 myfriend.sqlite3
$ sqlite3 myfriend.sqlite3
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite>
새로운 데이터베이스가 생성된 것이 아니라 기존의 데이터베이스에 연결되어 있는지 확인하기 위해 기존의 데이터베이스에 만든 테이블을 확인하여 보기 위해 .tables
명령어를 실행한다.
.tables
그럼 실제로 확인해 보자. 먼저 myfriend.sqlite3 데이터베이스에 연결하여 .tables
을 입력해 본다.
$ sqlite3 myfriend.sqlite3
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite> .tables
customer
sqlite>
customer 테이블이 생성되어 있는 것을 확인할 수 있다. 이처럼 새 데이터베이스를 만들 경우와 기존 데이터베이스에 연결하는 경우에 동일한 명령어와 동일한 형식으로되어 있으므로 주의하길 바란다.