[DB]MySQL&TypeORM&DTO

장여진·2022년 4월 2일
0
post-thumbnail

1.MySQL🤔

  • 접속방법: 설치완료 후 터미널에서mysql -u root -p입력 후 설치시 설정한 비밀번호 입력
  • 대표적인 관계형 데이터베이스!
    [기본 문법]

데이터베이스 생성: CREATE DATABASE 데이터베이스이름
데이터베이스 삭제 : DROP DATABASE 데이터베이스이름
데이터베이스의 문자 집합이나 콜레이션을 변경:
ALTER DATABASE 데이터베이스이름 CHARACTER SET=문자집합이름
ALTER DATABASE 데이터베이스이름 COLLATE=콜레이션이름
데이터베이스 선택: USE 데이터베이스이름
테이블 생성: CREATE TABLE 테이블 이름(필드이름1 필드타입1, 필드이름2 필드타입2)
테이블 조회: SELECT*FROM 테이블명
테이블에 필드 추가: ALTER TABLE 테이블이름 ADD 필드이름 필드 타입
테이블 삭제: DROP TABLE 테이블이름
테이블에 레코드 추가:
INSERT INTO 테이블이름(필드이름1, 필드이름2,...)VALUES (데이터값1, 데이터값2, ...)
레코드 내용 수정:
UPDATE 테이블이름 SET 필드이름1=데이터값1, 필드이름2=데이터값2,.. WHERE 필드이름=데이터값
레코드 삭제: DELETE FROM 테이블이름 WHERE 필드이름=데이터값
테이블 조회: SELECT 필드이름 FROM 테이블이름 [WHERE 조건]

  • MySQL은 관계형데이터베이스이므로 ORM을 사용함

2.ORM🤷‍♀️

1) 먼저 ORM이 무엇일까?

  • ORM은 Object-relational mapping으로 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑!

2) 사용하는 이유

  • 객체 지향 프로그램은 클래스, 관계형 데이터베이스는 테이블을 사용하는데
    객체 모델과 관계형 모델 간의 상호작용을 위해 ORM을 사용!

3.TypeORM

  • ORM의 대표적인 종류로 DB와 객체를 자동으로 매핑하는 역할
  • yarn add @nestjs/typeorm typeorm@0.2 mysql2 설치

[Entity 예제]

import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';

@Entity()
export class Board {
  @PrimaryGeneratedColumn('increment') // 자동으로 1씩증가
  number: number;

  @Column()
  writer: string;

  @Column()
  title: string;

  @Column()
  contents: string;
}

[app.module.ts 파일 예제]

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: 'root',
      database: 'test',
      entities: [],
      synchronize: true,
    }),
  ],
})
export class AppModule {}

4.DTO📃

  • Data Transfer Object
  • 데이터 전송 객체 (=네트워크 간에 데이터를 어떤 식으로 보낼지를 정의한 객체)
  • 로직을 가지지 않는 데이터 객체
  • getter/setter메소드만 가진 클래스
  • 사용이유: 데이터 유효성 체크에 효율적, 안정적인 코드작성 가능

[DTO 예제]

import { Field, InputType } from '@nestjs/graphql';

@InputType()
export class CreateBoardInput {
  @Field(() => String)
  writer: string;

  @Field(() => String)
  title: string;

  @Field(() => String)
  contents: string;
}

공부하며 작성하고 있는 블로그입니다.
잘못된 내용이 있을 수 있으며 혹시 있다면 댓글 달아주시면 감사하겠습니다 😊

0개의 댓글