안녕하세요 기본 세팅 및 정리  [2] 를 작성하다가 컴퓨터를 꺼버리게 되어서 작업 내용이 날아갔네요 ㅜㅜ

 

다시 기억나는대로 작성 해야겠습니다.  관련 내용은 ( DB Tool 인 Dbeaver 와  외부접속을 위한 Mysql 8.0 서버 세팅 등..)

 

이번에는 서버 세팅후에 이것저것 하나씩 찾아 보았던 부분들을 하나의 페이지로 작성하려고 합니다. 현재 DB 를 학부생 시절 이후로 아예 지식이 전무한 상태에서 DB관련 작업 및 세팅을 해야되서 구글의 힘을 빌리고 있습니다. ㅜ 

 

간단 시연 후에는 전반적으로 DB자체에 대한 공부를 진행 하여 포스팅 하도록 하겠습니다.

 

Date ( Mysql Date 현재 시간 )

Test Automation Platform 을 제작하는 부분에 있어서 모든 액션의 단계에서는 언제 실행되었는지에 대한 값이 필요하기 때문에 Date라는 컬럼이 꼭 필요하여야 했습니다. 또한 절대 없으면 안되는 값이 였구요  그래서 이 값을 DB에서 제공하는 현재 시간 값을 자동으로 넣을지 혹은 node.js에서 new Date를 찍어서 DB에 넣어 줄지에 대한 선택이 필요 하였고 근처 지인 개발자들에게 질문 했을 시 답은 DB에 있는 기본 날짜를 사용하라 였습니다.  단순하게 보자면 DB에서 new Date를 기본값으로 찍히는게 Node.js 에서 매번 insert 할 때 마다 new Date를 찍는거보다 훨씬 빠르고 부하가 적기 때문입니다.

 

그래서 생성된 Date컬럼에 기본값으로 넣어 주기 위해서 아래의 SQL문을 작성 하였습니다.

ALTER TABLE [테이블명] MODIFY COLUMN [컬럼명] datetime DEFAULT current_timestamp NOT NULL;
ALTER TABLE status_table MODIFY COLUMN `date` datetime DEFAULT current_timestamp NOT NULL;
ALTER TABLE [테이블명] MODIFY COLUMN [컬럼명] datetime DEFAULT now() NOT NULL;
ALTER TABLE status_table MODIFY COLUMN `date` datetime DEFAULT now() NOT NULL;

 

저는 현재 Mysql 8.0 버전을 사용하고 있으며 위의 2개 SQL문 이 되는 점을 확인 하였습니다.

alter를 이용하여 date 컬럼에 기본 값으로 now() 혹은 current_timestamp 을 사용하며 해당 컬럼은 NOT NULL 으로 설정 합니다.

 

Insert 문을 이용하여서 테스트시 

정상적으로 기본 날짜로 들어가는 점이 확인되었습니다.

 

AutoIncrement  초기화

NO 컬럼을 이용하여서 DB의 autoincrement 을 사용하지만 개발 중 테스트 단계에서는 이부분은 초기화 할 일이 있었습니다. 당연히 이후로는 없어야 할 것 이구요

NO 컬럼에 autoincrement가 들어가있습니다. 테스트 중이니 추후에 는 꼭 초기화가 필요합니다.

1- 초기화 를 위해 아래의 SQL문을 사용 합니다. 

ALTER TABLE [테이블 명] AUTO_INCREMENT = [시작 값]
ALTER TABLE status_table AUTO_INCREMENT=0

 ALTER TABLE [테이블명] AUTO_INCREMENT=[시작값] 인데요

 

해당 SQL문 전에

위와같은 데이터가 있은 후에 다시 INSERT를 하게되면

보시는 것처럼 AUTO_INCREMENT 값이 초기화가 되어있지 않습니다.  이를 동작하게 하기위해선 시작하는 AUTO_INCREMENT 값보다 더 큰 값이 있으면 안되기 때문인데요 해당 데이터를 전부 날려보고 다시 작업합니다.

 

DELETE FROM [Table명]
DELETE FROM status_table

아직은 테스트 단계니 날려보고 다시 INSERT를 하게되면

0부터 시작하게 되어 1이 표시됨을 확인 할수 있습니다.

 

 

 

 

 

 

 

 

 

+ Recent posts