mysql에서 테이블을 생성하는 방법을 예제와 함께 정리해본다. 자세한 코드 설명은 유튜브 영상으로 남겨두었다.
기본 테이블인 users를 생성하는 코드이다.
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;전체 코드
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;
foreign key 부분 설명
INDEX commenter_idx (commenter ASC),
CONSTRAINT commenter
FOREIGN KEY (commenter)
REFERENCES nodejs.users (id)
칼럼 commenter를 인덱스의 이름을 commenter_idx로 해서 오름차순(ASC)으로 정렬하도록 관리한다.
commenter 에게 제약조건(constraint)를 걸 것인데, 외래키로 설정하는 것이고, nodejs데이터베이스의 users테이블의 id칼럼을 외래키로 설정하겠다는 뜻이다.
ON DELETE, ON UPDATE를 CASCADE로 설정했다. 사용자 정보가 수정되거나 삭제되면 그것과 연결된 댓글 정보도 같이 수정하거나 삭제한다는 뜻이다. 그래야 데이터가 불일치하는 현상이 일어나지 않는다.