티스토리 뷰

이젠 데이터베이스다!
MySQL logo.png
0.02MB

일병시절에는 판다스와 케라스 , 상병때는 리액트와 알고리즘

병장땐? 'Nodejs 와 DB'

(진짜 별걸 다해봤다)

 

mysql -h localhost -u root -p : 경로상관 없이 sql시작

use [DB이름] : 꼭 로그인 하면 써주자

DESC [테이블 이름] : 테이블의 column 정보 확인

SHOW TABLES : DB에 있는 테이블 목록 확인

exit : 종료

 

+ 에러 발생시 : sudo service mysql restart

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;

테이블 생성 명령어 : CREATE TABLE [DB명 . TABLE명]

이후에 한줄 씩 col(열)을 만들어 준다.

 

col 자료형

  • INT, FLOAT, DOUBLE 와 같은 정수, 실수 자료형
  • TINYINT : -128 ~ 127의 정수
  • CHAR(자릿수) : 길이가 정확히 10인 문자열
  • VARCHAR(자릿수) : 길이가 0~10인 문자열
  • TEXT : 긴 글을 저장할 때 사용
  • DATETIME : 날짜와 시간에 대한 정보

 

자료형 뒤에 붙는 옵션

  • NULL, NOT NULL : NULL이면 빈칸 허용, NOT NULL이면 반드시 데이터가 입력되어야함
  • AUTO_INCREMENT : 별도의 값을 안넣어도 숫자를 자동으로 올려줌
  • UNSIGNED : 개념은 C와 같음
  • ZEROFILL : 숫자의 자릿수가 고정되어 있을 때 사용 가능. INT(4) 1 => 0001 로 변환
  • DEFAULT : DB 저장시 COL에 값이 없다면 설정된 기본값을 넣어줌 (now()를 넣으면 현재시간)
  • PRIMARY KEY : 생성된 ROW를 대표하는 값 설정
  • UNIQUE INDEX : 해당 값이 고유해야 하는지 여부. [컬럼이름]_UNIQUE 로 이용
    (PRIMARY KEY는 자동으로 UNIQUE INDEX를 포함해준다.)

 

테이블에 대한 설정

  • COMMENT : 테이블에 대한 보충 설명
  • DEFAULT CHARACTER SET : utf-8을 설정해줘야 한글이 안 깨짐
  • ENGINE : MyISAM or InnoDB를 이용

 

FOREIGN KEY : 다른 테이블의 기본 키를 저장할 COL

CONSTRAINT [제약 조건명] FOREIGN KEY [COL명] REFERENCES [참고할 외부 테이블 컬럼]

 

추가로 ON UPDATE, ON DELETE 를 CASCADE로 두면 외부 테이블 정보가 수정, 삭제되면 따라감

 

이걸 워크벤치를 못써서 일일이 타이핑함

 

'Web > BackEnd' 카테고리의 다른 글

장고 REST API 정리  (0) 2022.08.19
[MySQL] Foreign Key 설정 시 유의점  (0) 2021.12.12
[Node.js] Sequelize로 CRUD 작업 처리하기  (0) 2021.12.11
[MySQL] Create, Read, Update, Delete (CRUD)  (0) 2021.12.10
Node.js 시작  (0) 2021.12.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday