경일게임아카데미 멀티 디바이스 메타버스 플랫폼 개발자 양성과정 20220919 2022/04/04~2022/12/14

Jinho Lee·2022년 9월 19일
0

2022.09.19 경일 메타버스 25주차 1일 수업내용. Node.js - MySQL

MySQL

  • 자료 : 교과서 “Node.js 교과서” ch. 7 MySQL p. 277

데이터베이스

  • p. 278 ~ 279

  • 관련성을 가지며 중복이 없는 데이터들의 집합

  • DBMS (DataBase Management System; 데이터베이스 관리 시스템)

    • 데이터베이스를 관리하는 시스템

    • 서버의 저장 매체에 데이터를 저장하여 서버 종료 여부와 상관없이 데이터를 지속적으로 사용 가능

    • 여러 사람이 동시에 사용 가능

      • 각각 다른 권한 부여 가능
    • RDBMS (Relational DBMS; 관계형 DBMS)

      • Oracles, MySQL, MSSQL 등

      • SQL이라는 언어로 데이터를 관리

MySQL 설치, 이용

  • p. 279 ~ 286

    • 윈도우 기준
  • mysql -h localhost -u root -p

    • 명령 프롬프트를 통해 MySQL에 접속

    • -h 뒤에 접속 주소

    • -u 뒤에 사용자명

    • -p : 비밀번호를 사용하겠다는 표시

데이터베이스 및 테이블 생성

  • p. 294 ~ 305

  • MySQL 기준

데이터베이스 생성

  • 데이터베이스 생성 명령어

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

    • MySQL에서 데이터베이스와 스키마는 같은 개념

    • 위 명령어와 같이 MySQL이 기본적으로 아는 구문을 예약어라 한다.

      • 예약어는 대문자로 기입을 권장
        → 사용자 지정 식별자(소문자)와의 구별을 위함
  • use [데이터베이스명];으로 앞으로 지정한 데이터베이스를 사용하겠다는 것을 알린다.

  • SQL 구문은 세미콜론(;)을 붙여야 실행

  • 워크벤치 사용 : p. 295 ~ 296

테이블 생성

  • 테이블 : 데이터가 들어갈 수 있는

    • 테이블에 맞는 데이터만 들어갈 수 있다.

    • 세로줄 - 컬럼 (Column)

    • 가로줄 - 로우 (Row)

    • 한 칸 - 필드 (Field)

    • 미리 컬럼(종류)을 정의하고, 컬럼에 맞춰 데이터를 넣는다.

  • 테이블 생성 명령어

    • CREATE TABLE [데이터베이스명.테이블명](컬럼1, 컬럼2, ... )

      • use [데이터베이스명]을 실행했다면 데이터베이스명.은 생략 가능

      • 콤마(,)로 구분해 컬럼을 만든다.

  • 컬럼의 자료형

    1. INT

      • 정수

      • INT(자릿수)

        • 정수의 자릿수 고정
    2. FLOAT, DOUBLE

      • 부동소수점 수, 소수
    3. CHAR(자릿수)

      • 고정 길이 문자열

      • 자릿수에 미달하는 문자열이면 부족한 자릿수만큼 스페이스로 채운다.

    4. VARCHAR(자릿수)

      • 가변 길이 문자열

        • 자릿수 이하 길이의 문자열
      • 보통 수백 자 이내의 문자열을 처리

    5. TEXT

      • 긴 글을 저장

      • VARCHAR 이상 길이의 문자열 (수백 자 이상) 처리

    6. TINYINT

      • -128 ~ 127까지의 정수

      • 1 또는 0만 저장한다면 불값(Boolean) 역할 가능

    7. DATETIME

      • 날짜와 시간에 대한 정보
      1. DATE

        • 날짜 정보
      2. TIME

        • 시간 정보
  • 자료형 옵션

    1. NULL / NOT NULL

      • 빈칸을 허용할지 여부
    2. AUTO_INCREMENT

      • 숫자를 데이터 개수에 따라 자동으로 올린다.
    3. UNSIGNED

      • 숫자 자료형에 적용되는 옵션

      • 음수 무시

        • FLOAT / DOUBLE 적용 불가
    4. ZEROFILL

      • 숫자의 자릿수가 고정되어 있을 때 사용 가능

      • 비어있는 자리를 0으로 채운다.

        • ex. id INT(4) ZEROFILL, id = 10001
    5. DEFAULT

      • 저장 시 해당 컬럼에 값이 없을 경우 기본값

      • now() / CURRENT_TIMESTAMP

        • 현재 시각을 기록
    6. PRIMARY KEY

      • 사용 : PRIMARY KEY()

        • ex. PRIMARY KEY(id)
      • 해당 컬럼이 기본 키

        • 기본 키 - 로우를 대표하는 고유 값, 로우를 구별할 고유 식별자
    7. UNIQUE INDEX

      • 사용 : UNIQUE INDEX [인덱스명] ([컬럼명] 옵션)

        • ex. UNIQUE INDEX name_UNIQUE (name ASC)
      • 해당 값이 고유함

      • 컬럼을 인덱스로, 옵션에 따라 기억

        • 옵션 : ASC (Ascending; 오름차순) / DESC (Descending; 내림차순)
      • PRIMARY KEYUNIQUE INDEX를 포함

      • PRIMARY KEYUNIQUE INDEX는 데이터베이스가 별도로 컬럼을 관리
        ⇒ 조회 시 속도가 빨라진다.

  • 테이블 설정

    1. COMMENT

      • 테이블에 대한 보충 설명
    2. DEFAULT CHARACTER SET

      • 유니코드 인코딩 - utf8
    3. ENGINE

      • MyISAM, InnoDB

      • 자료에서는 InnoDB 사용

  • 테이블 확인 명령어

    • DESC [테이블명]
  • 테이블 제거 명령어

    • DROP TABLE [테이블명]
  • 워크벤치 사용 : p. 300 ~ 302

