반응형
해당 글은 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;
테이블이 잘 생성됐음을 확인 할 수 있다.
반응형
'node.js 교과서' 카테고리의 다른 글
node.js 교과서 | 7장] MySQL(4) : 모델 정의하기, 관계 정의하기 (4) | 2024.10.06 |
---|---|
[node.js 교과서 | 7장] MySQL(3) : Sequelize 사용하기 (7) | 2024.09.29 |
[node.js 교과서 | 7장] MySQL(2) : CRUD(Create, Read, Update, Delete) (0) | 2024.09.29 |
[node.js 교과서 | 6장] 익스프레스로 웹 서버 만들기(2) : 자주 사용하는 미들웨어(+ html 파일 응답 받기 성공) (0) | 2024.09.29 |
[node.js 교과서 | 6장] 익스프레스로 웹 서버 만들기(1) : express설치, 기본 설정 (0) | 2024.09.29 |