MySQL에서 열 이름 없이 값 삽입하기
네, 가능합니다. MySQL에서는 INSERT 문 작성 시 열(컬럼) 이름을 생략하고 테이블에 정의된 순서대로 값만 나열하여 데이터를 삽입할 수 있습니다.
기본 문법은 다음과 같습니다.
INSERT INTO yourTableName VALUES(yourValue1, yourValue2, yourValue3, .....N);
이때 주의할 점은 VALUES 뒤에 오는 값의 개수와 순서가 반드시 테이블의 열 구조와 일치해야 한다는 것입니다.
예제 테이블 생성
먼저 실습용 테이블을 생성해 보겠습니다. 여기서는 Id 열을 NOT NULL로 설정했습니다.
mysql> create table DemoTable862(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName varchar(100),
Age int
);
Query OK, 0 rows affected (0.68 sec)레코드 삽입
이제 INSERT 명령어를 사용해 몇 개의 레코드를 삽입해 보겠습니다. 열 이름을 명시하지 않았으며, Id 자리에는 NULL을 전달합니다.
mysql> insert into DemoTable862 values(NULL,'Chris',23); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable862 values(NULL,'Robert',21); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable862 values(NULL,'Mike',24); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable862 values(NULL,'Sam',25); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable862 values(NULL,'Bob',26); Query OK, 1 row affected (0.14 sec)
결과 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable862;
위 쿼리는 다음과 같은 결과를 출력합니다.
+----+-----------+------+ | Id | FirstName | Age | +----+-----------+------+ | 1 | Chris | 23 | | 2 | Robert | 21 | | 3 | Mike | 24 | | 4 | Sam | 25 | | 5 | Bob | 26 | +----+-----------+------+ 5 rows in set (0.00 sec)
AUTO_INCREMENT의 역할
삽입 시 Id에 NULL을 전달했음에도 불구하고 결과를 보면 1부터 5까지의 값이 자동으로 저장되어 있습니다. 그 이유는 다음과 같습니다.
Id 열은 NOT NULL 제약 조건과 함께 AUTO_INCREMENT 속성이 설정되어 있습니다. 따라서 NULL 값이 전달되더라도 이를 무시하고 MySQL이 자동으로 순차적인 고유 번호를 생성해 할당합니다.
만약 AUTO_INCREMENT가 설정되지 않은 NOT NULL 열에 NULL을 삽입하려고 하면 에러가 발생하므로, 이 방식을 사용할 때는 각 열의 제약 조건을 반드시 확인해야 합니다.