SQLite의 임시 테이블
임시 테이블은 SQLite에서 매우 유용할 수 있습니다. 그러나 사용하기가 약간 까다로운 것으로 알려져 있습니다.
이 기사에서는 SQLite에서 임시 테이블을 만들고 사용하는 방법에 대해 자세히 설명합니다.
SQLite에서 임시 테이블 생성
SQLite에서 임시 테이블을 만드는 것은 생각보다 훨씬 간단합니다. 일반 테이블을 만드는 것과 매우 유사합니다. 하나를 만드는 코드는 다음과 같습니다.
먼저 임시 테이블은 이미 생성된 테이블에 대한 참조가 필요하기 때문에 일반 테이블을 생성해야 합니다.
CREATE TABLE users
(
users_id INTEGER,
name TEXT,
age INTEGER
);
그런 다음 위의 사용자 테이블을 복사하는 임시 테이블을 만들 수 있습니다.
CREATE TEMPORARY TABLE table1
AS
(
SELECT * FROM users
);
이렇게 하면 사용자 테이블과 동일한 임시 테이블이 생성됩니다. 최신 테이블의 복사본인지 확인할 수 있도록 임시 테이블을 생성하기 전에 몇 가지 값을 삽입하는 것이 가장 좋으며, 이는 INSERT INTO
절을 사용하여 수행할 수 있습니다.
더 복잡한 쿼리를 사용하여 항상 테이블을 만들 수 있습니다. AS
절 뒤의 SELECT
쿼리를 원하는 쿼리로 바꾸기만 하면 됩니다.
완료되면 임시 테이블이 생성되고 사용할 준비가 됩니다. TEMP는 TEMPORARY 절을 대체할 수도 있으며 둘 다 SQLite에서 허용됩니다.
SQLite의 임시 테이블에서 선택
이제 우리는 하나를 생성하는 것이 얼마나 간단한지 알았습니다. 여기서 어떻게 선택할 수 있는지 궁금할 것입니다. 일반적인 SELECT
절을 동일하게 사용하지만 일반 또는 영구 테이블을 선택하는 것과는 약간 다른 접근 방식을 선택하는 것이 가장 좋습니다.
임시 테이블에 대해 AS
절을 사용하여 별칭을 추가하는 것이 가장 좋습니다. 동일한 사용자 테이블과 위에 정의된 해당 임시 테이블을 사용하는 예는 다음과 같습니다.
SELECT 'table1'
AS from_table,* FROM table1
이것은 SELECT * FROM table1
을 사용한 경우에도 작동했을 것입니다. 그러나 임시 테이블의 내용과 영구 테이블을 구분할 수 있도록 이 방법을 사용하는 것이 가장 좋습니다.
이는 여러 항목이 있는 테이블을 처리할 때 특히 유용합니다. 별표 기호 (*)
를 원하는 쿼리로 바꿀 수 있다는 점에 유의해야 합니다.
With
절 사용
또 다른 덜 일반적인 선택 방법은 WITH
절입니다. 단, 하나의 select 문으로 쿼리를 생성하는 경우에만 사용할 수 있습니다.
복잡한 쿼리를 사용하려는 경우 이전에 설명한 방법을 고수하는 것이 가장 좋습니다. 아래 코드를 사용하여 이 방법을 시도해 볼 수 있습니다.
WITH table1(users_id, name,age) AS
(
--add any one select statement
)
SELECT users_id, name,age FROM table1;
집합 연산자
, 그룹화
또는 주문
과 같은 다른 절도 모든 임시 테이블에 사용할 수 있습니다. 쿼리가 올바르게 작성되는 한 올바르게 실행되므로 영구 테이블과 동일한 방식으로 사용됩니다.
SQLite에서 임시 테이블 삭제
SQLite에서 임시 테이블을 삭제하는 것은 데이터베이스에서 일반 또는 영구 테이블을 삭제하는 것과 유사합니다. 임시 테이블은 사용자가 특정 세션을 종료한 후 자동으로 삭제되는 경우가 많지만 원하는 경우 언제든지 수동으로 삭제할 수 있습니다.
데이터 손실을 방지하려면 데이터를 삭제하기 전에 영구 테이블에 저장하려는 데이터를 복제해야 합니다. 다음 쿼리는 임시 테이블을 삭제하는 방법을 보여줍니다.
DROP TABLE temp.table1
여기서 유일한 차이점은 테이블 이름 앞에 추가 절이 추가된다는 것입니다. 이는 삭제할 테이블이 임시 테이블임을 나타냅니다.
임시 테이블을 삭제하는 동안 종종 IF EXISTS
절을 추가하는 것이 가장 좋습니다. 사용자가 알지 못하는 사이에 테이블이 자동으로 삭제되었을 수 있기 때문입니다.
이를 추가하면 더 긴 코드에서 식별하기 어려울 수 있는 오류를 방지할 수 있습니다. 다음 코드를 사용하여 임시 테이블을 삭제합니다.
DROP TABLE If EXISTS temp.table1;
SQLite의 임시 테이블에서 레코드 삽입, 업데이트 및 삭제
임시 테이블 내에서 레코드를 삽입, 업데이트 및 삭제하는 것은 영구 테이블과 거의 동일합니다. 사용자가 세션을 종료하거나 세션이 만료되면 추가 및 편집된 모든 데이터가 손실된다는 점에 유의해야 합니다.
다음은 이전에 만든 동일한 임시 테이블을 사용하여 위의 세 가지 모두에 대해 참조할 수 있는 몇 가지 예입니다.
임시 테이블에 레코드 삽입
INSERT INTO users(users_id, name,age)
VALUES(1, 'abc', 30);
이렇게 하면 값이 임시 테이블에 성공적으로 삽입됩니다. 그러나 고유 제약 조건이 있는 경우 실행 중 오류를 방지하기 위해 IGNORE
또는 REPLACE
절을 추가할 수 있습니다.
임시 테이블의 레코드 업데이트
UPDATE users
SET name='xyz' WHERE users_id=3;
이렇게 하면 임시 테이블에서 ID가 3
인 사용자 이름이 변경됩니다. where 절 뒤의 내용을 필요한 조건으로 바꿀 수 있습니다.
임시 테이블에서 레코드 삭제
DELETE * FROM users
이 쿼리는 임시 테이블의 모든 내용을 삭제합니다. 특정 행만 삭제하려면 아래와 같이 WHERE
절을 포함해야 합니다.
DELETE * FROM users
WHERE users_id=1
이것이 임시 테이블 작업을 시작하기 위해 알아야 할 모든 것입니다. 이 기사가 시작하고 올바르게 사용하는 방법을 이해하는 데 도움이 되었기를 바랍니다.
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub