📚요약
지난 시간은 테이블 생성 실습을 통해 여러 가지를 실습해 봤습니다. 이번 시간에는 미니 프로젝트(Library)를 실제 데이터베이스에 테이블을 만들고 서버에 연결해 보겠습니다.
📖미니 프로젝트(Library) 실습
지금까지는 테이블을 그렸던 것을 조금만 변경하고 실제로 서버와 연결해 보겠습니다.
📄workbench와 docker mariadb 연동
docker desktop을 동작시키고 설정해 둔 host, port, username(추가한 유저가 없다면 root), password를 작성하고 test connection 버튼을 누르면 연결을 테스트해 볼 수 있습니다.


🍯tip! 연동하다가 다 맞게 한 것 같은데 연동이 안되면 다음 글을 참고해 보면 해결될 수 있습니다.
📄스키마 및 테이블 생성
연동이 잘 되었다면 이제 스키마와 테이블을 생성해 보겠습니다. 기존 사서 테이블에 id를 email로 사용하고 id는 숫자로 부여하는 방식으로 진행하겠습니다. 전화번호인 ph_num도 추가했습니다.
책 테이블
| id | name | publisher | publish_date | librarian_id |
| 1 | books | pbBook | 2024.05.07 | nulzi123 |
| 2 | boks | pbbooK | 2020.05.07 | nulzi123 |
사서 테이블
| id | pw | name | ph_num | |
| 1 | nulzi123@mail.com | 1234 | nulzi |
이제 스키마와 테이블들을 생성해 보겠습니다. 테이블은 기존에 create문에서 작성하던 것보다 쉽게 작성할 수 있습니다. 체크 박스를 통해서 제약 조건도 설정할 수 있습니다.


책 테이블의 경우 외래키까지 설정해줘야 하는데 외래키도 Foreign Keys 탭으로 들어가서 쉽게 작업할 수 있습니다.


📄테이블 행(레코드, 튜플) 추가, 수정, 삭제
CLI로 복잡하게 입력했던 때와 달리 조회를 해서 테이블의 데이터를 추가하거나 수정, 삭제를 손쉽게 할 수 있습니다.


🍯tip! NULL값이 들어갈 수 있거나 DEFAULT, AUTO_INCREMENT를 설정해 둔 경우에는 칸을 비우고 동작시키면 자동으로 값이 생성된다.
📖Node.js와 연동하기
이번에는 mysql2 패키지를 활용해 볼 예정입니다. 시작 예제의 경우 Promise 방식과 Callback 방식이 있는데, 지금까지 Callback 방식으로 배웠기 때문에 Callback으로 진행합니다.
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
port: 3307,
user: "root",
password: "root",
database: "Library",
dateStrings: true,
});
connection.query("SELECT * FROM `librarians`", function (err, results, fields) {
console.log(results);
});
전에 연결할 때 사용했던 코드와 크게 다른 점은 없습니다.
📄timezone(시간지역) 설정하기
하지만 시간을 표시하는 경우에는 뭔가 이상함을 느낄 수 있습니다. 왜냐하면 workbench에서 사용하는 시간이 세계 표준 시간이기 때문입니다. 저희는 서울 시간으로 바꿔서 사용해야 합니다.
// 기존 시간 세팅 확인하기
SELECT @@global.time_zone, @@session.time_zone;
// 기존 세팅은 둘의 값이 모두 SYSTEM 이다
SET GLOBAL time_zone = 'Asia/Seoul';
SET time_zone = 'Asia/Seoul';
설정을 변경하면 조회한 테이블에서도 자연스럽게 값이 바뀐 것을 확인할 수 있습니다. 하지만 Node.js에서 보이는 시간은 그대로 일 텐데 이를 바꾸기 위한 코드가 createConnection() 내부의 'dateStrings : true'입니다. 기존에는 시간이 '2024-05-09T08:47:47.000Z'으로 나오는 불편함이 있습니다. 설정을 해주게 되면 '2024-05-09 17:47:47' 원하는 문자열로 잘 나오는 것을 확인할 수 있습니다.
해당 코드는 github에서 확인할 수 있습니다.
https://github.com/nulzi/ProgrammersSchool/tree/main/NORMAL-LIBRARY
ProgrammersSchool/NORMAL-LIBRARY at main · nulzi/ProgrammersSchool
프로그래머스 데브코스에서 학습하는 것들을 모아두는 레포. Contribute to nulzi/ProgrammersSchool development by creating an account on GitHub.
github.com
다음 시간에 계속...
출처 & 참고
김송아 강사님의 강의
'개발 > 프로그래머스 데브코스' 카테고리의 다른 글
| 프로그래머스 6주차 회고 with. TS 웹 풀스택 (0) | 2024.05.13 |
|---|---|
| 프로그래머스 데브코스 25일차 with. TS 웹 풀스택 (0) | 2024.05.10 |
| 데브코스 스터디(알고리즘, 코테) 5회차 (0) | 2024.05.09 |
| 프로그래머스 데브코스 23일차 with. TS 웹 풀스택 (0) | 2024.05.09 |
| 프로그래머스 5주차 회고 with. TS 웹 풀스택 (0) | 2024.05.07 |