MySQL 에서 테이블명으로 like 를 사용하고 select 문으로 해당 테이블의 데이터를 확인하려했더니 오류가 발생하였다.

오류 메세지는 다음과 같다.
Error message :
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'like' at line 2
위와같은 오류가 발생한 이유는 테이블명으로 사용한 like 가 mysql에서 이용하는 예약어이기 때문이다.
예약어를 필드명, 데이터베이스명으로 사용하고자 할 때는
1. 테이블명 변경
2. 테이블명 미변경시에는 ~ 표시 아래에 있는 ` ` 로 예약어를 감싸주어야한다.
`like` 형태로 작성해주면 에러가 발생하지 않고 테이블이 제대로 select 된다

예약어 목록
| ADD | ALL | ALTER |
| ANALYZE | AND | AS |
| ASC | ASENSITIVE | BEFORE |
| BETWEEN | BIGINT | BINARY |
| BLOB | BOTH | BY |
| CALL | CASCADE | CASE |
| CHANGE | CHAR | CHARACTER |
| CHECK | COLLATE | COLUMN |
| CONDITION | CONSTRAINT | CONTINUE |
| CONVERT | CREATE | CROSS |
| CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP |
| CURRENT_USER | CURSOR | DATABASE |
| DATABASES | DAY_HOUR | DAY_MICROSECOND |
| DAY_MINUTE | DAY_SECOND | DEC |
| DECIMAL | DECLARE | DEFAULT |
| DELAYED | DELETE | DESC |
| DESCRIBE | DETERMINISTIC | DISTINCT |
| DISTINCTROW | DIV | DOUBLE |
| DROP | DUAL | EACH |
| ELSE | ELSEIF | ENCLOSED |
| ESCAPED | EXISTS | EXIT |
| EXPLAIN | FALSE | FETCH |
| FLOAT | FLOAT4 | FLOAT8 |
| FOR | FORCE | FOREIGN |
| FROM | FULLTEXT | GRANT |
| GROUP | HAVING | HIGH_PRIORITY |
| HOUR_MICROSECOND | HOUR_MINUTE | HOUR_SECOND |
| IF | IGNORE | IN |
| INDEX | INFILE | INNER |
| INOUT | INSENSITIVE | INSERT |
| INT | INT1 | INT2 |
| INT3 | INT4 | INT8 |
| INTEGER | INTERVAL | INTO |
| IS | ITERATE | JOIN |
| KEY | KEYS | KILL |
| LEADING | LEAVE | LEFT |
| LIKE | LIMIT | LINES |
| LOAD | LOCALTIME | LOCALTIMESTAMP |
| LOCK | LONG | LONGBLOB |
| LONGTEXT | LOOP | LOW_PRIORITY |
| MATCH | MEDIUMBLOB | MEDIUMINT |
| MEDIUMTEXT | MIDDLEINT | MINUTE_MICROSECOND |
| MINUTE_SECOND | MOD | MODIFIES |
| NATURAL | NOT | NO_WRITE_TO_BINLOG |
| NULL | NUMERIC | ON |
| OPTIMIZE | OPTION | OPTIONALLY |
| OR | ORDER | OUT |
| OUTER | OUTFILE | PRECISION |
| PRIMARY | PROCEDURE | PURGE |
| READ | READS | REAL |
| REFERENCES | REGEXP | RELEASE |
| RENAME | REPEAT | REPLACE |
| REQUIRE | RESTRICT | RETURN |
| REVOKE | RIGHT | RLIKE |
| SCHEMA | SCHEMAS | SECOND_MICROSECOND |
| SELECT | SENSITIVE | SEPARATOR |
| SET | SHOW | SMALLINT |
| SONAME | SPATIAL | SPECIFIC |
| SQL | SQLEXCEPTION | SQLSTATE |
| SQLWARNING | SQL_BIG_RESULT | SQL_CALC_FOUND_ROWS |
| SQL_SMALL_RESULT | SSL | STARTING |
| STRAIGHT_JOIN | TABLE | TERMINATED |
| THEN | TINYBLOB | TINYINT |
| TINYTEXT | TO | TRAILING |
| TRIGGER | TRUE | UNDO |
| UNION | UNIQUE | UNLOCK |
| UNSIGNED | UPDATE | USAGE |
| USE | USING | UTC_DATE |
| UTC_TIME | UTC_TIMESTAMP | VALUES |
| VARBINARY | VARCHAR | VARCHARACTER |
| VARYING | WHEN | WHERE |
| WHILE | WITH | WRITE |
| XOR | YEAR_MONTH | ZEROFILL |
'Database' 카테고리의 다른 글
| DB 데이터베이스 인덱스(Index) (0) | 2023.03.31 |
|---|---|
| 테이블 설계 시, created_on, updated_on - default 값 설정 (0) | 2023.01.04 |
| null 값을 다른 값으로 대체하는 방법 - ifnull() (1) | 2022.12.08 |
| 테이블의 unique 설정하는 방법 (0) | 2022.12.08 |
| MySQL foreign key 로 연결돼있는 데이터 지우기 설정 - cascade (0) | 2022.12.08 |