본문 바로가기

데이터 관리/SQLite3

데이터베이스 이용하기 - (1) SQL의 기초


  이번 강좌가 올라오기까지도 꽤 많은 시간이 걸렸습니다. ^^; 제 게으름(???)... 이 아니라, 사실 데이터베이스 쪽을 강좌에서 다루려고 하다 보니 어디부터 설명해야 쉬울까... 고민도 좀 했었고, 저도 공부를 하다가 막히는 부분이 좀 있어서 그것 때문에 계속 인터넷이랑 책을 찾아보기도 했었구요^^;;;

어쨌든, 데이터베이스를 다루는 어플리케이션을 제작하기 전에, 데이터베이스에 대한 기초 지식과 간단한 SQL문은 알고 있어야 앞으로 나올 코드들을 이해하는 데 어려움이 없을 것입니다. 우리가 어떤 프로그래밍 언어를 모른다면, 그 언어로 제작된 코드를 읽기 어려운 것과 마찬가지로, 간단하기는 하지만 데이터베이스를 다루는 하나의 언어라고 볼 수 있는 SQL문을 알아야 데이터베이스를 다룰 수 있을 것입니다.

데이터베이스?

  데이터베이스는 여러 가지 데이터들이 일목요연하게 정리되어있는 하나의 "리스트" 정도로 이해하시면 됩니다. 마치 엑셀 시트에 들어가있는 전화번호부 정도를 연상하시면 되겠네요. 사실, 데이터베이스 하면 가장 기초적인 테이블부터 시작하여 별의별 용어와 개념이 있지만, 이 강좌에서는 안드로이드 어플리케이션에서 주로 쓰이는 테이블 단위까지만 소개하도록 하겠습니다.

테이블(Table) 이란?



테이블이란, 서로 관련 있는 정보들을 묶어 놓은 것입니다. 조금 더 구체적으로 말하면, 자신이 보고자 하는 항목들로 열을 구성해놓은 것이라 할 수 있습니다. 예를 들면, 주소록에서 이름, 전화번호만을 묶어서 한 테이블을 만들 수도 있고, 이름, 이메일주소를 묶을 수도 있으며, 이름, 전화번호, 이메일주소 모두를 묶어서 한 테이블을 만들 수도 있습니다.


테이블 생성하기

create table notes (_id integer primary key autoincrement, title text not null, body text not null);


create table notes
"notes"라는 이름을 가진 테이블을 생성합니다. 이후 괄호 안의 항목들은 테이블을 구성하는 열(Column)과 열들의 속성을 지정해주는 구문입니다.

_id integer primary key autoimcrement
정수형 데이터를 갖는 _id라는 이름을 가지는 열(필드)을 생성합니다. primary key는 이 열이 기준열이 됨을 의미합니다. 이 기준열이 되는 열의 내용은 각 레코드별로 달라야 합니다. autoincrement는 레코드가 추가될 때마다 해당 열의 데이터가 자동으로 증가함을 나타냅니다.

title text not null, body text not null
text형 데이터를 갖는 title과 text 열을 생성합니다. 이 두 열(필드)는 값이 항상 있어야(not null) 합니다.



테이블 삭제하기

drop table if exists notes


drop table if exists notes
"notes"라는 테이블이 있을 경우(if exists) 테이블을 삭제합니다.



기초적인 SQL문은 "읽으면 이해가 되는"정도라 그다지 부담갖지 않으셔도 됩니다. 데이터베이스를 다루는 SQL문은 여러 종류가 있지만, 기초적인 과정에서 전체 구문을 모두 사용하는 것은 위의 두 가지 정도 뿐이므로 이 정도만 알아도 무난합니다.