본문 바로가기

TIL/2021

[TIL] 0812 Database 이것저것4


배운 것

1. INSERT

아래와 같이 테이블을 만들고 INSERT 할 때

CREATE TABLE test.vital (
    user_id int not null,
    vital_id int primary key,
    date timestamp not null,
    weight int not null
);

이렇게 필드리스트를 명시적으로 적어줘도 되고,

INSERT INTO test.vital(user_id, vital_id, date, weight) VALUES(100, 1, '2021-01-23', 75);

VALUES 값 순서가 테이블 만들 때 필드 순서랑 동일하다면 필드리스트 생략 가능하다.

INSERT INTO test.vital VALUES(100, 1, '2021-01-23', 75);

 

2. DELETE vs TRUNCATE

  DELETE TRUNCATE
삭제 방식 레코드 단위로 특정 데이터를 제거한다. 테이블을 Drop 한 후 CREATE 한다.(전체 삭제만 가능, auto_increment로 생성된 ID는 1부터 시작하게 된다.)
롤백  가능 불가능 
속도  TRUNCATE 보다 느림 DELETE 보다 빠름

그림으로 본 DELETE vs TRUNCATE

 

3. UPDATE

vital_id 가 4인 레코드의 weight를 변경하려면 아래와 같이 하면 된다. 

여기서 주의할 점은 WHERE 조건이 없이 실행하면 weight 필드의 모든 레코드 값이 92로 변경된다.

UPDATE test.vital
SET weight = 92
WHERE vital_id = 4;

 

4. Safe Update Mode

아래와 같은 코드를 입력하면 오류가 난다.

DELETE FROM test.vital WHERE weight <= 0;

기본적으로 MySql Workbench 는 Safe Update Mode로 동작하고,

DELETE를 할 때 WHERE 조건이 다수의 레코드를 지울 수 있는 조건일 경우 실행되지 않는다.

그래도 실행하고 싶다면 기본 동작 모드를 풀면된다.

 

5. Self Join

Q. 유용하게 쓰이는 순간이 있다고 한다. 도대체 언제 유용하게 쓰이는거지?! 알아봐야겠다.

느낀 점

1. 한기용 강사님께서 정말 기본위주로 database를 알려주시는 것 같다. 기초를 튼튼히 다져야지. 근데 현업에서는 얼마나 깊게 다룰까? 궁금하다.

'TIL > 2021' 카테고리의 다른 글

[TIL] 0818 Spring 컴포넌트  (0) 2021.08.18
[TIL] 0813 Database 이것저것5  (0) 2021.08.13
[TIL] 0811 Database 이것저것3  (0) 2021.08.11
[TIL] 0810 Database 이것저것2  (0) 2021.08.10
[TIL] 0809 Database 이것저것1  (0) 2021.08.09