외래 키 (Foreign Key)

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

  • 외래 키 지정 명령어

    • CONSTRAINT [제약조건명] FOREIGN KEY [컬럼명] REFERENCES [참고하는 컬럼명]
  • ON UPDATE / ON DELETE

    • 이벤트 - 수정 / 삭제

    • 옵션 CASCADE

      • 상태 동기화 - 참고한 정보가 수정 / 삭제되면 연결된 정보도 수정 / 삭제한다.
  • 테이블 전체 리스트 표시 명령어

    • SHOW TABLES
  • 워크벤치 사용 : p. 304 ~ 305

CRUD 작업

  • p. 306 ~ 314

  • CRUD

    • Create / Read / Update / Delete의 첫 글자를 모은 두문자어

    • 데이터베이스에서 많이 수행하는 네 가지 작업

Create (생성)

  • 데이터를 생성해서 데이터베이스에 넣는 작업

  • 명령어

    • INSERT INTO [테이블명] ([컬럼1], [컬럼2], …) VALUES ([값1], [값2], …)
  • 워크벤치 사용 : p. 307 ~ 309

Read (조회)

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

  • 명령어

    • 모든 데이터를 조회

      • SELECT * FROM [테이블명]
    • 특정 컬럼만 조회

      • SELECT [컬럼명1], [컬럼명2], ... FROM [테이블명]
    • 특정 조건의 데이터만 조회

      • WHERE 절 사용 → SQL 끝

        • AND, OR로 조건을 묶을 수 있다.

        • SELECT [컬럼명1], [컬럼명2], ... FROM [테이블명] WHERE [조건]

          • ex. SELECT name, age FROM nodejs.users WHERE married = 1 OR (age > 30 AND age < 45);
    • 데이터 정렬 후 조회

      • ORDER BY [컬럼명] [ASC | DESC] 키워드 → SQL 끝

      • ex. SELECT id, name FROM nodejs.users ORDER BY age DESC;

    • 조회할 로우 개수 설정

      • LIMIT [숫자] 키워드 → SQL 끝

      • ex. SELECT id, name FROM nodejs.users ORDER BY age DESC LIMIT 1;

    • 로우 개수 설정과 함께 몇 개를 건너뛸지 설정

      • 게시판 등의 페이지네이션 기능 구현에 유용

      • OFFSET [건너뛸 숫자] 키워드 → SQL 끝

      • ex. SELECT id, name FROM nodejs.users ORDER BY age DESC LIMIT 1 OFFSET 1;

  • 워크벤치 사용 : p. 312

Update (수정)

  • 데이터베이스에 있는 데이터를 수정하는 작업, 덮어쓰기

  • 명령어

    • UPDATE [테이블명] SET [컬럼명=바꿀 값] WHERE [조건]
  • 워크벤치 사용 : p. 313

Delete (삭제)

  • 데이터베이스에 있는 테이터를 삭제하는 작업

  • 명령어

    • DELETE FROM [테이블명] WHERE [조건]
  • 워크벤치 사용 : p. 314

0개의 댓글