Android 애플 리케이션에서 사용하는 SQLite 테이블 작성시주의 사항
Android에서 SQLite를 사용하기 때문에 테이블을 만들고 싶지만, 테이블 작성시 규칙과주의 사항은있는거야?
Android에서 SQLite는 관계형 데이터베이스를 사용할 수 있습니다.
데이터를 저장하려면 먼저 테이블을 작성해야합니다.
테이블 생성시 결정 것, 참고로, SQLite의 사양으로 특히 않습니다.
그러나, Android에서 제공되는 SQLite 관계 클래스를 사용할 때, 어느 것을 전제로 구현되는 경우가있어, 그 클래스를 이용하기 위해서는 그 전제가되고있는 규칙에 따라 두지 않으면 안됩니다.
다음은 규칙입니다.
ID 열을 정의하는
"열"과 "열" "필드"라고도합니다.
"ID"는 각 레코드의 고유 번호가되는 숫자를 말합니다.
하나의 테이블에서 중복 ID는 없다,라고하면 이해하기 쉬울까요?
또한이 ID 열의 이름은 다음과 같이합니다.
_id
Android의 SQLite 관계 클래스는이 ID를 나타내는 "_id"컬럼이있다는 전제에서 구현되어있는 클래스가 있습니다.
예를 들어, CursorAdapter 등입니다.
그 때문에, Android 애플 리케이션에서 SQLite 사용시 테이블을 만드는 SQL (쿼리라고도합니다.)는 다음과 같은 형태로 둡니다.
create table 테이블 이름 (_id integer primary key autoincrement, · · ·)
_id 열은 1, 2, · · ·라고 저장되며 형식은 integer 형식입니다.
또한이 ID는 고유 번호로 중복 금지이므로, primary key를 지정합니다.
"autoincrement"은 말 그대로 자동으로 증가된다는 것을 보여줍니다.
레코드 Insert 때로는 _id 열의 값을 지정없이 Insert해도 그 시점에서 테이블의 레코드를보고 자동으로 번호 지정 해줍니다.
구체적인 예로서 북마크 저장하는 테이블을 준비한다고하면, 다음과 같은 느낌입니다.
create table bookmarklist
(_id integer primary kye autoincrement, url text not null)
not null은 NULL 값을 넣을 수 없습니다! 을 의미합니다.
NULL을 넣으려고하면 오류가 발생합니다.
또한 레코드 삽입은 다음과 같습니다.
insert into bookmarklist (url)
values ( 'http://android.roof-balcony.com')
덧붙여서,
insert 문장에서 삽입 열 이름 (테이블 이름 직후 values의 앞부분)를 생략 할 수 있습니다.
그러나 나중에 볼 때 가독성이 떨어지기 때문에 생략하지 않고 지정하십시오.
위의 예제라고, "url"라는 컬럼이 URL가 포함되면 한번에 알 수 있습니다만, 생략하면 테이블의 정의를 확인하지 않으면 알 수 없기 때문에.
또한 나중되고, 테이블에 열을 추가하거나 제거할 때 등에서도 삽입할 열의 이름을 생략하면 의도한과는 다른 컬럼에 데이터가 들어 버리는 일이되기도 합니다.
이것은, Android뿐만 아니라 SQL의 일반적인 암시적 규칙 같은 물건입니다.











