2022 Masters Course/Web Backend Course

2022 마스터즈 코스(백엔드) 49일차 회고(2022. 3. 17.) - "봄 기운에 맞서 프로그래밍하기"

ikjo 2022. 3. 17. 23:29

해당 글은 코드스쿼드 2022 마스터즈 코스 "Java 웹 백엔드" 과정을 수강하면서 학습한 내용 등에 대한 회고 글입니다. :)

 

수강 회고

대학 시절 매년 이 시기 즈음 되면 봄의 기운이 느껴져 항상 기분이 좋아지곤 했지만 매번 중간고사 일정과 겹쳐 기분이 마냥 좋지만은 않았던 기억이 있다. 놀랍게도 요즘 마스터즈 코스 과정 중에서도 그 당시 때와 동일한 상황이다. 굉장히 추웠었던 겨울이 지나가고 서서히 기온이 올라가면서 날씨가 따뜻해지니 어디라도 놀러가고 싶은 심정이기 때문이다.

 

하지만 마스터즈 코스 중에 있는 지금 시간이 갈수록 "당장 해야 할 일"과 "앞으로 해야 할 일"이 동시에 늘어나고 있는 실정이다. 때문에 적당히 쉬는 것은 중요하지만 또 과하게 놀 수는 없는 노릇이기도 하다. 아울러 마스터즈 코스 과정에 들어온 것은 이전 보다 훨씬 성장하기 위함인데, (물론 지금도 이전 보다 성장은 했지만) 그 귀한 시간을 놀러다니는데 시간을 많이 할애할 수도 없기도 하다. (또한 마스터즈 코스 과정은 '무료'가 아니다 😂)

 

어떻게 보면 이러한 환경 자체가 봄 기운의 유혹(?)에 굴하지 않도록 '강제'해주는 효과가 있는 것 같다. 지금은 이 유혹이 심하진 않지만 4~6월 정도 되면 이러한 유혹이 더 강해질텐데 마음가짐을 잘 다지도록 노력해야겠다. 그런 의미에서 오늘은 내가 마스터즈 코스 과정에 지원한 이유에 대해 다시 생각해보는 시간을 가졌다.

 

 

학습 회고

  • 스프링 부트 관련 미션 과제 풀이
    • Java 웹 백엔드 클래스 내 소모임원과 zoom 회의실에서 학습

 

Auto_Increment

MySQL에는 테이블 특정 칼럼에 적용할 수 있는 AUTO_INCREMENT라는 키워드 속성이 있는데 주로 해당 테이블의 데이터별 인덱스나 아이디 번호 칼럼에 적용이 된다. 해당 칼럼에 AUTO_INCREMENT가 적용되고 (기존 데이터가 아무 것도 없을 때) 새로운 데이터가 추가(INSERT)되면 시작 값이 1부터 시작하여 매번 새로운 데이터가 추가될 때마다 1씩 증가하는 특징을 가지고 있다. 예를 들면 다음과 같이 테이블을 생성할 때 id 값에 AUTO_INCREMENT를 적용해볼 수 있다.

 

CREATE TABLE article
(
  id INT NOT NULL AUTO_INCREMENT,
  user_id VARCHAR(255) NOT NULL,
  writer VARCHAR(255),
  title VARCHAR(255),
  contents VARCHAR(255),
  created_date TIMESTAMP,
  PRIMARY KEY (id)
);

 

이때 AUTO_INCREMENT 키워드 앞에 NOT NULL 키워드가 선언되어 있는 것을 볼 수 있다. NOT NULL 키워드란 말 그대로 NULL이 올 수 없다는 것인데, 이처럼 NOT NULL 키워드가 사용되면 id 값이 NULL이어도 데이터 INSERT 시 AUTO_INCREMENT에 의해 시퀀스 번호가 자동으로 할당되게 된다. 따라서 최신 버전 MySQL의 경우 테이블 생성 시 NULL이 나올 수 있는 칼럼에는 AUTO_INCREMENT를 적용시킬 수 없다.

 

아울러 AUTO_INCREMENT가 적용된 id가 PRIMARY KEY로 지정된 것을 볼 수 있다. 이 역시 AUTO_INCREMENT를 적용하기 위해서는 반드시 적용되어야 하는 부분이다. PRIMARY KEY는 한 개 이상의 칼럼으로 테이블 내의 필드들을 구별하기 위해 사용된다. 따라서 PRIMARY KEY가 적용된 칼럼 값들 제각기 다르며, NULL 값을 가질 수 없다.

 

이와 관련하여 다음과 같이 id에 AUTO_INCREMENT가 적용된 테이블(기존 데이터 X)이 있다고 가정해보자.(MySQL 8.0.25 Ver 기준)

 

 

이때 실험 삼아 먼저 id 값에 null 값을 주입해보자.

 

 

테스트 결과 분명히 id 값에 null을 할당했지만 1이 적용되는 것을 확인할 수 있다. 이는 앞서 NOT NULL 키워드가 영향을 주었기 때문이다. 이번에는 id 값에 0을 주입해보자.

 

 

id에 0을 주입했지만 AUTO_INCREMENT 설정에 의해 순차적으로 할당되어진 것을 확인해볼 수 있다. 이러한 결과는 0을 먼저 주입하고 NULL을 주입해도 동일한 결과가 나온다. 하지만 아래와 같아 자동 오름차순으로 데이터들이 정렬되다가 중간에 삭제되는 데이터들도 있을 것이다. 이때 새로운 데이터를 다시 주입하게 되면 삭제되어 비어진 데이터 위치에 채워지는 것이 아니라 마지막 인덱스 번호 다음으로 새로운 데이터가 주입되게 되어진다.

 

 

이때 관리 차원에서 중간에 비어진 곳을 메우고자 할 때 다음과 같은 방법으로 AUTO_INCREMENT 값을 재정렬할 수 있다.

 

SET @cnt = 0;

@cnt 값 0으로 설정

 

UPDATE 테이블명 SET 테이블명.칼럼명 = @cnt := @cnt + 1;

 

이후 최종적으로 AUTO_INCREMENT 값을 마지막 번호 + 1로 초기화시켜주면 된다.

 

ALTER TABLE 테이블명 AUTO_INCREMENT = (설정할 인덱스 번호);

 

좋았던 점

  • 어제 세션에 대해 학습해보고 싶어 나름 세션에 대해 학습 및 정리하고 오늘 그룹 리뷰 때 소모임원분들과 공유를 해보았는데, 다들 좋은 말씀 주셔서 감사드렸습니다.

 

 

아쉬웠던 점

  • 수면 패턴을 다시 되돌리기 위해 적게 수면하더라도 일찍 일어나려는 습관을 들이고 있습니다. 다만, 이로 인해 수면 시간이 부족해 학습에 집중하지 못했었던 점이 아쉬웠습니다.

 

 

이전 보다 개선되었던 점

  • 자칫 이성을 잃고 놀 수도 있었지만 마음을 다잡을 수 있었던 하루였습니다.