MySQL에서 열 이름에 점(.)이 포함되어 있다면, 해당 열 이름을 반드시 백틱(`` ` ``)으로 감싸야 합니다. 점이 포함된 열 이름은 그대로 사용할 경우 MySQL이 이를 데이터베이스·테이블·열을 구분하는 구분자로 잘못 해석할 수 있기 때문입니다.
이 개념을 이해하기 위해 실제 예제를 통해 단계별로 살펴보겠습니다.
1. 예제 테이블 생성하기
먼저 점(.)이 포함된 열 이름을 가진 테이블을 생성합니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table UpdateDemo
-> (
-> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> `User.FirstName.LastName` varchar(60)
-> );
Query OK, 0 rows affected (0.54 sec)
위 쿼리에서 User.FirstName.LastName라는 열 이름에 점이 포함되어 있으므로, 생성 시에도 백틱으로 감싸야 한다는 점에 주목하세요.
2. 데이터 삽입하기
INSERT 명령을 사용하여 테이블에 여러 레코드를 삽입합니다.
mysql> insert into UpdateDemo(`User.FirstName.LastName`) values('John Smith');
Query OK, 1 row affected (0.14 sec)
mysql> insert into UpdateDemo(`User.FirstName.LastName`) values('Adam Smith');
Query OK, 1 row affected (0.12 sec)
mysql> insert into UpdateDemo(`User.FirstName.LastName`) values('Carol Taylor');
Query OK, 1 row affected (0.25 sec)
mysql> insert into UpdateDemo(`User.FirstName.LastName`) values('Mitchell Johnson');
Query OK, 1 row affected (0.19 sec)
mysql> insert into UpdateDemo(`User.FirstName.LastName`) values('David Brown');
Query OK, 1 row affected (0.16 sec)
mysql> insert into UpdateDemo(`User.FirstName.LastName`) values('Larry Miller');
Query OK, 1 row affected (0.22 sec)3. 테이블 데이터 확인하기
SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select *from UpdateDemo;
실행 결과는 다음과 같습니다.
+--------+-------------------------+
| UserId | User.FirstName.LastName |
+--------+-------------------------+
| 1 | John Smith |
| 2 | Adam Smith |
| 3 | Carol Taylor |
| 4 | Mitchell Johnson |
| 5 | David Brown |
| 6 | Larry Miller |
+--------+-------------------------+
6 rows in set (0.00 sec)
4. 점(.)이 포함된 열 업데이트하기
이제 User.FirstName.LastName처럼 점(.)이 포함된 열 이름을 업데이트할 때는 열 이름을 반드시 백틱(`` ` ``)으로 감싸야 합니다.
UPDATE 쿼리는 다음과 같습니다.
mysql> update UpdateDemo set `User.FirstName.LastName`='David Miller' where UserId=5;
Query OK, 1 row affected (0.19 sec)
Rows matched: 1 Changed: 1 Warnings: 0
5. 업데이트 결과 확인하기
테이블 레코드를 다시 조회하여 업데이트가 정상적으로 적용되었는지 확인합니다.
mysql> select *from UpdateDemo;
실행 결과는 다음과 같습니다.
+--------+-------------------------+
| UserId | User.FirstName.LastName |
+--------+-------------------------+
| 1 | John Smith |
| 2 | Adam Smith |
| 3 | Carol Taylor |
| 4 | Mitchell Johnson |
| 5 | David Miller |
| 6 | Larry Miller |
+--------+-------------------------+
6 rows in set (0.00 sec)
위 출력 결과에서 UserId가 5인 행이 'David Brown'에서 'David Miller'로 성공적으로 업데이트된 것을 확인할 수 있습니다.
정리
MySQL에서 열 이름에 점(.)과 같은 특수 문자가 포함된 경우, 테이블 생성, 데이터 삽입, 업데이트 등 모든 SQL 문에서 해당 열 이름을 반드시 백틱(`` ` ``)으로 감싸야 합니다. 이를 생략하면 구문 오류가 발생하거나 의도하지 않은 동작이 일어날 수 있으므로 주의해야 합니다.