SQLite 튜토리얼: 데이터베이스 관리의 관문

안녕하세요, 미래의 데이터 마법사 여러분! SQLite의 세상으로 흥미로운 여정을 함께할 가이드로서 기쁜 마음입니다. (floppy disk가 실제로 부드럽게 뛰는 시절을 기억하는 만큼 많은 해 동안 컴퓨터 과학을 가르쳐왔습니다.) SQLite는 가장 사용자 친화적인 데이터베이스 시스템 중 하나입니다. 그럼, 안전벨트를 고정하고 뛰어들어 보겠습니다!

SQLite - Home

SQLite는 무엇인가요?

SQLite는 언제나 필요할 때 도와주는 신뢰할 수 있는 친구와 같습니다. 작고, 서버가 필요 없으며, 자체完結된 데이터베이스 엔진으로 최소한의 설정과 유지보수가 필요합니다. 가방에 넣고 다니는 미니 파일 캐비닛을 상상해 보세요 - 그게 바로 SQLite입니다!

왜 SQLite인가요?

  1. 가벼움: 거의 떠오를 정도로 가볍습니다!
  2. 설정 없음: 데이터베이스 관리자가 필요하지 않습니다.
  3. 이동성: 전체 데이터베이스가 단일 파일에 있습니다.
  4. 신뢰성: 수많은 애플리케이션에서 검증되었습니다.

SQLite 시작하기

설치

SQLite 설치는 즉食면을 만드는 것보다도 쉽습니다. 다음과 같이 하세요:

  1. SQLite 다운로드 페이지를 방문하세요
  2. 운영 체제에 맞는 패키지를 선택하세요
  3. 다운로드하고 설치 프로그램을 실행하세요

이제 시작할 준비가 되었습니다!

첫 번째 데이터베이스 만들기

우리의 좋아하는 책에 대한 정보를 저장할 간단한 데이터베이스를 만들어 보겠습니다. my_library.db라고 부르겠습니다.

sqlite3 my_library.db

이 명령은 SQLite 프롬프트를 엽니다. 파일이 존재하지 않으면 SQLite가 자동으로 생성해줍니다. 마법 같지만, 더 나은 기술입니다!

기본 SQLite 명령어

이제 데이터베이스가 준비되었으니, 몇 가지 기본 명령어를 배워보겠습니다. 이를 SQLite의 "마법의 말"이라고 생각해 보세요.

테이블 생성

책 정보를 저장할 테이블을 생성해 보겠습니다:

CREATE TABLE books (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
author TEXT NOT NULL,
published_year INTEGER
);

이 명령은 books 테이블을 생성합니다. 이를 자세히 설명해 보겠습니다:

  • id: 각 책에 대한 고유 식별자
  • title: 책 제목 (빈칸일 수 없음)
  • author: 저자 이름 (빈칸일 수 없음)
  • published_year: 책이 출판된 연도

데이터 추가

이제 테이블에 책을 추가해 보겠습니다:

INSERT INTO books (title, author, published_year)
VALUES ('To Kill a Mockingbird', 'Harper Lee', 1960);

INSERT INTO books (title, author, published_year)
VALUES ('1984', 'George Orwell', 1949);

이 명령어는 두 권의 고전 책을 데이터베이스에 추가합니다. id를 지정하지 않았나요? SQLite가 자동으로 지정해줍니다. 개인 비서가 책을 번호 매기는 것과 같습니다!

데이터 조회

이제 도서관에 있는 책을 확인해 보겠습니다:

SELECT * FROM books;

이 명령은 books 테이블의 모든 열 (*)를 검색합니다. SQLite에게 "가지고 있는 모든 것을 보여달라!"고 묻는 것과 같습니다!

데이터 업데이트

오류를 발견했습니다. "1984"의 출판 연도를 업데이트해 보겠습니다:

UPDATE books
SET published_year = 1948
WHERE title = '1984';

이 명령은 "1984" 책의 published_year를 1948로 변경합니다. 지우개로 잘못된 정보를 지우고 올바른 정보를 다시 쓰는 것과 같습니다.

데이터 삭제

데이터베이스에서 책을 제거해 보겠습니다:

DELETE FROM books
WHERE title = 'To Kill a Mockingbird';

이 명령은 제목이 "To Kill a Mockingbird"인 행을 삭제합니다. 강력한 권한을 가지고 있으므로, 삭제하기 전에 항상 확인하세요!

고급 SQLite 기능

기본적인 내용을 다루고 나서, SQLite의 몇 가지 고급 기능을 탐구해 보겠습니다.

트랜잭션 사용

트랜잭션은 모든 명령이 함께 성공하거나 실패하는 마법의 주문과 같습니다. 다음과 같이 사용합니다:

BEGIN TRANSACTION;
INSERT INTO books (title, author, published_year) VALUES ('The Hobbit', 'J.R.R. Tolkien', 1937);
INSERT INTO books (title, author, published_year) VALUES ('The Lord of the Rings', 'J.R.R. Tolkien', 1954);
COMMIT;

이 트랜잭션에서 어떤 삽입이 실패하면, 모든 삽입이 적용되지 않습니다. 모두 성공하거나 모두 실패합니다!

색인 생성

색인은 책의 목차와 같아서 SQLite가 정보를 빠르게 찾을 수 있도록 도와줍니다:

CREATE INDEX idx_author ON books(author);

이 명령은 author 열에 색인을 생성하여 저자에 의한 검색을 더 빠르게 합니다.

SQLite 함수

SQLite는 생활을 더 쉽게 만들어주는 다양한 내장 함수를 제공합니다. 몇 가지 흔히 사용되는 함수를 표로 정리해 보겠습니다:

함수 설명 예제
COUNT() 행의 수를 계산합니다 SELECT COUNT(*) FROM books;
AVG() 숫자 열의 평균을 계산합니다 SELECT AVG(published_year) FROM books;
SUM() 숫자 열의 합을 계산합니다 SELECT SUM(published_year) FROM books;
MAX() 열의 최대 값을 찾습니다 SELECT MAX(published_year) FROM books;
MIN() 열의 최소 값을 찾습니다 SELECT MIN(published_year) FROM books;
UPPER() 텍스트를 대문자로 변환합니다 SELECT UPPER(title) FROM books;
LOWER() 텍스트를 소문자로 변환합니다 SELECT LOWER(author) FROM books;

결론

축하합니다! SQLite의 fascineting 세상으로 첫 걸음을 냈습니다. 새로운 기술을 배우는 것은 연습이 필요합니다. 두려워 말고 실험하고 실수를 하세요 - 그게 가장 잘 배우는 방법입니다.

이 튜토리얼을 마치면서, 위대한 컴퓨터 과학자 그레이스 hopper의 말을 떠올립니다: "어떤 언어에서 가장 위험한 문구는 '우리는 항상 이렇게 했어요'입니다." 그러므로 새로운 것을 시도하고, 쿼리가 항상 원하는 결과를 반환하길 바랍니다!

행복한 코딩을 하시고, 다음 번에 만날 때까지 데이터베이스를 정규화하고 조인을 최적화하시길 바랍니다!

Credits: Image by storyset