SQLite 임시 저장소

SQLiteBeginner
지금 연습하기

소개

이 랩에서는 SQLite 임시 저장소를 탐구하고, 임시 테이블 생성 및 활용에 중점을 둡니다. 임시 테이블은 데이터베이스 연결 내에서 중간 결과 또는 짧은 기간 동안만 필요한 데이터를 저장하기 위한 메커니즘을 제공합니다.

이 랩은 CREATE TEMP TABLE 문을 사용하여 temp_employees라는 임시 테이블을 생성하는 과정을 안내합니다. 임시 테이블의 범위, 수명 및 명명 규칙에 대해 배우고, 일반 테이블과의 차이점을 이해하게 됩니다. 다음 단계에서는 임시 테이블에 데이터를 채우고, 데이터를 쿼리하며, 데이터베이스 연결을 닫을 때 임시 테이블이 자동으로 정리되는 것을 확인하는 과정을 포함합니다.

임시 테이블 생성

이 단계에서는 SQLite 에서 임시 테이블을 생성하는 방법을 배웁니다. 임시 테이블은 복잡한 쿼리 중에 중간 결과를 저장하거나 짧은 기간 동안만 필요한 데이터를 보관하는 데 유용합니다. 데이터베이스 연결이 닫히면 자동으로 삭제됩니다.

먼저, LabEx VM 에서 터미널을 엽니다. 기본 경로는 /home/labex/project입니다.

이제 employees.db라는 SQLite 데이터베이스를 생성해 보겠습니다. 다음 명령을 실행하여 데이터베이스 파일을 생성하고 SQLite 명령줄 도구를 엽니다.

sqlite3 employees.db

SQLite 셸 내부에 있다는 것을 나타내는 프롬프트가 표시됩니다.

SQLite version 3.x.x
Enter ".help" for usage hints.
sqlite>

임시 테이블을 생성하려면 CREATE TEMP TABLE 문을 사용합니다. 구문은 일반 테이블을 생성하는 것과 유사합니다.

CREATE TEMP TABLE table_name (
    column1 datatype,
    column2 datatype,
    ...
);

직원 정보를 저장하기 위해 temp_employees라는 임시 테이블을 생성해 보겠습니다. sqlite> 프롬프트에서 다음 SQL 명령을 입력하고 Enter 키를 누릅니다.

CREATE TEMP TABLE temp_employees (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT,
    department TEXT
);

이 명령은 temp_employees라는 임시 테이블을 생성하며, 세 개의 열이 있습니다: id (자동으로 증가하는 정수 기본 키), name (텍스트), department (텍스트).

CREATE TEMP TABLE temp_employees: 이 SQL 문은 temp_employees라는 임시 테이블을 생성합니다. TEMP 키워드는 이 테이블이 임시 테이블이며 데이터베이스 연결이 닫히면 자동으로 삭제됨을 지정합니다.

id INTEGER PRIMARY KEY AUTOINCREMENT: id라는 열을 정수로 정의하고, 테이블의 기본 키로 설정하며, 각 새 행이 삽입될 때 자동으로 증가하도록 구성합니다.

name TEXT: name이라는 열을 직원 이름을 저장하기 위한 텍스트 필드로 정의합니다.

department TEXT: department라는 열을 각 직원이 속한 부서를 저장하기 위한 텍스트 필드로 정의합니다.

임시 테이블에 데이터 삽입

이제 temp_employees 테이블을 생성했으므로, 여기에 데이터를 추가해 보겠습니다. 여러 직원 레코드를 테이블에 삽입할 것입니다.

일반 테이블과 마찬가지로 INSERT INTO 문을 사용하여 임시 테이블에 데이터를 삽입할 수 있습니다.

sqlite> 프롬프트에서 다음 명령을 하나씩 실행하여 다음 직원 레코드를 temp_employees 테이블에 삽입합니다.

INSERT INTO temp_employees (name, department) VALUES ('Alice', 'Sales');
INSERT INTO temp_employees (name, department) VALUES ('Bob', 'Marketing');
INSERT INTO temp_employees (name, department) VALUES ('Charlie', 'Engineering');
INSERT INTO temp_employees (name, department) VALUES ('David', 'Sales');
INSERT INTO temp_employees (name, department) VALUES ('Eve', 'Marketing');
INSERT INTO temp_employees (name, department) VALUES ('Frank', 'Engineering');
INSERT INTO temp_employees (name, department) VALUES ('Grace', 'HR');
INSERT INTO temp_employees (name, department) VALUES ('Henry', 'Sales');

이 명령은 temp_employees 테이블에 8 개의 행을 추가합니다.

INSERT INTO temp_employees (name, department): temp_employees 테이블의 namedepartment 열에 데이터를 삽입함을 지정합니다.

VALUES ('Alice', 'Sales'): 각 레코드에 삽입할 값을 제공합니다.

