Node.js 7장 MYSQL

김동현·2022년 9월 19일
0

지금까지는 모든 데이터를 변수에 저장했음.
변수에 저장했다는 것은 컴퓨터 메모리에 저장했다는 뜻
서버가 종료되면 메모리가 정리되면서 저장했던 데이터도 사라진다
이것을 방지하기 위해서는 데이터베이스를 사용해야 함

7.1 데이터베이스란?

  • 데이터베이스는 관련성을 가지며 중복이 없는 데이터들의 집합
  • 데이터베이스를 관리하는 시스템을 DBMS(DataBase MAnagement System)(데이터베이스 관리 시스템)라고 부름

7.2 MYSQL 설치하기

MYSQL 설치 후 CMD에 경로 (C:\Program Files\MySQL\MySQL Server 8.0\bin) 접속 후

  • mysql -h localhost -u root -p 입력
  • MYSQL 설치 때 입력한 비밀번호를 입력

7.4 데이터베이스 및 테이블 생성하기

  • 데이터베이스 생성하기
    • CREATE SCHEMA 'nodejs' DEFAULT CHARACTER SET utf8;
    • use nodsjs;
  • 테이블 생성하기
    • mysql> CREATE 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,
      -> created_at DATETIME NOT NULL DEFAULT now(),
      -> PRIMARY KEY(id),
      -> UNIQUE INDEX name_UNIQUE (name ASC))
      -> COMMENT = '사용자 정보'
      -> DEFAULT CHARACTER SET = utf8
      -> ENGINE = InnoDB;
      • 한 줄에 하나씩 콤마(,)로 구분 해 컬럼들을 만들었습니다.
      • 각각의 컬럼 이름 옆에는 자료형이 있습니다
        • INT : 정수형 (소수를 저장하려면 FLOAT나 DOUBLE 자료형을 사용)
        • VARCHAR(자릿수) or CHAR(자릿수) : CHAR - 고정길이 VARCHAR - 가변길이
        • TEXT : 수백 자 이상의 문자열을 처리
        • TINYINT : -128 ~ 127까지의 정수
        • DATATIME : 날짜와 시간에 대한 정보를 담고있다
  • 사용자의 댓글을 저장하는 테이블
    • mysql> CREATE TABLE nodejs.comments(
      -> id INT NOT NULL AUTO_INCREMENT,
      -> commenter INT NOT NULL,
      -> comment VARCHAR(100) NOT NULL,
      -> created_at DATETIME NOT NULL DEFAULT now(),
      -> PRIMARY KEY(id),
      -> INDEX commenter_isx (commenter ASC),
      -> CONSTRAINT commenter
      -> FOREIGN KEY (commenter)
      -> REFERENCES nodejs.users (id)
      -> ON DELETE CASCADE
      -> ON UPDATE CASCADE)
      -> COMMENT = '댓글'
      -> DEFAULT CHARSET=utf8mb4
      -> ENGINE=InnoDB;

DESC users;

SHOW TABLES;

7.5 CRUD 작업하기

  • Create(생성)

    • 데이터를 생성해서 데이터베이스에 넣는 작업
    • INSERT INTO nodejs.users (name, age, married, comment) VALUES ('zero', 24, 0, '자기소개1');
    • INSERT INTO nodejs.users (name, age, married, comment) VALUES ('nero', 32, 1, '자기소개2');
    • INSERT INTO nodejs.comments (commenter, comment) VALUES (1, '안녕하세요. zero의 댓글입니다');
      • INSERT INTO [테이블명] ([컬럼1], [컬럼2], ...) VALUES ([값1], [값2], ...)
  • Read(조회)

    • 데이터베이스에 있는 데이터를 조회하는 작업

    • SELECT * FROM nodejs.users;

    • SELECT * FROM nodejs.comments;

    • SELECT name, married FROM nodejs.users;

      • 이름과 결혼 여부만 조회하고 싶을 때
    • SELECT name, age FROM nodejs.users WHERE married = 1 AND age > 30;

      • WHERE문을 이용한 특정 조건을 가진 데이터 조회 AND로 조건을 묶어줄 수 있다 (결혼을 했고 나이가 30세 이상인 사용자 조회)
    • SELECT id, name FROM nodejs.users WHERE married = 0 OR age > 30;

      • OR는 조건들 중 어느 하나라도 만족하는 데이터를 찾음
    • SELECT id, name FROM nodejs.users ORDER BY age DESC;

      • ORDER BY [컬럼명][ASC|DESC] 키워드를 사용하면 정렬 가능
        • ACD : 오름차순
        • DESC : 내림차순
    • SELECT id, name FROM nodejs.users ORDER BY age DESC LIMIT 1;

      • 조회할 로우 개수 설정 가능 LIMIT [숫자]
    • SELECT id, name FROM nodejs.users ORDER BY age DESC LIMIT 1 OFFSET 1;

      • 로우 개수를 설정하면서 몇 개를 건너뛸지 설정 가능 OFFSET [건너뛸 숫자]
  • Update(수정)

    • 데이터베이스에 있는 데이터를 수정하는 작업
    • UPDATE nodejs.users SET comment = '바꿀 내용' WHERE id = 2;
      • UPDATE [테이블명] SET [컬럼명=바꿀 값] WHERE [조건]
  • Delete(삭제)

    • 데이터베이스에 있는 데이터를 삭제하는 작업
    • DELETE FROM nodejs.users WHERE id = 2;
      • DELETE FROM [테이블명] WHERE [조건]
profile
해보자요

0개의 댓글