본문 바로가기
Node.js

데이터베이스 - MySQL 테이블 생성

by Programmer.Junny 2025. 1. 16.

1. 데이터베이스 생성

1.1. MySQL 접속

터미널에서 mysql -u root -p 를 입력 후 비밀번호를 입력하면 접속된다.

2. 데이터베이스 생성

CREATE SCHEMA nodejs DEFAULT CHARACTER SET utf8;

위와 같이 입력하면 nodejs 데이터베이스(스키마)을 생성할 수 있다.

3. 테이블 생성

CREATE TABLE nodejs.user (
    -> id INT NOT NULL AUTO_INCREMENT,
    -> name VARCHAR(20) 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;

-> id INT NOT NULL AUTO_INCREMENT

  • 자동 증가하는 고유한 값 id (컬럼)

-> name VARCHAR(20) NOT NULL

  • 이름 20자 이하 필수 생성 (컬럼)

-> married TINYINT NOT NULL

  • 결혼 여부 필수 생성 (컬럼)

-> comment TEXT NULL

  • 댓글 글자 제한없음 NULL 허용 (컬럼)

-> created_at DATETIME NOT NULL DEFAULT now()

  • 생성일, 날짜(시간포함) 필수 생성, 기본 생성 (컬럼)

-> PRIMARY KEY(id)

  • 기본키, 고유하게 식별하는 데 사용되는 하나 이상의 열 (컬럼 옵션)

-> UNIQUE INDEX name_UNIQUE (name ASC))

  • name 컬럼에 유니크 인덱스(동일 값 허용X) 설정 (컬럼 옵션)

-> COMMENT = '사용자 정보'

  • 테이블 설명

-> DEFAULT CHARACTER SET = utf8

  • 테이블 기본문자 인코딩

-> ENGINE = InnoDB;

  • 테이블 저장 엔진
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_idx (commenter ASC),				
    -> CONSTRAINT commenter								
    -> FOREIGN KEY (commenter)							
    -> REFERENCES nodejs.users (id)						
    -> ON DELETE CASCADE								
    -> ON UPDATE CASCADE)								
    -> COMMENT = '댓글'
    -> DEFAULT CHARSET=utf8mb4
    -> ENGINE = InnoDB;

-> id INT NOT NULL AUTO_INCREMENT

  • 자동 증가하는 고유한 값 id (컬럼)

-> commenter INT NOT NULL

  • 댓글단 사람의 id (컬럼)

-> comment VARCHAR(100) NOT NULL

  • 댓글 100글자 이하 필수 생성 (컬럼)

-> created_at DATETIME NOT NULL DEFAULT now()

  • 생성 날짜(시간포함) 필수 생성 기본 값으로 현재 날짜 (컬럼)

-> PRIMARY KEY(id)

  • 기본키, 고유하게 식별하는 데 사용되는 하나 이상의 열 (컬럼 옵션)

-> INDEX commenter_idx (commenter ASC)

  • 인덱스, 특정 열에 검색속도 향상을 위한 설정 (컬럼 옵션)

-> CONSTRAINT commenter

  • 외래키 제약 조건 (컬럼 옵션)

-> FOREIGN KEY (commenter)

  • 외래키 다른 테이블에 참조할 컬럼 (컬럼 옵션)

-> REFERENCES nodejs.users (id)

  • 외래키가 참조하는 대상 테이블과 컬럼 (컬럼 옵션)

-> ON DELETE CASCADE

  • 참조된 데이터가 삭제될 때 연관된 다른 테이블의 데이터도 삭제할지 여부 (컬럼 옵션)

-> ON UPDATE CASCADE)

  • 참조된 데이터가 변경될 때 연관된 다른 테이블의 데이터도 변경할지 여부 (컬럼 옵션)

-> COMMENT = '댓글'

  • 테이블 설명

-> DEFAULT CHARSET=utf8mb4

  • 테이블 기본문자 인코딩 (utf8mb4는 이모지 사용가능)

-> ENGINE = InnoDB;

  • 테이블 저장 엔진

컬럼 옵션들

1. 자료형 (Data Types)

자료형 설명
INT 정수형 데이터. 소수점이 필요하면 FLOAT 또는 DOUBLE 사용.
VARCHAR(n) 가변 길이 문자열 (최대 n길이).
CHAR(n) 정 길이 문자열. 지정된 길이만큼 문자열을 입력해야 함.
TEXT 긴 문자열을 저장 (수백 자 이상의 문자열).
TINYINT -128부터 127까지의 정수. BOOLEAN 역할로 사용 가능 (0 또는 1).
DATETIME 날짜와 시간을 저장 (기본적으로 YYYY-MM-DD HH:MM:SS 포맷).
DATE 날짜만 저장 (예: YYYY-MM-DD).
TIME 시간만 저장 (예: HH:MM:SS).

2. 옵션 (Options)

옵션 설명
AUTO_INCREMENT 자를 자동으로 증가시켜 고유값을 부여 (주로 id 컬럼에 사용)
UNSIGNED 음수 값을 허용하지 않음 (0 이상만 저장)
DEFAULT 컬럼 값이 없으면 기본값을 자동으로 입력 (예: DEFAULT now())
NOT NULL 해당 컬럼에 빈 값(NULL)을 허용하지 않음
PRIMARY KEY 해당 컬럼을 테이블의 고유 식별자로 설정
UNIQUE INDEX 해당 컬럼의 값이 고유해야 함. 중복 값 저장 불가
COMMENT 테이블이나 컬럼에 대한 설명을 추가 (선택적)
ENGINE 테이블의 저장 엔진 설정 (InnoDB, MyISAM 등)

 

4. MySQL Workbench 로 테이블 생성

MySQL Workbench에서 nodejs 스키마의 Table항목에 오른쪽 마우스를 누르면 나오는 'Create Table...' 을 클릭한다.

기본적으로 직접 SQL을 써넣은 항목과 거의 같으므로 잘 보고 선택한다.

    -> UNIQUE INDEX name_UNIQUE (name ASC))

위에 대한 설정은 Workbench 아래쪽에 'Indexes' 탭을 누른 후 nameUnique를 입력 후 Type을 'Unique'로 설정한다. 그리고 오른쪽에 'name'을 선택 후 ASC로 선택한다.

최근댓글

최근글

skin by © 2024 ttuttak