아니요, 해당 쿼리는 작동하지 않습니다. MySQL에서 VARCHAR 타입의 컬럼을 정의할 때는 반드시 최대 길이(크기)를 함께 지정해야 합니다. 크기를 생략하면 구문 오류(Syntax Error)가 발생합니다.
오류 발생 상황 확인하기
실제로 VARCHAR 크기를 지정하지 않고 테이블을 생성해 보면 다음과 같은 오류가 발생합니다.
mysql> create table DemoTable1821 ( Id int, FirstName varchar, LastName varchar ); ERROR 1064 (42000): 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 ', LastName varchar )' at line 4
위와 같이 ERROR 1064 (42000) 구문 오류가 발생하는 것을 확인할 수 있습니다. 이는 MySQL이 VARCHAR 컬럼의 최대 저장 길이를 알 수 없기 때문입니다.
오류 해결 방법
이 오류를 해결하려면 varchar(10)처럼 괄호 안에 최대 길이를 명시해야 합니다. 이번에는 크기를 지정하여 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1821 ( Id int, FirstName varchar(10), LastName varchar(10) ); Query OK, 0 rows affected (0.00 sec)
이번에는 Query OK 메시지와 함께 테이블이 성공적으로 생성됩니다.
레코드 삽입하기
INSERT 명령을 사용하여 테이블에 데이터를 추가합니다.
mysql> insert into DemoTable1821 values(1,'John','Smith'); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1821 values(2,'John','Doe'); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1821 values(3,'Adam','Smith'); Query OK, 1 row affected (0.00 sec)
결과 조회하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable1821;
실행 결과는 다음과 같습니다.
+------+-----------+----------+ | Id | FirstName | LastName | +------+-----------+----------+ | 1 | John | Smith | | 2 | John | Doe| | 3 | Adam | Smith | +------+-----------+----------+ 3 rows in set (0.00 sec)
정리
MySQL에서는 VARCHAR 타입 사용 시 최대 길이 지정이 필수라는 점을 기억하세요. 이는 저장 공간을 효율적으로 관리하고 데이터 무결성을 유지하기 위한 설계 방식입니다. 참고로 TEXT나 BLOB 타입은 길이 지정 없이 사용할 수 있지만, 일반적인 문자열 저장에는 VARCHAR(길이) 형태로 선언하는 것이 표준적입니다.