SQLite | 데이터의 추가와 수정, 삭제 | 데이터 수정 (UPDATE)

UPDATE 문을 사용하여 테이블에 저장되어 있는 데이터를 새로운 값으로 수정하는 방법에 대해 설명한다.

테이블의 데이터 수정하기

테이블에 저장되어 있는 데이터를 새로운 값으로 수정하려면 UPDATE 문을 사용한다. 형식은 다음과 같다.

UPDATE 테이블명 SET 컬럼명 1 = 값1, 컬럼명2 = 값2, ... WHERE 조건식;

먼저 수정하려는 데이터를 WHERE 절 조건식을 사용하여 지정한다. 조건식에 일치하는 데이터가 여러 건이라면 여러 데이터가 한꺼번에 수정된다. WHERE를 생략하면 테이블의 모든 데이터가 된다.

다음은 어떤 값을 수정할 것인지를 컬럼명과 값으로 지정한다. 여러 컬럼의 값을 한 번에 수정할 수 있다.

그러면 실제로 해보도록 하자. 다음과 같이 테이블을 만든다. 그러고 테이블에 데이터를 추가한다.

create table employee (id integer, name text, unit text, flag text);
insert into employee values (1, 'devkuma', 'Sales', 'Yes');
insert into employee values (2, 'kimkc', 'Office', 'No');
insert into employee values (3, 'araikuma', 'Office', 'Yes');
insert into employee values (4, 'happykuma', 'Tech', 'Yes');
insert into employee values (5, 'mykuma', 'Sales', 'No');
sqlite> create table employee (id integer, name text, unit text, flag text);
sqlite> 
sqlite> insert into employee values (1, 'devkuma', 'Sales', 'Yes');
sqlite> insert into employee values (2, 'kimkc', 'Office', 'No');
sqlite> insert into employee values (3, 'araikuma', 'Office', 'Yes');
sqlite> insert into employee values (4, 'happykuma', 'Tech', 'Yes');
sqlite> insert into employee values (5, 'mykuma', 'Sales', 'No');
sqlite> 

먼저 id 컬럼의 값이 3인 데이터의 name 컬럼의 값을 새로운 값으로 수정하고, 데이터를 조회하여 값이 수정 되었는지 확인한다.

update employee set name = 'raccoon' where id = 3;
select * from employee where id = 3;
sqlite> update employee set name = 'raccoon' where id = 3;
sqlite> 
sqlite> .mode column
sqlite> .header on
sqlite> 
sqlite> select * from employee where id = 3;
id          name        unit        flag      
----------  ----------  ----------  ----------
3           raccoon     Office      Yes       
sqlite> 

다음은 여러 데이터를 한번에 수정해 보자. unit 컬럼의 값이 ‘Office’의 데이터에 대해 unit 컬럼의 값을 ‘Desk’로 변경하고, 데이터를 조회하고 테이블의 값이 수정 되었는지 확인한다.

update employee set unit = 'Desk' where unit = 'Office';
select * from employee;
sqlite> update employee set unit = 'Desk' where unit = 'Office';
sqlite> 
sqlite> select * from employee;
id          name        unit        flag      
----------  ----------  ----------  ----------
1           devkuma     Sales       Yes       
2           kimkc       Desk        No        
3           raccoon     Desk        Yes       
4           happykuma   Tech        Yes       
5           mykuma      Sales       No        
sqlite> 

마지막으로 모든 데이터를 한번에 수정해 보자. flag 컬럼의 값을 ‘unknown’으로 변경하고, 데이터를 조회하고 테이블의 값이 변경되었는지 여부를 확인한다.

update employee set flag = 'unknown';
select * from employee;
sqlite> update employee set flag = 'unknown';
sqlite> 
sqlite> select * from employee;
id          name        unit        flag      
----------  ----------  ----------  ----------
1           devkuma     Sales       unknown   
2           kimkc       Desk        unknown   
3           raccoon     Desk        unknown   
4           happykuma   Tech        unknown   
5           mykuma      Sales       unknown   
sqlite>