[프로그래머스 데브코스] TIL - 5주차 DAY4

방울·2024년 5월 11일
0

Workbench 시작

  • MySQL Workbench를 실행한 후, 상단 메뉴에서 Database > Connect to Database를 선택한다.

  • 연결 설정
    - Connection Method: Standard (TCP/IP)
    - Hostname: 127.0.0.1 또는 localhost
    - Port: MySQL 서버가 사용 중인 포트 (기본값은 3306)
    - Username: 데이터베이스 사용자 이름, 예: root
    - Password: 연결을 위한 비밀번호 (설정된 경우)


테이블 생성

Create Table 옵션을 사용하여 새 테이블을 정의한다다. 테이블의 이름과 필요한 컬럼을 추가한다.

Node.js와 DB 연동

Node.js 애플리케이션에서 MySQL 데이터베이스를 사용하려면 적절한 npm 패키지를 설치해야 한다. 여러 패키지들 중 npm: mysql2 패키지가 성능이 개선되어 사용이 권장된다.

  • 패키지 설치
    npm install --save mysql2

  • 데이터베이스 연결 및 쿼리 실행 예제

    // Get the client
    const mysql = require('mysql2');
    
    // Create the connection to database
    const connection = mysql.createConnection({
      host: 'localhost',
      user: 'root',
      database: 'test',
      password: 'password'
    });
    
    // A simple SELECT query
    connection.query(
      'SELECT * FROM `table` WHERE `name` = "Page" AND `age` > 45',
      function (err, results, fields) {
        console.log(results); // results contains rows returned by server
        console.log(fields); // fields contains extra meta data about results, if available
      }
    );

host, user, database, password 부분은 자신의 환경에 맞게 설정해주어야 한다.


코드 작성해서 실행해도 undefined 상태라 이유를 찾다가..
내 databse 이름이 대문자로 시작하는데, 소문자로 시작해서 그런 거였다. 이름은 대소문자 구분을 해야하나보다. 수정을 하고나니 제대로 results를 불러온다.

timestamp 설정

데이터베이스의 시간 설정을 Asia/Seoul로 변경하려면 다음 SQL 명령을 사용하면 된다.

  • 세션별 시간대 설정
    SET time_zone='Asia/Seoul';

  • 글로벌 시간대 설정 (권장하지 않음)
    SET GLOBAL time_zone='Asia/Seoul';
    글로벌 설정은 시스템 시간대 설정에 영향을 줄 수 있으므로 주의해서 사용해야 한다.

GLOBAL 설정을 빼줬더니 시간대가 제대로 적용이 된 것을 확인할 수 있다.

Node.js에서 MySQL 서버의 시간대와 일치하는 시간 정보를 얻으려면, 데이터베이스 연결 설정 시 dateStrings 옵션을 true로 설정해야 한다.

const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    database: 'test',
    password: 'password',
    dateStrings: true
  });

이 설정을 통해 서버로부터 반환된 날짜 및 시간 값이 문자열 형태로 처리되어, 로컬 시간대에 영향을 받지 않는다.


워크벤치를 정말 오랜만에 사용하는데 옛날 기억이 새록새록 떠올랐다. 그 때는 시간에 쫓겨 DB 연동할 때 완벽히 이해하지 못하고 구현하기 급급했는데, 이제 연동 방법도 제대로 파악하여 잘 사용할 수 있을 듯하다.

profile
방울방울

0개의 댓글