SQL 문법을 잘 몰라도 Node.js에서는 Sequelize CLI를 사용해서 쉽게 테이블 등을 생성할 수 있다.
※ Sequelize: Oracle, Postgres, MySQL, MariaDB, SQLite 등을 사용할 수 있게 해주는 Node.js 및 TypeScript용 모던 ORM
테이블 뿐만 아니라 seed 등을 넣어 더미 데이터를 넣어볼 수도 있다. 예를 들어 로그인 기능이 있는 웹이면 ID: test, 비밀번호: 0000 이런 식으로 DB에 넣어두고 회원가입부터 안 하고 로그인 기능만 테스트해볼 수 있는 것이다.
우선 MySQL CLI를 열고 사용할 데이터베이스를 생성한다. (딱 여기까지만 SQL 문법을 사용한다)

다음으론 sequelize-cli와 sequelize, mysql2를 설치한다.
npm install -g sequelize-cli
npm install sequelize mysql2
그 후 테이블을 생성한다.
아래 스키마(dbdiagram.io에서 작성)을 토대로 명령어를 작성하였다. id, createdAt, updatedAt은 sequelize가 알아서 만든다.
※varchar은 string으로 적어야 한다.

sequelize init
sequelize-cli model:generate --name Session --attributes status:string
sequelize-cli model:generate --name Message --attributes session_id:integer,content:text
그럼 이렇게 폴더랑 파일들이 생긴다.

우선 config/config.json에서 사용할 DB 이름과 비밀번호 등을 수정한다.

다음으로, Session과 Message 테이블이 일대다 관계이므로 models/message.js와 models/session.js을 수정해주어야 한다.
session.js

message.js

마지막으로 migrations 폴더의 create-message.js에 설정한 관계를 추가한다.
onDelete: 'CASCADE'는 Session이 삭제되면 거기에 딸린 Message 테이블 내용들도 죄다 삭제한다는 의미이다.

sequelize-cli db:migrate를 실행하여 MySQL에 실제로 적용한다.

MySQL Cli에서 확인해보면 실제로 생성되었음을 확인할 수 있다.

이제 sequelize 문법을 이용해서 마음껏 코딩하면 된다.
더미 데이터가 필요하다면 시드 파일을 생성하면 된다.
아래 명령어를 이용해 파일을 만든다.
sequelize-cli seed:generate --name demo-session-messages
파일이 생성됐으면 넣을 데이터를 작성한다. 그냥 ~~ 한 거 넣고 싶다고 챗지피티한테 말하면 잘 써준다.

아래 명령어를 입력해서 실제로 DB에 데이터를 저장한다.
sequelize-cli db:seed:all
오류 때문에 세션을 4번이나 삽입해서 session_id가 4이긴 한데 아무튼 잘 삽입되었다.

만약 새 필드를 추가해야 하는 상황이 오면 아래 명령어를 이용해 새 마이그레이션 파일을 만든다.
sequelize-cli migration:generate --name add-type-to-messages
나같은 경우는 type 열을 새로 추가해야 했다.

그 후 아래 명령어를 실행해 DB에 적용한다.
sequelize-cli db:migrate
마지막으로 server.js 파일에 데이터베이스 연결 부분을 넣고 실행시켜 본다.

잘 연결됐음을 확인할 수 있다.

아직 DB를 잘 모를 땐 Sequelize, Prisma(TypeScript)같은 ORM을 써서 DB를 쉽게 사용할 수 있다. 나도 DB를 잘 몰라서 열심히 시퀄라이즈로 코딩하는 중이다...
그러나 한 번은 날을 잡고 SQL 쿼리에 대해 상세히 배워야 한다. 현업에서 ORM을 안 쓸 수도 있고, 백날 천날 ORM 써봤자 DB에 대한 이해도가 크게 증가하는 것은 아니기 때문이다. 실제로 나도 Sequelize, JPA 등을 써서 프로젝트를 5개 이상 진행했지만 아는 SQL 관련이라고는 SELECT * FROM [테이블 이름], SHOW DATABASES, CREATE DATABASE [이름] 이런 거 뿐이다. join 이런거 하나도 모른다ㅜㅜ