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');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');sql
INSERT INTO person
(first_name, last_name, eye_color, birth_date, street)
VALUES ('STERINE', 'LEE', 'GR', '1999-05-02', 'MILD TASTE STREET');날짜값은 문자열로 작성하였지만, 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');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