SQLite는 새 레코드를 삽입하거나 이미 존재하는 경우 업데이트합니다.

Bilal Shahid 2023년6월21일
  1. SQLite INSERT 명령
  2. SQLite UPDATE 명령
  3. SQLite INSERT 새 레코드 또는 UPDATE 레코드가 이미 존재하는 경우
SQLite는 새 레코드를 삽입하거나 이미 존재하는 경우 업데이트합니다.

이 문서에서는 INSERT, UPDATEINSERT OR UPDATE 명령을 사용하는 방법에 대해 설명합니다. 또한 새 레코드를 INSERT하거나 레코드가 이미 있는 경우 UPDATE하는 방법에 대해서도 설명합니다.

SQLite INSERT 명령

SQLite에서 테이블에 데이터를 삽입하는 것은 매우 간단합니다. INSERT 문을 사용하여 작업을 완료할 수 있습니다.

SQLite에서 다양한 형태의 INSERT 문을 사용하면 여러 행, 단일 행 및 기본값을 테이블에 삽입할 수 있습니다. SELECT문을 사용하여 테이블에 데이터 행을 삽입할 수 있습니다.

단일 행을 데이터베이스 테이블에 삽입하려면 다음 형식의 INSERT 문을 사용할 수 있습니다.

INSERT  INTO  table (c1,c2, c3..) VALUES( val1, val2,val3..);

추가하기 전에 INSERT INTO 문 뒤에 데이터를 삽입하려는 테이블의 이름을 지정해야 합니다.

테이블 열의 경우 쉼표로 구분된 목록을 추가해야 합니다. 목록은 선택 사항이지만 적어 두는 것이 좋습니다.

동일한 열 순서로 VALUE 키워드 뒤에 별도의 쉼표 값 목록을 추가합니다. 열 목록을 생략하도록 선택한 경우 값 목록의 모든 열에 대한 값을 지정해야 합니다.

목록의 열과 값의 수는 동일해야 합니다.

유사한 형식을 사용하여 테이블에 여러 행을 삽입할 수 있습니다. INSERT문을 사용하여 다음과 같은 방식으로 이를 수행할 수 있습니다.

INSERT  INTO table1 (c1,c2,c3..) VALUES (val1,val2,val3...), (val1,val2,val3...), ... (val1,val2,val3...), ;

VALUES절 다음에 작성된 모든 값 목록은 테이블에 행으로 삽입됩니다.

이전 예에서 테이블에 세 개의 행을 추가합니다. 이 작업이 완료되면 SQLite는 "Row Affected: 3" 메시지를 발행합니다.

이는 세 행의 데이터가 수정되었음을 의미합니다. select문을 사용하여 원하는 삽입이 데이터베이스에 있는지 확인하기 위해 테이블의 내용을 볼 수 있습니다.

테이블에 기본값을 지정하고 입력할 수도 있습니다. 이렇게 하면 이전에 지정된 기본값을 사용하여 테이블에 새 행이 삽입됩니다.

사용 가능한 기본값이 없고 NOT NULL 제약 조건이 지정되지 않은 경우 NULL이 할당됩니다.

SQLite UPDATE 명령

SQLite에서 데이터를 수정해야 하는 경우 UPDATE 쿼리를 사용하십시오. 선택한 행을 업데이트하려면 UPDATE 쿼리와 함께 WHERE 쿼리를 사용할 수 있습니다. 그렇지 않으면 모든 테이블 행이 업데이트됩니다.

SQLite에서 데이터를 업데이트하는 구문은 다음과 같습니다.

UPDATE table_name
SET c1 = val1, c2 = val2...., cName = valName
WHERE [your condition];

여러 조건을 충족해야 하는 경우 AND 또는 OR 연산자를 결합할 수 있습니다. 모든 테이블 행을 업데이트하기 위해 WHERE 절을 사용할 필요가 없습니다.

SQLite INSERT 새 레코드 또는 UPDATE 레코드가 이미 존재하는 경우

INSERT OR UPDATE 명령은 본질적으로 INSERT 명령의 확장입니다. 주요 차이점은 삽입 중인 행이 존재하지 않는 경우 INSERT OR UPDATEINSERT 작업을 수행한다는 것입니다.

그러나 삽입된 행이 이미 존재하는 경우 INSERT OR UPDATEUPDATE 작업을 수행합니다. 이 작업은 특정 열 값으로 행을 업데이트합니다.

이 업데이트는 지정된 데이터 값이 기존 데이터와 동일한 경우 발생합니다. INSERT OR UPDATEINSERT 문에서 사용하는 것과 동일한 구문, 기능 및 제한 사항을 사용합니다.

고유한 값이 있는 레코드를 추가해야 하는 경우 값(예: name)이 이미 있으면 필드가 수정됩니다. 이를 위해 다음 코드를 사용할 수 있습니다.

insert or replace into Employee (ID, Name, Type, Age, Salary) values
((select ID from Employee where Name = "SearchName"), "SearchName", ...);

테이블 행이 이미 존재하는 경우 insert 목록에 존재하지 않는 모든 필드에 NULL이 할당됩니다. 따라서 여기서는 ID 열에 대한 하위 선택을 사용합니다.

대체 사례에서 이 명령문은 값을 NULL로 설정한 다음 새 ID가 할당됩니다.

대체 사례의 행에 특정 필드 값을 그대로 두고 삽입 사례에서 필드 값을 NULL로 설정하려는 경우 유사한 접근 방식을 사용할 수 있습니다.

이전 예제에서 Salary 열을 그대로 두려고 한다고 가정해 보겠습니다. 이는 다음과 같은 방식으로 달성할 수 있습니다.

insert or replace into Employee (ID, Name, Type, Age, Salary) values (
   (select ID from Employee where Name = "SearchName"),
   "SearchName",
    5,
    6,
    (select Salary from Book where Name = "SearchName"));

이에 대한 또 다른 접근 방식은 INSERT OR IGNORE 다음에 UPDATE를 사용하는 것입니다.

예: (여기서 name은 기본 키입니다.)

INSERT OR IGNORE INTO Employee (name, age) VALUES ('Janet,' 23)
UPDATE Employee SET age = 23 WHERE name='Janet'

여기서 첫 번째 명령은 레코드를 삽입합니다. 레코드가 존재하면 기존 기본 키와의 충돌로 인한 오류를 무시합니다.

여기서 두 번째 명령은 이 경우 현재 존재하는 레코드를 업데이트합니다.

SQLite는 사용자가 필요에 따라 데이터를 삽입, 수정 및 추출할 수 있는 여러 명령을 사용합니다. INSERTUPDATE 명령은 작업을 완료하는 데 중요합니다.

이러한 명령을 사용하는 것과 관련된 접근 방식뿐만 아니라 다양한 변경 사항이 있습니다. 이 문서에서는 사용 방법을 알 수 있도록 이러한 명령의 구문과 기능에 대해 설명했습니다.

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

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

관련 문장 - SQLite Insert