2020-10-16 18:03:47

sqlite3가 처음이신 분들은 이 글을 쭉 한번 읽어가면서 동시에 그대로 따라하시면서 명령어와 문법들을 익히시길 권해드립니다. 

 

1. 데이터베이스 생성 및 열기

먼저 test.db라는 이름의 데이터베이스를 열겠습니다. 없다면 만들어서 열어줍니다. 

 

.open 데이터베이스명

sqlite> .open test.db

 

 

2. 데이터베이스 내 테이블 확인

이 데이터베이스 안에 어떤 테이블들이 있는지 확인해보겠습니다. 

 

.tables

sqlite> .tables

 

 

만들어놓은 테이블들이 있다면 이름이 나열될 것입니다. 저는 아무 테이블도 만들어놓지 않았기 때문에 어떤 값도 출력되지 않았습니다. 

 

3. 테이블 생성

그러면 학생들의 시험점수를 넣기 위해 테이블을 하나 생성해보겠습니다. 이름, 수학점수, 영어점수를 넣는 테이블이라고 가정하겠습니다. 

 

CREATE TABLE 테이블명 (열이름, 열이름, 열이름);

sqlite> CREATE TABLE student (name TEXT NOT NULL, math INT, english INT); 

 

 

student라는 이름의 테이블을 만들었고, 총 3개의 열이 존재하는데, 각각 학생 이름, 수학 점수, 영어 점수를 위한 공간들입니다. 그리고 이름은 NOT NULL, 즉 꼭 입력받아야한다고 지정해놨습니다. 

 

테이블을 생성했으니 .table 명령어를 다시 한번 입력해보겠습니다. 

 

 

student라는 테이블이 있다는 것을 알려주고 있습니다. student라는 테이블이 제대로 생성된 것이 맞습니다. 

 

4. 테이블 구조 확인

student 테이블의 구조를 확인하고 싶다면 다음과 같이 명령해주면 됩니다.

 

.schema 테이블명

sqlite> .schema student

 

 

테이블이 어떤 구조를 갖는지 한눈에 보여줍니다. 

 

5. 데이터 쓰기(Create)

이제 테이블에 여러 데이터를 삽입해보도록 하겠습니다. 

 

INSERT INTO 테이블명 (열이름, 열이름, 열이름) VALUES (값, 값, 값);

sqlite> INSERT INTO student (name, math, english) VALUES ('심교훈', 100, 100);

sqlite> INSERT INTO student (name, math, english) VALUES ('문태호', 60, 70);

sqlite> INSERT INTO student (name, math) VALUES ('황병일', 80);

 

 

황병일 학생의 경우 영어 점수는 입력을 안했는데, not null로 설정되지 않은 열은 이렇게 넣지 않아도 작동합니다. 테이블에 존재하는 모든 열에 데이터를 순서대로 넣을 때는 열이름을 생략하고 다음과 같이 명령해줘도 알아듣습니다. 

 

INSERT INTO 테이블명 VALUES (값, 값, 값); 

 

6. 데이터 읽기(Read)

그러면 데이터들이 테이블에 잘 입력되었는지 확인해보겠습니다. 

 

SELECT * FROM 테이블명;

sqlite> SELECT * FROM student;

 

 

잘 입력되었네요. 그런데 각 열이 무엇을 나타내는지 보여주면 좋겠죠? 

 

.header on

sqlite> .header on

 

위와 같이 명령한 다음에 다시 SELECT * FROM student;를 입력하니 다음과 같이 출력되었습니다. 

 

 

name, math, english가 맨 위에 추가되어 무엇을 나타내는 값들인지 명확해졌습니다. 또한 다음과 같이 명령해주면 더 이쁘게 나타납니다. 

 

.mode column

sqlite> .mode column

 

 

7. 데이터 갱신(Update)

아까 황병일 학생의 영어 점수를 입력하지 않았는데, 그 행을 업데이트해보겠습니다. 세번째 위치하는 행이므로 rowid=3을 이용해서 다음과 같이 수정해줄 수 있습니다. 

 

UPDATE 테이블명 SET 열이름 = 수정할 값 WHERE 조건;

sqlite> UPDATE student SET english = 90 WHERE rowid = 3;

 

 

영어 점수가 추가로 입력되었습니다. 같은 방식으로 기존의 값을 변경하는 것도 가능합니다. 심교훈 학생의 수학점수 100점을 95점으로 바꿔보겠습니다. 

 

sqlite> UPDATE student SET math = 95 WHERE rowid = 1;

 

 

100점이 95점으로 잘 바뀌었습니다. rowid 말고 직접 어떤 값을 가지고 행을 찾아가서 수정하는 것도 가능합니다. 

 

sqlite> UPDATE student SET english = 60 WHERE name = '심교훈';

 

 

심교훈 학생의 100점이었던 영어점수가 60점으로 바뀌었습니다. 

 

8. 데이터 삭제(Delete)

이번에는 문태호 학생에 대한 데이터를 지워보겠습니다. 

 

DELETE FROM 테이블명 WHERE 조건;

sqlite> DELETE FROM student WHERE name = '문태호';

 

 

해당 행이 삭제되었습니다. 만약 조건을 주지 않으면, 모든 행을 삭제합니다. 

 

DELETE FROM 테이블명;

sqlite> DELETE FROM student;

 

모든 행을 제거했다고 테이블 자체가 사라지는 것은 아닙니다. 

 

9. 테이블 삭제

마지막으로 지금까지 생성해서 사용했던 student 테이블을 제거해보겠습니다. 

 

DROP TABLE 테이블명;

sqlite> DROP TABLE student;

 

 

이제 더이상 student 테이블은 존재하지 않기 때문에 어떠한 데이터도 읽어 낼 수 없습니다. 

 

 

<참고자료>

[1] three-pleasure.tistory.com/221, 삼쾌한 IT강의, "[삼퀘한 IT강의] SQLITE 기본 명령어"