MySQL 강좌 : 제 6강 - 데이터 수정
데이터 수정(Data Update)
데이터베이스(Database)
를 활용하다 보면 테이블(Table)
의 데이터(Data)를 변경하거나 최신화 하는 작업이 필요합니다.
다음과 같은 테이블에서 특정 값을 변경하려고 합니다.
location | date | variant | num_sequences | perc_sequences | num_sequences_total | |
---|---|---|---|---|---|---|
1 | Angola | 2020-12-21 | B.1.160 | 0 | 0 | 93 |
2 | Angola | 2020-12-21 | B.1.620 | 0 | 0 | 93 |
3 | Angola | 2020-12-21 | B.1.258 | 0 | 0 | 93 |
4 | Angola | 2020-12-21 | B.1.221 | 93 |
만약, location
필드의 Angola
를 앙골라
라는 값으로 변경한다면 다음과 같은 형태로 표현됩니다.
location | date | variant | num_sequences | perc_sequences | num_sequences_total | |
---|---|---|---|---|---|---|
1 | 앙골라 | 2020-12-21 | B.1.160 | 0 | 0 | 93 |
2 | 앙골라 | 2020-12-21 | B.1.620 | 0 | 0 | 93 |
3 | 앙골라 | 2020-12-21 | B.1.258 | 0 | 0 | 93 |
4 | 앙골라 | 2020-12-21 | B.1.221 | 93 |
안전 모드 해제
데이터를 변경하기 위해서는 안전 모드(Safe Mode)
를 해제해야 합니다.
안전 모드는 데이터를 보호하기 위해 설정되어 있습니다.
하지만, 데이터를 변경할 예정이므로 안전 모드를 비활성화 합니다.
MySQL Workbench
MySQL Workbench의 상단 메뉴창에서 Workbench Preferences
창을 엽니다.
Workbench Preferences
는 MySQL Workbench
→ Edit
→ Preferences...
를 클릭합니다.
Workbench Preferences
메뉴창이 열렸다면, SQL Editor
→ Other
에서 Safe Updates
의 체크 박스를 해제하여 안전 모드를 비활성화 합니다.
안전 모드가 비활성화 된다면 데이터를 수정할 수 있습니다.
MySQL Console
콘솔 창에서는 SET SQL_SAFE_UPDATES = 0;
명령어를 통해 안전 모드를 비활성화 할 수 있습니다.
MySQL Workbench
를 사용하지 않는 환경에서는 위와 같이 안전 모드를 비활성화 할 수 있습니다.
열 수정
단일 열 수정
테이블에 행을 수정하는 방법은 UPDATE `{데이터베이스의 이름}`.`{테이블의 이름}` SET {열의 이름} = {수정하려는 값} WHERE {조건};
의 구조로 명령어를 실행합니다.
위와 같은 조건으로 명령어를 실행한다면, location
열에서 Angola
라는 값을 가지는 값은 location
열의 값을 앙골라
로 변경합니다.
이 경우, 해당 조건에 만족하는 모든 행의 값이 변경됩니다.
다중 열 수정
SET
구문 뒤에 쉼표(,)
를 통해 한 번에 여러 열의 값을 수정할 수 있습니다.
또한 조건을 더 복잡하게 구현할 수도 있는 데, 위 예시의 경우에는 다음과 같은 조건을 모두 만족하는 경우에만 값이 변경됩니다.
date
의 값이2021-01-01
이전의 데이터num_sequences
의 값이100
미만인 데이터
위 두 조건을 만족하는 데이터의 경우 num_sequences
와 perc_sequences
의 값은 모두 0으로 변경됩니다.
조건문에는 AND
, OR
등을 활용하여 다양한 조건식을 적용할 수 있습니다.
행 수정
특정 행 하나 이상 수정하려는 경우 행을 구분하는 고유값이 존재해야 합니다.
현재 테이블에서는 고유값이 존재하지 않으므로, 테이블 수정을 통해 id
열을 추가합니다.
테이블에 INT
형식을 가지며 NOT NULL
, AUTO_INCREMENT
, PRIMARY KEY
속성을 부여하고, 테이블의 가장 앞 쪽에 열를 추가합니다.
자세한 사항은 MySQL 강좌 : 제 3강 - 테이블에서 확인해보실 수 있습니다.
특정 행 수정
특정 행을 수정하는 방식은 열을 모든 데이터를 수정하는 방식과 동일합니다.
단, id
열은 PRIMARY KEY
속성이 부여되어 있기 때문에 중복되지 않는 고유한 값입니다.
그러므로, 조건을 id
로 설정하여 해당 id
를 가지고 있는 행의 데이터만 수정할 수 있습니다.
특별한 경우가 아니라면 테이블마다 고유한 id
를 가지고 있는 것이 좋습니다.
또는 다른 테이블에서 파생된 데이터나 참조하는 데이터가 되도록 다른 테이블의 id
값과 동일한 값을 사용합니다.
위와 같은 경우에는 id
가 중복될 수 있습니다.
id
가 존재하지 않는 데이터의 경우 강제로 id
를 부여하거나, 행의 번호(Row Number)
를 사용할 수 있습니다.
댓글 남기기