본문 바로가기
node.js 교과서

[node.js 교과서 | 7장] MySQL(1) : 데이터베이스 생성하기

by 솨앙 2024. 9. 29.
반응형

해당 글은 node.js(조현영, 길벗출판사) 책을 읽고 공부하며 작성한 글입니다.

 

1. 데이터베이스 생성하기

(1) mySQL 프롬프트에 접속합니다.(맥)

Terminal 실행

mysql -h localhost -u root -p
비밀번호 입력

 

그럼 프로프트에 앞이 mysql> 와 같이 바뀝니다 -> 접속 완료

(1) 데이터베이스 생성 

  • 스키마(Schema)란? mysql에서 스키마와 데이터베이스는 같은 개념입니다.
CREATE SCHEMA `nodejs` DEFAULT CHARACTER SET utf8;

 

- 반드시 세미클론을 붙여야하며 `nodejs` 이 부분은 작은 따옴표가 아닌 백틱 표시이다!

- nodejs라는 이름의 스키마를 만들 것이며, character set을 utf8로 설정하여 한글 표시가 가능하도록 한다.

use nodejs

- 이후의 모든 SQL 명령이 nodejs 데이터베이스에 적용된다는 것이며, 데이터베이스를 활용할 준비가 완료 된다.

2. (추가) 워크벤치에서 작업을 해보자

- +를 눌러 Connections을 추가해주고 Name과 Password에서 Store in Keychain을 눌러 비밀번호 작성 후 OK

- 그럼 스키마에 내가 만든 nodejs가 추가 되어있음을 확인할 수 있다.

- 터미널 같은 재미없는 비쥬얼 말고 귀여운 워크 벤치에서 그럼 작업을 할 수 있다!

 

3.  테이블 생성하기

USE nodejs;

CREATE TABLE users (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,  -- 데이터 타입 지정
    age INT UNSIGNED NOT NULL,    -- 'int'를 'age'로 변경
    married TINYINT NOT NULL,
    comment TEXT NULL,
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,  -- 'now()'를 'CURRENT_TIMESTAMP'로 수정
    PRIMARY KEY (id),
    UNIQUE INDEX name_UNIQUE (name ASC)
) COMMENT = '사용자 정보'
DEFAULT CHARACTER SET = utf8;
ENGINE = InnoDB;

 

- 만들어진 칼럼은 id, name, age, married, comment, created_at 이다.
- 칼럼 명 옆에 INT, VARCHAR, TINYINT와 같은 데이터 타입을 작성한다.
- 자료형 뒤에도 NULL, NOT NULL, AUTO_INCREMENT 같은 옵션이 붙는다.
- NULL 은 빈칸을 허용하고, NOT NULL은 빈칸을 허용하지 않는다.
- AUTO_INCREMENT는 숫자를 저절로 증가 시키겠다는 말이다
- DEFAULT now() 라는 옵션은 해당 컬러멩 값이 없다면 기본값으로 현재 시각을 넣게다는 말이다.
- COMMENT 는 테이블에 대한 보충 설명을 의미한다. 테이블이 무슨 역할을 하는지 적어둔다(필수는 아님)
- DEFAULT CHARACTER SET은 utf8로 설정하지 않으면 한글이 입력되지 않는다.
- ENGINE은 여러가지가 있지만 예시에서는 InnoDB를 사용한다

 

만들어진 테이블은 DESC 명령어로 확인할 수 있다.

DESC users;

4.  COMMETS 테이블을 만들어보자

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, commeter, comment, created_at 이다.
- commenter 칼럼에는 사용자의 id를 저장할 것이다. -> 다른 테이블의 기본키를 저장하는 칼럼을 외래키라고 한다.
- 이 때 검색과 데이터 사용의 용이함을 위해 'INDEX commenter_idx(commenter ASC)'와 같이 인덱스를 걸어줬다.
- 'ON DELETE CASCADE' 와 'ON UPDATE CASCADE' 를 설정한 것은 사용자 저ㅇ보가 수정되거나 삭제되면 그것과 연결된 댓글 정보도 같이 수정하거나 삭제한다는 것이다.
SHOW TABLES;

테이블이 잘 생성됐음을 확인 할 수 있다.

반응형