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

MySQL 테이블 이름에 'user'를 사용할 수 있나요? 예약어 문제와 해결 방법

MySQL 테이블 이름에 'user'를 사용할 수 있을까?

MySQL에서는 테이블 이름으로 'user'를 그대로 사용할 수 없습니다. 'user'는 MySQL의 예약어(reserved word)로 지정되어 있기 때문입니다. 이 경우 두 가지 해결 방법이 있습니다.

  • 테이블 이름을 users처럼 다른 이름으로 변경하기
  • 백틱(backtick, `) 기호로 'user'를 감싸서 사용하기

참고로 'user'라는 단어 자체는 CREATE USER 구문으로 계정을 생성하거나, mysql 시스템 데이터베이스에서 사용자 목록을 조회할 때 활용됩니다.

방법 1. 테이블 이름을 users로 변경하여 생성

먼저 테이블을 생성해 보겠습니다. 여기서는 테이블 이름으로 users를 사용했습니다.

mysql> create table users
    -> (
    -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> UserName varchar(20),
    -> UserAge int
    -> );
Query OK, 0 rows affected (0.51 sec)

방법 2. 백틱으로 감싸서 user 테이블 생성

꼭 'user'라는 이름을 사용해야 한다면 백틱으로 감싸면 됩니다.

mysql> create table `user`
    -> (
    -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> UserName varchar(20),
    -> UserAge int
    -> );
Query OK, 0 rows affected (0.51 sec)

레코드 삽입하기

INSERT 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다.

mysql> insert into users(UserName,UserAge) values('Chris Brown',28);
Query OK, 1 row affected (0.17 sec)
mysql> insert into users(UserName,UserAge) values('John Doe',31);
Query OK, 1 row affected (0.18 sec)
mysql> insert into users(UserName,UserAge) values('John Smith',26);
Query OK, 1 row affected (0.17 sec)
mysql> insert into users(UserName,UserAge) values('David Miller',27);
Query OK, 1 row affected (0.13 sec)

전체 레코드 조회하기

SELECT 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from users;

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

+--------+--------------+---------+
| UserId | UserName     | UserAge |
+--------+--------------+---------+
|      1 | Chris Brown  |      28 |
|      2 | John Doe     |      31 |
|      3 | John Smith   |      26 |
|      4 | David Miller |      27 |
+--------+--------------+---------+
4 rows in set (0.00 sec)

정리하면, 'user'는 MySQL 예약어이므로 테이블 이름으로 직접 사용할 수 없으며, 이름을 users로 바꾸거나 백틱으로 감싸는 방식으로 해결할 수 있습니다. 다만 가독성과 유지보수를 고려하면 별도의 이름을 사용하는 것이 권장됩니다.