Table 수정하기

골머리·2021년 11월 4일
0

MySQL

목록 보기
4/16

이전 글에서 만든 [person]과 [favorite_food] 테이블에 데이터를 넣고, 수정하고, 삭제해볼꺼다.

데이터 삽입하기 : INSERT

숫자 키 데이터 만들기

[person] 테이블의 PK 열에 자동증가 기능(auto_increment)을 켜면 유용하다.

ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;

그런데 기존에 만들어두었던 [favorite_food] 테이블에 person_id FK 제약이 걸려있기 때문에 이 제약조건을 먼저 비활성화 해주지 않으면 에러가 뜬다.

💡 Foreign Key 제약조건을 비활성화/활성화 하는 법

set foreign_key_checks=0; 	/*제약조건 비활성화*/
set foreign_key_checks=1; 	/*제약조건 다시 활성화*/

테이블에 데이터 넣기

INSERT INTO 
	테이블이름 (primary_key,1,2,3,4)
VALUES (null, '값1','값2','값3','값4');

테이블 확인하기

SELECT1,2,3,4
FROM 테이블이름;

만약에 테이블에 있는 모든 컬럼 가져와! 라고 하고싶다면 아래와 같이 * 을 쓰면된다.

SELECT *
FROME 테이블이름;

person_id가 '2'인 이유는 1개 데이터를 넣었다 삭제했기 때문이다 😓

[favorite_food] 테이블에 person_id=2 가 좋아하는 음식 3가지를 넣고,
order by를 이용해 가장 좋아하는 음식을 알파벳 순서로 검색해보자.

SELECT 
	food
FROM favorite_food
WHERE person_id=2
ORDER BY food;


데이터 수정하기 : UPDATE

지금까지 [person] 테이블에 2개의 데이터를 넣었다.

golmori의 occupation을 추가해보자.

UPDATE 
	테이블이름
SET 추가하고자하는열 = '값'
WHERE primary_key = key;
    
/*아래와 같이 추가했다*/
UPDATE 
	person
SET occupation = 'ProductManager'
WHERE person_id = 2;

잘 추가된걸 확인할 수 있다 😊

여기서 WHERE 절을 사용하지 않고 update 문을 사용할 경우, 테이블의 모든 행을 수정하니까 주의하자.


데이터 삭제하기 : DELETE

DELETE FROM 
	테이블이름
WHERE primary_key = key;

여기서도 마찬가지로 WHERE 절을 사용하지 않고 delete문을 사용할 경우, 테이블의 행이 모두 삭제되니 주의하자.

💡 행을 삭제하면 그 다음 추가되는 데이터의 Primary Key는 어떻게 될까?

auto_increment는 내부적으로 인덱스 처리를 한다. 데이터 추가 = 숫자가 증가
이걸 MySQL 엔진에서 기록하기 때문에, 행을 삭제해도 그 자리가 메꿔지면서 숫자가 바뀌지 않는다.
가장 마지막 숫자 + 1의 숫자로 증가한다.


테이블 삭제하기 : DROP

DROP TABLE 테이블이름;

발생할 수 있는 실수들

Foreign Key 가 연결된 상위 테이블에 데이터가 없을 경우

상위 테이블에 데이터가 없는데, 하위 테이블에 데이터를 삽입하려고 할 경우 에러가 발생한다.

열 값 위반

enum 자료형으로 특정 열에 들어갈 수 있는 값들을 지정해놨는데, 이외의 값을 입력하면 에러가 발생한다.
예를 들어 [person] 테이블에서 MBTI 열은 16가지 값만 들어갈 수 있다.
여기에 'ABCD'라는 이상한 값을 넣으려고 해보자.

위와 같은 에러가 발생한다. (truncate = 생략된, 불완전한)

시간 자료형의 문자열이 형식과 일치하지 않는 경우

date 시간자료형의 형식은 기본적으로 YYYY-MM-DD 이다.
그런데 예를 들어 DEC-21-1980과 같은 식으로 입력하면 Incorrect date value: 에러가 발생한다.
모든 시간자료형의 형식을 외우긴 어려우니까 str_to_date() 함수를 이용해 내가 형식을 지정할 수도 있다.

profile
PO로 성장하기 위해 노력 중 👩🏾‍💻

1개의 댓글

comment-user-thumbnail
2021년 11월 4일

골머리 싸매고 있었던 부분... 이해가 쏙쏙되는 띵글이네요 ㅠ 저도 열심히 공부하려고요!

답글 달기