본문 바로가기

SQLite

(11)
[SQLite] 데이터 존재 유무 확인 (SELECT EXISTS 구문) 테이블에 특정 조건의 데이터가 있는지 확인이 필요할 때가 있다. SELECT EXISTS 구문을 사용하면 데이터가 존재하면 1, 존재하지 않으면 0을 반환한다. 아래 쿼리의 결과를 보면 col1 = 1에 해당하는 데이터는 존재하므로 1을 반환하고, col1 = 999에 해당하는 데이터는 존재하지 않으므로 0을 반환하는 것을 확인할 수 있다.
[SQLite] INSERT OR REPLACE 구문 기본 키(Primary key) 또는 Unique 제약조건이 있는 컬럼에 중복된 값을 가지는 행을 추가하면 오류가 발생한다. SQLite에서는 중복된 값을 가지는 행을 추가할 때 값이 있으면 update, 없으면 insert 하는 방법이 있다. INSERT OR REPLACE 구문을 사용하면 된다. 기본 키가 id인 테이블이 있고, id 컬럼에 중복된 값을 입력하면 오류가 발생했다. INSERT OR REPLACE 구문을 사용하면 중복된 값을 가지는 행이 있어도 오류가 발생하지 않고, 새로운 값으로 update 된 것을 확인할 수 있다.
[SQLite] 기본키의 자동증가 (AUTOINCREMENT) SQLite에서는 테이블 스키마를 설계할 때 기본키가 자동으로 증가되게 정의할 수 있다. 테이블을 생성할 때 기본키에 AUTOINCREMENT를 설정하면 INSERT 문에서 명시적으로 값을 입력할 수도 있고, 기본키를 생략할 수도 있다. 기본키가 생략된 경우에는 테이블에 입력된 기본키 중 가장 큰 값에 1이 증가된 값으로 입력된다. 또한 AUTOINCREMENT가 기본키에 설정됐더라도 기본키 조건만 만족하면 순차적으로 입력되지 않아도 된다. 1. 기본키가 아닌 다른 컬럼에 AUTOINCREMENT를 설정한 경우 2. 기본키에 AUTOINCREMENT를 설정한 경우 3. INSERT 문에서 명시적으로 값 입력한 경우 1 4. INSERT 문에서 명시적으로 값 입력한 경우 2 5. AUTOINCREMENT를..
[SQLite] 숨겨진 기본키, ROWID SQLite에서는 명시적으로 기본키를 설정하지 않거나 기본키를 설정하더라도 INTEGER 자료형이 아닌 경우에는 내부적으로 숨겨진 기본키인 ROWID를 추가한다. ROWID는 숨겨질 컬럼이라서 SELECT 문으로 질의할 때 '*'를 사용해서는 가지고 올 수 없고, 명시적으로 'ROWID'라고 지정해야 해당 컬럼을 조회할 수 있다. 1. 기본키를 INTEGER 자료형으로 하지 않고, ROWID를 명시적으로 지정한 경우 2. 기본키를 INTEGER 자료형으로 하지 않고, '*'을 사용한 경우 3. 기본키를 INTEGER 자료형으로 하고 ROWID를 명시적으로 지정한 경우 4. ROWID는 '_ROWID_', 'OID'라는 별칭을 가지고 있다.
[SQLite] LIMIT 절을 이용한 결과집합 수 제한하기 결과집합을 가져올 때 상위 몇 건과 같이 레코드 개수를 제한해서 가져오려면 어떻게 해야할까? SQL Server의 경우에는 TOP 절을 사용하면 되지만, SQLite는 Limit 절을 사용하면 된다. 아래의 결과는 col1 컬럼을 기준으로 정렬한 값의 결과집합을 가져오는 쿼리이다. 이 결과집합에서 상위 5건만 가지고 오고 싶을 때 LIMIT 5 를 추가로 입력해주면 된다. 그 외 상위 몇번째부터 몇건의 결과집합을 가지고 오는 방법도 있다. LIMIT 3, 4 라고 입력하면 상위 3번째 레코드부터 4건의 레코드를 가지고 오는 것을 뜻한다.
[SQLite] SELECT 문의 출력 결과를 좀 더 쉽게 보기 SQLite 셸 모드에서 SELECT 문을 실행하면 컬럼명도 나타나지 않고 보기가 쉽지 않다. SELECT 문의 출력 결과를 좀 더 보기 쉽게하기 위해 아래의 옵션을 설정하면 된다. .header ON .mode column .nullvalue NULL 설정 후 SELECT 문을 실행해보면 아래와 같이 좀 더 보기 쉽게 확인할 수 있다.
[SQLite] 요일 구하기 SQLite에서 날짜를 알면 요일을 알 수 있는 방법이 있을까? strftime 함수를 사용하면 확인할 수 있다. select strftime('%w', '날짜') 결과 값으로 요일을 의미하는 0~6의 숫자를 반환한다. 0:일요일, 1:월요일, 2:화요일, 3:수요일, 4:목요일, 5:금요일, 6:토요일 strftime 함수는 다른 기능이 많은데, 아래의 링크를 참고하자. 참고 : http://www.sqlite.org/lang_datefunc.html
[SQLite] SQLite 테이블 생성/삭제, 데이터 입력/조회