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로 선택한다.
'Node.js' 카테고리의 다른 글
데이터베이스 - 시퀄라이즈 ORM 설정 (1) | 2025.01.17 |
---|---|
데이터베이스 - MySQL CRUD 작업하기 (0) | 2025.01.16 |
데이터베이스 - MySQL 설치 (0) | 2025.01.16 |
익스프레스 웹 서버 만들기 - 라우터 분리하기 (0) | 2025.01.15 |
익스프레스 웹 서버 만들기 - dotenv (0) | 2025.01.15 |