Skip to Content
Suffering builds character

3. 레코드 추가

INSERT 키워드를 활용하여 실제 Data를 삽입(INSERT)할 수 있음

INSERT 적용 전 person 테이블 정보 확인

sql
DESC person;

person_id같은 경우에는 기본 키(primary key)이기 때문에 1,2,3 ~ 같은 자동으로 증가하는 값(auto_increment)을 설정해두는 것이 일반적인 방식

ALTER 키워드를 활용하여 table의 정보 변경

sql
ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;

→ 에러 발생, favorite_food 테이블에 외래키 제약조건이 걸려있기 때문에 해당 제약조건 비활성화 후 다시 적용

외래키 제약조건 비활성화

sql
SET foreign_key_checks=0; -- 비활성화 ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT; SET foreign_key_checks=1; -- 활성화

1. INSERT 문 작성 문법

INSERT 문의 작성 시그니처는 다음과 같음

sql
INSERT INTO 테이블명 (컬럼명, 컬럼명 ...) VALUES (실제 값, 실제 값, ...);

INSERT 키워드를 활용하여 데이터 삽입

sql
INSERT INTO person (first_name, last_name, eye_color, birth_date, street) VALUES ('STERINE', 'LEE', 'BR', '1999-05-02');
→ ERROR 1136 (21S01): Column count doesn’t match value count at row 1

INSERT 절 뒤에 지정한 컬럼 (first_name, last_name, eye_color, birth_date, street)의 개수와 VALUES로 지정한 실제 값들의 수가 일치하지 않음

sql
INSERT INTO person (first_name, last_name, eye_color, birth_date, street) VALUES ('STERINE', 'LEE', 'TR', '1999-05-02', 'MILD TASTE STREET');
→ ERROR 1265 (01000): Data truncated for column ‘eye_color’ at row 1 eye_color로 허용 가능한 값의 범위를 벗어남
sql
INSERT INTO person (first_name, last_name, eye_color, birth_date, street) VALUES ('STERINE', 'LEE', 'GR', '1999-05-02', 'MILD TASTE STREET');
→ Query OK, 1 row affected (0.01 sec)

날짜값은 문자열로 작성하였지만, MySQL에서 지원하는 시간 자료형 포맷(format)에만 일치시켜서 작성하면 자동으로 문자열을 날짜타입으로 변환하여 데이터베이스에 저장해줌

sql
INSERT INTO favorite_food (person_id, food) VALUES (1, 'pizza');

→ Query OK, 1 row affected (0.02 sec)

sql
INSERT INTO favorite_food (person_id, food) VALUES (2, 'salad'); INSERT INTO favorite_food (person_id, food) VALUES (3, 'ace');
→ ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (mydb.favorite_food, CONSTRAINT fk_favorite_food_person_id FOREIGN KEY (person_id) REFERENCES person (person_id))

다른 person 데이터 추가

sql
INSERT INTO person (first_name, last_name, eye_color, birth_date, street) VALUES ('LANA', 'DEL REY', 'BR', '1999-02-04', 'BLUE JEAN STREET');

데이터 삽입

sql
INSERT INTO favorite_food (person_id, food) VALUES (2, 'salad'); INSERT INTO favorite_food (person_id, food) VALUES (2, 'ace');
Last updated on