sqlite3 보여지는 방식을 MySQL과 비슷하게 설정
기본적인 특징은 아래와 같으며 사용 가능한지 어떤지 테스트 하면서 정리(테스트) 한것을 다음에 필요 할 수 있어 기록해 둡니다.
이 파일 디비는 동시 처리하는데 문제가 있어 동시 처리 사용하고 싶으면 MySQL 같은 것 사용해야 됩니다.
이게 MySQL과 명령이 비슷한것인가요? ANSI SQL 이라서 그런가요? 후자 인데요.
SQL 문법은 ANSI SQL 나머지 CLI 도구 명령들은 각 DBMS에 따라 다른 경우라고 보면 됨.
- 파일 하나가 곧 데이터베이스 (.db, .sqlite). 그렇기 때문에 DBMS서버 필요 없는 경우 유용함.
- 서버 없이 동작하는 경량 임베디드 RDBMS
- Android, iOS, 브라우저 등에 기본 내장
- SQL 표준 대부분 지원하지만 일부 제한 있음 (예: RIGHT JOIN 미지원 등)
- 동시 쓰기는 약하지만 읽기 성능은 우수
● 동시 읽기
SQLite는 구조상 쓰기는 동시에 1개만 가능 — 이건 WAL도 동일
PRAGMA journal_mode = WAL; -- 동시 읽기 허용
PRAGMA synchronous = NORMAL; -- 성능/안전 균형
설정 확인 방법: PRAGMA journal_mode;
● 디비 만들기
sqlite3 DB파일명.sqlite3
.tables : 테이블 목록 나열
.schema 테이블명 : 스키마 보기 MySQL의 DESC
.help 명령을 통해서 사용가능한것을 알수고 있고 요즘은 LLM에게 물어 보면 원하는 것을 알려준다.
● 설정 옵션 영구 적용
- .sqliterc 파일에 명시해 주면 된다.
- .sqliterc 는 도트 커맨드(.)만 가능. PRAGMA 문은 직접 작성 불가
> 트릭으로 sql 문을 만들고 ~/.bashrc 파일에 아래와 같은 것을 넣어 사용 가능.
alias sqlite3='sqlite3 -init ~/init.sql'
윈도우: %USERPROFILE%\.sqliterc
리눅스: ~/.sqliterc
.headers on
.mode box
.changes on
.timer on
.scanstats on
이정도만 설정해도 MySQL과 비슷한 결과를 볼 수 있다.
.headers : 쿼리 결과 상단에 컬럼명을 표시
.changes : INSERT / UPDATE / DELETE 후 영향받은 행 수 표시
.mode box : mysql 처럼 표형식으로 표여주기
.timer : 쿼리 실행 후 소요 시간 출력
.scanstats : 쿼리 실행 시 테이블 스캔 통계 출력, 인덱스 사용 여부, 스캔한 행 수 확인 가능
