[NodeJS] Database

Elen li·2022년 1월 7일
0

데이터 베이스는 관련성을 가지며 중복이 없는 데이터들의 집합이다.
이러한 데이터베이스를 관리하는 시스템을 DBMS라고 부르며 계속 데이터가 보존되므로 서버 종료 여부와 상관없이 데이터를 지속적으로 사용할 수 있다.

1. 데이터베이스 생성하기

  • 예약어는 대문자로 쓰는 것 추천 (nodejs와 같은 사용자가 직접 만든 이름과 구분하기 위해서)
  • 예약어 끝에는 세미콜론(;)을 붙혀야 실행됨

CREATE SCHEMA [데이터베이스 명];

//DEFAULT CHARCTER SET utf8: 한글 사용
mysql> CREATE SCHEMA `nodejs` DEFAULT CHARCTER SET utf8;
mysql> use nodejs;

2. 테이블

  • 테이블이란 데이터가 들어갈 수 있는 틀을 의미하며, 테이블에 맞는 데이터만 들어갈 수 있음.
  • 테이블 생성
    CREATE TABLE [데이터베이스 명, 테이블 명];
  • 테이블 확인
    DESC [테이블 명];
  • 테이블 제거
    DROP TABLE [테이블명]
  • 테이블 보기
    SHOW TABLES;
mysql> CREATEJ TABLE nodejs.users(
    -> id INT NOT NULL AUTO_INCREMENT,
    -> name VARCHAR(20) NOT NULL,
    -> age INT UNSIGNED NOT NULL,
    -> married TINYINT NOT NULL,
    -> comment TEXT NULL,
    -> create_at DATETIME NOT NULL DEFAULT now(),
    -> PRIMARY KEY(id),
    -> UNIQUE INDEX name_UNIQUE (name ASC))
    -> COMMENT = '사용자 정보'
    -> DEFAULT CHARACTER SET = utf8    
    -> ENGINE = InnoDB;    

2-1. 컬럼 자료형

  • INT: 정수 (소수까지 저장하고 싶으면 FLOAT 또는 DOUBLE 자료형을 사용)
  • VARCHAR(자릿수): 가변 길이
    • VARCHAR(10): 0~10인 문자열 가능
  • CHAR(자릿수): 고정 길이
    • CHAR(10): 반드시 길이가 10인 문자열
  • TEXT: 긴 글을 쓸 때 사용
    • VARCHAR: 수 백자 이내의 문자열
    • TEXT: 그 이상
  • TINYINT: -128 ~ 127까지의 정수를 저장할 때 사용. 1 또는 0만 저장한다면 Boolean과 같은 역할 가능
  • DATETIME: 날짜와 시간에 대한 정보만 담는 TIME 자료형도 있음.

2-2. 컬럼 옵션

  • NULL or NOT NULL: 빈 칸을 허용할지 여부
  • AUTO_INCREMENT: 숫자를 저절로 올림. id 컬럼에 설정됨
  • UNSINGED: 숫자 자료형에 적용되는 옵션. 음수 무시
    • INT 숫자 자료형은 기본적으로 음수 범위 지원
    • FLOAT / DOUBLE에는 UN 적용 불가능
  • ZEROFILL: 숫자의 자리가 고정되어 있을 때 사용가능. 비어있는 숫자의 자리에 0 입력
    • INT(4) -> 0001로 비어있는 자릿수에 0으로 채워줌
  • DEFAULT now(): 데이터베이스 저장 시 해당 컬럼에 값이 없으면 MySQL이 기본값을 대신 넣음. now()는 현재 시간 저장
    • now() 대신 CURRENT_TIMESTAMP 가능
  • 해당 컬럼이 기본 키인 경우 PRIMARY_KEY 옵션 설정
    • PRIMARY_KEY란 로우를 대표하는 고유한 값 (id)
  • UNIQUE INDEX: 해당 값이 고유해야 하는지에 대한 옵션

2-3. 테이블 자체 설정

  • COMMENT: 테이블에 대한 보충 설명. 이 테이블이 무슨 역할을 하는지 적어두며 필수 아님
  • DEFAULT CHARACTER SET: utf8로 설정하지 않으면 한글이 입력되지 않으므로 필수
  • ENGINE: 엔진을 무엇으로 사용할 것인가

2-4. 외래키 (foreign key)

  • 다른 테이블의 기본키를 저장하는 컬럼

CONSTARINT [제약조건명] FOREIGN KEY [컬럼명] REFERENCES [참고하는 컬럼명]

2-5. CASCADE

ON DELETE CASCADE
ON UPDATE CASCADE
사용자 정보가 수정되거나 삭제되면 그것과 연결된 댓글 정보도 같이 수정하거나 삭제한다는 뜻

profile
Android, Flutter 앱 개발자입니다.

0개의 댓글