데이터가 올바르게 추가되었는지 확인하려면 이 명령을 실행하여 테이블의 모든 레코드를 확인합니다.

SELECT * FROM temp_employees;

예상 출력:

1|Alice|Sales
2|Bob|Marketing
3|Charlie|Engineering
4|David|Sales
5|Eve|Marketing
6|Frank|Engineering
7|Grace|HR
8|Henry|Sales

이 출력은 각 레코드의 id, name, 및 department를 보여줍니다. SELECT * 명령은 지정된 테이블에서 모든 열을 검색합니다.

임시 테이블에서 데이터 쿼리

이 단계에서는 다양한 절 (clause) 을 사용하여 SELECT 문으로 임시 테이블에서 데이터를 검색하는 방법을 배웁니다. 데이터 쿼리는 데이터베이스 작업의 핵심 기술이며, 저장된 정보를 보고 분석할 수 있게 해줍니다.

sqlite> 프롬프트에서 먼저 temp_employees 테이블의 모든 데이터를 검색해 보겠습니다. 다음 명령을 실행합니다.

SELECT * FROM temp_employees;

예상 출력:

1|Alice|Sales
2|Bob|Marketing
3|Charlie|Engineering
4|David|Sales
5|Eve|Marketing
6|Frank|Engineering
7|Grace|HR
8|Henry|Sales

SELECT **는 "모든 열"을 의미하므로, 이 명령은 temp_employees 테이블의 모든 열과 행을 표시합니다.

다음으로, WHERE 절을 사용하여 조건을 통해 데이터를 필터링합니다. 'Sales' 부서의 직원 레코드만 보려면 다음을 실행합니다.

SELECT * FROM temp_employees WHERE department = 'Sales';

예상 출력:

1|Alice|Sales
4|David|Sales
8|Henry|Sales

WHERE 절은 결과를 조건과 일치하는 행으로 좁힙니다. 이 경우, department가 'Sales'인 경우입니다.

  • SELECT * FROM temp_employeestemp_employees 테이블에서 모든 열을 선택합니다.
  • WHERE department = 'Sales'department 열이 'Sales'와 같은 행만 포함하도록 결과를 필터링합니다.

이제 ORDER BY 절을 사용하여 이름을 기준으로 데이터를 정렬합니다.

SELECT * FROM temp_employees ORDER BY name;

예상 출력:

1|Alice|Sales
2|Bob|Marketing
3|Charlie|Engineering
4|David|Sales
5|Eve|Marketing
6|Frank|Engineering
7|Grace|HR
8|Henry|Sales

ORDER BY 절은 지정된 열, 이 경우 name 열을 기준으로 결과를 정렬합니다.

마지막으로, LIMIT 절을 사용하여 결과 수를 제한합니다. 처음 3 개의 레코드만 보려면 다음을 실행합니다.

SELECT * FROM temp_employees LIMIT 3;

예상 출력:

1|Alice|Sales
2|Bob|Marketing
3|Charlie|Engineering

LIMIT 절은 쿼리에서 반환되는 행 수를 제한합니다.

임시 테이블 자동 정리 확인

이 단계에서는 데이터베이스 연결이 닫힐 때 임시 테이블 temp_employees가 자동으로 삭제되는지 확인합니다. 이는 임시 테이블의 핵심 특징입니다.

먼저, 다음을 입력하여 SQLite 셸을 종료합니다.

.exit

이렇게 하면 employees.db 데이터베이스에 대한 연결이 닫힙니다.

이제 다음을 실행하여 SQLite 셸을 다시 엽니다.

sqlite3 employees.db

temp_employees 테이블을 쿼리해 봅니다.

SELECT * FROM temp_employees;

테이블이 존재하지 않는다는 오류 메시지가 표시되어야 합니다.

Error: no such table: temp_employees

이는 이전 데이터베이스 연결이 닫힐 때 임시 테이블이 자동으로 삭제되었음을 확인합니다.

SELECT * FROM temp_employees: 이 SQL 문은 temp_employees 테이블에서 모든 열과 행을 선택하려고 시도합니다.

Error: no such table: temp_employees: 이 오류 메시지는 temp_employees 테이블이 데이터베이스에 존재하지 않음을 나타내며, 데이터베이스 연결이 닫힐 때 자동으로 삭제되었음을 확인합니다.

요약

이 랩에서는 SQLite 에서 임시 테이블을 생성하고 사용하는 방법을 배웠습니다. temp_employees라는 임시 테이블을 생성하고, 데이터를 삽입하고, 다양한 SELECT 문을 사용하여 데이터를 쿼리했으며, 데이터베이스 연결이 닫힐 때 임시 테이블이 자동으로 삭제되는 것을 확인했습니다. 이러한 실습을 통해 임시 테이블에 대한 포괄적인 소개를 제공하여, SQLite 를 사용하여 임시 데이터를 효과적으로 처리하는 데 필요한 기본적인 지식을 갖추게 되었습니다.