MySQL에서 INSERT INTO 문을 실행할 때 열 이름과 값을 모두 지정하지 않으면, MySQL은 테이블의 해당 열들에 NULL을 저장합니다. 아래 예시를 통해 자세히 살펴보겠습니다.
테이블 생성하기
먼저 다음 쿼리를 사용하여 'Student' 테이블을 생성합니다.
mysql> Create table Student(RollNO INT, Name Varchar(20), Class Varchar(15));
Query OK, 0 rows affected (0.17 sec)
열 이름과 값 없이 INSERT INTO 실행하기
이제 열 이름과 값을 모두 생략한 상태로 INSERT INTO 문을 실행해 보겠습니다.
mysql> Insert into Student() Values();
Query OK, 1 row affected (0.02 sec)
저장된 결과 확인하기
아래 SELECT 쿼리로 데이터를 조회해 보면, MySQL이 각 열에 NULL을 저장한 것을 확인할 수 있습니다.
mysql> Select * from Student;
+--------+------+-------+
| RollNO | Name | Class |
+--------+------+-------+
| NULL | NULL | NULL |
+--------+------+-------+
1 row in set (0.00 sec)
여러 번 실행하면 어떻게 될까?
열 이름과 값 없이 INSERT INTO 문을 실행할 때마다 MySQL은 항상 테이블의 모든 열에 NULL을 저장합니다. 따라서 여러 번 실행하면 그만큼 NULL 값으로 채워진 행이 계속 추가됩니다.
mysql> Insert into Student() Values();
Query OK, 1 row affected (0.03 sec)
mysql> Select * from Student;
+--------+------+-------+
| RollNO | Name | Class |
+--------+------+-------+
| NULL | NULL | NULL |
| NULL | NULL | NULL |
+--------+------+-------+
2 rows in set (0.00 sec)
참고: 위와 같은 동작은 테이블의 열에 NOT NULL 제약 조건이나 기본값(DEFAULT)이 설정되어 있지 않은 경우에 적용됩니다. 만약 NOT NULL 제약 조건이 걸린 열이 포함되어 있다면, 빈 INSERT 문 실행 시 오류가 발생하므로 주의해야 합니다.