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

SQL에서 'from'을 컬럼명으로 사용할 수 없는 이유와 해결 방법

MySQL에서 예약어 'from'을 컬럼명으로 사용하는 방법

MySQL에서 from은 예약어(reserved word)이기 때문에 컬럼 이름으로 직접 사용할 수 없습니다. 만약 테이블 생성 시 from을 그대로 컬럼명으로 지정하면 문법 오류가 발생합니다.

이러한 문제를 해결하려면 역따옴표(backtick, `) 기호를 사용해야 합니다. 역따옴표로 감싸면 예약어도 일반 식별자처럼 사용할 수 있습니다.

1. 테이블 생성하기

먼저 역따옴표를 활용하여 from 컬럼을 포함하는 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
    (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `from` varchar(100),
    Name varchar(10)
    );
Query OK, 0 rows affected (0.92 sec)

테이블이 성공적으로 생성되었습니다. 주목할 점은 `from`이 역따옴표로 감싸져 있다는 것입니다.

2. 데이터 삽입하기

insert 명령문을 사용하여 테이블에 레코드를 추가합니다. 이때도 마찬가지로 역따옴표를 함께 사용해야 합니다.

mysql> insert into DemoTable(`from`,Name) values('US','John');
Query OK, 1 row affected (0.20 sec)

mysql> insert into DemoTable(`from`,Name) values('UK','Carol');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable(`from`,Name) values('AUS','David');
Query OK, 1 row affected (0.12 sec)

3. 전체 레코드 조회하기

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

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+----+------+-------+
| Id | from | Name  |
+----+------+-------+
|  1 | US   | John  |
|  2 | UK   | Carol |
|  3 | AUS  | David |
+----+------+-------+
3 rows in set (0.00 sec)

4. 예약어 'from'을 컬럼명으로 조회하기

다음은 예약어인 from을 컬럼명으로 사용하여 데이터를 조회하는 쿼리입니다.

mysql> select `from` from DemoTable;

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

+------+
| from |
+------+
| US   |
| UK   |
| AUS  |
+------+
3 rows in set (0.00 sec)

정리 및 참고 사항

MySQL에서 SELECT, FROM, WHERE 등의 예약어를 컬럼명이나 테이블명으로 사용해야 하는 경우에는 반드시 역따옴표(`)로 감싸주어야 합니다. 다만, 가독성과 유지보수 측면에서는 예약어와 동일한 이름의 컬럼을 사용하지 않는 것이 좋습니다. 예를 들어 from 대신 origin_country, source_from과 같은 이름을 사용하면 이러한 번거로움을 피할 수 있습니다.