[Android] SQLite

강승구·2022년 12월 23일
0

SQLite는 데이터베이스 관리 시스템으로 서버가 아니라 응용 프로그램에 넣어 사용하는 비교적 가벼운 데이터베이스이다.
SQLite가 사용하는 공간은 설치된 시스템에 따라 다르지만 600kb 미만의 공간을 차지한다. 또한 완전히 독립형이므로 SQLite가 작동하기 위해 시스템에 설치해야 하는 외부 종속성이 없다.

그리고 데이터를 분리된 파일의 커다란 배치로 저장하는 다른 일반적은 데이터베이스와는 달리 SQLite는 단일 파일에 전체 데이터가 저장되기 때문에 이식성이 뛰어나다는 장점이 있다. 이 파일은 디렉터리 계층의 어디에나 위치할 수 있으며 이동식 디스크 또는 파일 전송 프로토콜을 통해 공유할 수 있다.

관계형 데이터베이스

여러 사람들의 연락처 데이터는 다음과 같이 테이블 구조로 관리할 수 있다.

순서이름전화번호이메일주소
0김철수010-1111-1111kim@abc.com서울
1이영희010-2222-2222lee@abc.com서울
2박모모010-3333-3333park@abc.com]인천

이런 식으로 통일된 규칙의 데이터를 관리할 수 있는 테이블을 데이터베이스라고한다.
이 때 이름, 전화번호, 이메일, 주소는 Key라고 하고 그에 대응되는 값들은 Value라고 한다.
순서라는 Key는 각 데이터에 대해 겹치지 않는 고유한 값이기 때문에 고유키(Primary Key)라고 한다.

이렇게 Key와 Value가 1:1이나 1:n 또는 n:n 의 관계를 가지는 데이터베이스를 관계형 데이터베이스(Relational Database)라고한다.


CRUD

CRUD는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 의미하는 말로 데이터베이스를 다루기 위해 가장 기본이 되는 4가지의 명령을 묶어놓은 단어이다. SQL은 다음과 같은 명령어를 통해 CRUD를 구현할 수 있다.

이름조작SQL
Create생성INSERT
Read(또는 Retrieve)읽기(또는 인출)SELECT
Update갱신UPDATE
Delete(또는 Destroy)삭제(또는 파괴)DELETE

Select

테이블명에 해당하는 테이블의 칼럼명에 데이터를 불러는 구문이다.
모든 칼럼을 불러오고 싶을 때는 컬럼명 부분에 '*'를 넣으면 된다.

SELECT 컬럼명 FROM 테이블명

WHERE 구문을 추가해서 WHERE절 뒤에 오는 조건이 참인 데이터만 불러올 수 있다. [컬럼명=값]으로 적을 경우 컬럼 명의 값이 지정한 값인 데이터행의 데이터만 불러온다.
SELECT 컬럼명 FROM 테이블명 WHERE 조건
SELECT 컬럼명 FROM 테이블명 WHERE 조건 ORDER BY 컬럼명 ASC or DESC

ORDER BY 뒤에 오는 칼럼명을 기준으로 대하여 불러오는 데이터를 정렬한다.
ASC는 오름차순, DESC는 내림차순이다. (기본값은 오름차순)

SELECT 컬러명 FROM 테이블명 WHERE 조건 ORDER BY 컬럼명 ASC or DESC LIMIT 개수

LIMIT 구문을 추가하여 데이터행이 많을 때에는 LIMIT절의 개수만큼 데이터를 불러온다.

Insert

Update

Delete


사용법

1. DBHelper 클래스 만들기

SQLite 를 안드로이드에서 사용하기 위해 SQLiteOpenHelper을 상속받는 DBHelper 클래스를 생성한다. 이 클래스에서 데이터베이스를 생성하고 관리할 수 있다.
클래스 내부에는 onCreate(), onUpgrade()를 오버라이드 받아 구현해주어야 한다.

  • onCreate() : 테이블 생성시 호출되는 함수 (시스템에 DB가 없는 경우에만 호출된다.)
  • onUpgrade() : 테이블이 변경되었을 때 호출되는 함수
class DBHelper(context: Context?,
               name: String?,
               factory: SQLiteDatabase.CursorFactory?,
               version: Int):
    SQLiteOpenHelper(context, name, factory, version) {
    //테이블 생성시 호출되는 함수
    override fun onCreate(p0: SQLiteDatabase?) {
        TODO("Not yet implemented")
    }

    //테이블이 변경되었을 때 호출되는 함수
    override fun onUpgrade(p0: SQLiteDatabase?, p1: Int, p2: Int) {
        TODO("Not yet implemented")
    }
}
profile
강승구

0개의 댓글