Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 열 이름 'desc'를 사용할 수 없는 이유와 백틱을 활용한 해결 방법

MySQL에서 열 이름 'desc'를 사용할 수 없는 이유

desc는 MySQL의 예약어(reserved word)이기 때문에 일반적인 방법으로는 열(컬럼) 이름으로 사용할 수 없습니다. 예약어는 SQL 문법에서 특별한 의미를 가지는 키워드로, DESCSELECT 문에서 결과를 내림차순으로 정렬할 때 사용되는 키워드입니다.

하지만 꼭 'desc'라는 이름의 열을 만들어야 한다면 백틱(backtick)을 사용하면 됩니다. 백틱 표기법은 (` `) 형태이며, 예약어를 식별자로 강제로 인식시켜 주는 역할을 합니다.

테이블 생성하기

개념을 이해하기 위해 실제로 테이블을 하나 만들어 보겠습니다. 아래 쿼리처럼 'desc' 열에 백틱을 적용하여 테이블을 생성합니다.

mysql> create table useOfDescColumnNameDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(20),
-> `desc` varchar(200) default 'GOOD'
-> );
Query OK, 0 rows affected (0.60 sec)

위 쿼리에서 `desc` varchar(200) default 'GOOD' 부분을 보면, 열 이름 'desc'가 백틱으로 감싸져 있는 것을 확인할 수 있습니다.

데이터 삽입하기

INSERT 명령어를 사용해 테이블에 몇 개의 레코드를 추가해 보겠습니다.

mysql> insert into useOfDescColumnNameDemo(Name) values('John');
Query OK, 1 row affected (0.17 sec)
mysql> insert into useOfDescColumnNameDemo(Name) values('Bob');
Query OK, 1 row affected (0.16 sec)
mysql> insert into useOfDescColumnNameDemo(Name) values('Carol');
Query OK, 1 row affected (0.13 sec)
mysql> insert into useOfDescColumnNameDemo(Name) values('Sam');
Query OK, 1 row affected (0.13 sec)

저장된 데이터 조회하기

SELECT 문을 사용하여 테이블의 모든 레코드를 확인합니다.

mysql> select *from useOfDescColumnNameDemo;

실행 결과는 다음과 같습니다.

+----+-------+------+
| Id | Name  | desc |
+----+-------+------+
| 1  | John  | GOOD |
| 2  | Bob   | GOOD |
| 3  | Carol | GOOD |
| 4  | Sam   | GOOD |
+----+-------+------+
4 rows in set (0.00 sec)

백틱을 활용한 SELECT 문 작성

'desc' 열의 값을 조회할 때도 마찬가지로 백틱을 사용해야 합니다. SELECT 문에 백틱을 적용한 쿼리는 다음과 같습니다.

mysql> select `desc` from useOfDescColumnNameDemo;

실행 결과는 아래와 같습니다.

+------+
| desc |
+------+
| GOOD |
| GOOD |
| GOOD |
| GOOD |
+------+
4 rows in set (0.00 sec)

정리

'desc'는 MySQL의 예약어이므로 열 이름으로 직접 사용할 수 없지만, 백틱(` `)으로 감싸주면 정상적으로 사용할 수 있습니다. 다만 가독성과 유지보수 측면에서는 예약어를 피하고 'description'과 같은 다른 이름을 사용하는 것이 좋은 습관입니다.