MySQL에서 문자열 값과 식별자의 따옴표 규칙
MySQL에서 문자열 입력값에는 반드시 작은따옴표(')를 사용해야 합니다. 반면, 테이블 이름이나 컬럼 이름처럼 식별자(identifier)에 해당하는 경우에는 작은따옴표를 사용하지 않고 백틱(`)을 사용해야 합니다.
백틱은 키보드에서 숫자 1 왼쪽, Esc 아래에 있는 기울어진 따옴표 모양의 특수 문자로, MySQL에서는 이를 통해 예약어와 충돌하는 이름도 안전하게 사용할 수 있습니다.
1. 테이블 생성하기
먼저 예제용 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1552
-> (
-> `key` int,
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.82 sec)
위 예제에서 주목할 점은 컬럼 이름이 key라는 것입니다. key는 MySQL의 예약어(reserved word)이기 때문에 백틱으로 감싸지 않으면 오류가 발생합니다.
2. 레코드 삽입하기
INSERT 명령을 사용하여 테이블에 데이터를 추가합니다. 여기서 'Chris', 'David', 'Mike'처럼 문자열 값에는 작은따옴표를 사용합니다.
mysql> insert into DemoTable1552 values(101,'Chris');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1552 values(102,'David');
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable1552 values(103,'Mike');
Query OK, 1 row affected (0.14 sec)
3. 전체 레코드 조회하기
SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select * from DemoTable1552;
실행 결과는 다음과 같습니다.
+------+-------+
| key | Name |
+------+-------+
| 101 | Chris |
| 102 | David |
| 103 | Mike |
+------+-------+
3 rows in set (0.00 sec)
4. UPDATE 명령에서 백틱과 작은따옴표 함께 사용하기
이제 UPDATE 명령을 실행해 보겠습니다. 컬럼 이름인 `key`에는 백틱을, 조건값인 'Chris'에는 작은따옴표를 사용합니다.
mysql> update DemoTable1552 set `key`=100 where Name='Chris';
Query OK, 1 row affected (0.20 sec)
Rows matched: 1 Changed: 1 Warnings: 0
5. 업데이트 결과 확인하기
테이블을 다시 조회하면 Chris의 key 값이 101에서 100으로 변경된 것을 확인할 수 있습니다.
mysql> select * from DemoTable1552;
+------+-------+
| key | Name |
+------+-------+
| 100 | Chris |
| 102 | David |
| 103 | Mike |
+------+-------+
3 rows in set (0.00 sec)
정리: 언제 어떤 따옴표를 사용해야 할까?
- 작은따옴표('): 문자열 리터럴 값(예: WHERE 절의 조건값, INSERT 시 입력값)에 사용합니다.
- 백틱(`): 테이블 이름, 컬럼 이름 등 식별자에 사용합니다. 특히
key,order,group같은 MySQL 예약어와 겹치는 이름에는 필수입니다.
만약 UPDATE 명령에서 컬럼 이름을 작은따옴표로 감싸면 MySQL은 이를 문자열로 해석하기 때문에 구문 오류가 발생하거나 의도와 다르게 동작합니다. 따라서 식별자에는 반드시 백틱을 사용하는 것이 올바른 방법입니다.