MySQL에서 UPDATE 문을 작성할 때 데이터베이스 이름과 테이블 이름 주위에 작은따옴표(')를 사용하면 오류가 발생합니다. 그 이유는 작은따옴표가 문자열 값을 나타내는 데 사용되기 때문입니다. 데이터베이스나 테이블 같은 식별자(identifier)를 감쌀 때는 반드시 백틱(`)을 사용해야 합니다.
백틱을 사용한 올바른 UPDATE 문법
데이터베이스 이름과 테이블 이름 주위에는 백틱을 사용해야 하며, 문법은 다음과 같습니다.
UPDATE `yourDatabaseName`.`yourTableName`
SET yourColumnName1 = yourColumnName1 + 1
WHERE yourColumnName2 = 'yourValue';
위 문법에서 확인할 수 있듯이, WHERE 절의 조건 값인 'yourValue'처럼 실제 문자열 데이터에는 작은따옴표를 사용하고, 데이터베이스·테이블 이름에는 백틱을 사용하는 것이 올바른 방식입니다.
실습용 테이블 생성하기
문법을 직접 이해하기 위해 예제 테이블을 만들어 보겠습니다. 먼저 test 데이터베이스를 선택한 뒤 테이블을 생성합니다.
mysql> use test;
Database changed
mysql> create table Add1Demo
-> (
-> Id varchar(10),
-> Value int
-> );
Query OK, 0 rows affected (1.19 sec)
샘플 데이터 삽입하기
INSERT 명령으로 테이블에 여러 개의 레코드를 추가합니다.
mysql> insert into Add1Demo values('1',780);
Query OK, 1 row affected (0.17 sec)
mysql> insert into Add1Demo values('2',1001);
Query OK, 1 row affected (0.18 sec)
mysql> insert into Add1Demo values('3',1654);
Query OK, 1 row affected (0.15 sec)
mysql> insert into Add1Demo values('4',3999);
Query OK, 1 row affected (0.09 sec)
mysql> insert into Add1Demo values('5',5999);
Query OK, 1 row affected (0.10 sec)
mysql> insert into Add1Demo values('6',799);
Query OK, 1 row affected (0.08 sec)
mysql> insert into Add1Demo values('8',899);
Query OK, 1 row affected (0.11 sec)전체 레코드 조회하기
SELECT 문으로 테이블의 모든 레코드를 확인해 보겠습니다.
mysql> select *from Add1Demo;
실행 결과는 다음과 같습니다.
+------+-------+
| Id | Value |
+------+-------+
| 1 | 780 |
| 2 | 1001 |
| 3 | 1654 |
| 4 | 3999 |
| 5 | 5999 |
| 6 | 799 |
| 8 | 899 |
+------+-------+
7 rows in set (0.00 sec)
백틱을 활용한 UPDATE 문 실행
이제 데이터베이스 이름과 테이블 이름 주위에 백틱을 사용하는 UPDATE 쿼리를 실행해 보겠습니다. 절대 작은따옴표를 사용하지 않도록 주의하세요. 아래 예제는 Id가 '6'인 레코드의 Value 필드에 1을 더하는 쿼리입니다.
mysql> update `test`.`Add1Demo`
-> set Value=Value+1
-> where Id='6';
Query OK, 1 row affected (0.17 sec)
Rows matched: 1 Changed: 1 Warnings: 0
여기서 Id='6'의 '6'은 조건 값(문자열)이므로 작은따옴표가 맞고, `test`.`Add1Demo`처럼 식별자에는 백틱이 사용된 것을 볼 수 있습니다.
업데이트 결과 확인하기
Id가 6인 레코드를 다시 조회하여 업데이트가 정상적으로 적용되었는지 확인합니다.
mysql> select *from Add1Demo where Id='6';
실행 결과는 다음과 같습니다. Value가 799에서 800으로 1 증가한 것을 확인할 수 있습니다.
+------+-------+
| Id | Value |
+------+-------+
| 6 | 800 |
+------+-------+
1 row in set (0.00 sec)
정리
MySQL에서 데이터베이스 이름과 테이블 이름은 식별자이므로 백틱(`)으로 감싸야 하며, 컬럼에 저장된 값 같은 문자열 데이터는 작은따옴표(')로 감싸야 합니다. 두 기호의 용도를 혼동하지 않으면 UPDATE 문이 의도한 대로 정상적으로 동작합니다.