DB/관계형 DB

MYSQL 사용법

쿠와와 2020. 12. 27. 19:01

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

 

콘솔에서 MySQL 프롬프트에 접속

  • CREATE SCHEMA nodejs;nodejs 데이터베이스 생성
  • use nodejs;로 생성한 데이터베이스 선택

MySQL 프롬프트에서 테이블 생성

  • CREATE TABLE [데이터베이스명.테이블명]으로 테이블 생성
  • 사용자 정보를 저장하는 테이블
  •  

2. 컬럼 옵션들

id INT NOT NULL AUTO_INCREMENT -> int형 비어있으면 안됨 자동 증가

  • 컬럼명 옆의 것들은 컬럼에 대한 옵션들
  • INT: 정수 자료형(FLOAT, DOUBLE은 실수)
  • VARCHAR: 문자열 자료형, 가변 길이(CHAR은 고정 길이)
  • TEXT: 긴 문자열은 TEXT로 별도 저장
  • DATETIME: 날짜 자료형 저장
  • TINYINT: -128에서 127까지 저장하지만 여기서는 1 또는 0만 저장해 불 값 표현
  • NOT NULL: 빈 값은 받지 않는다는 뜻(NULL은 빈 값 허용)
  • AUTO_INCREMENT: 숫자 자료형인 경우 다음 로우가 저장될 때 자동으로 1 증가
  • UNSIGNED: 0과 양수만 허용
  • ZEROFILL: 숫자의 자리 수가 고정된 경우 빈 자리에 0을 넣음
  • DEFAULT now(): 날짜 컬럼의 기본값을 현재 시간으로

3. Primary Key, Unique Index

 PRIMARY KEY(id)

  • id가 테이블에서 로우를 특정할 수 있게 해주는 고유한 값임을 의미
  • 학번, 주민등록번호같은 개념

UNIQUE INDEX name_UNIQUE (name ASC)

  • 해당 컬럼(name)이 고유해야 함을 나타내는 옵션
  • name_UNIQUE는 이 옵션의 이름(아무거나 다른 걸로 지어도 됨)
  • ASC는 인덱스를 오름차순으로 저장함의 의미(내림차순은 DESC)

4. 테이블 옵션

COMMENT: 테이블에 대한 보충 설명(필수 아님)

DEFAULT CHARSET: utf8로 설정해야 한글이 입력됨(utf8mb4 하면 이모티콘 가능)

ENGINE: InnoDB 사용(이외에 MyISAM이 있음, 엔진별로 기능 차이 존재)

 

7. 테이블 생성되었나 확인하기

DESC 테이블명 -> 상태를 알 수 있음 

 테이블 삭제하기: DROP TABLE 테이블명

8. 테이블 저장하기

9. 외래키(foreign key)

댓글 테이블은 사용자 테이블과 관계가 있음(사용자가 댓글을 달기 때문)

  • 외래키를 두어 두 테이블이 관계가 있다는 것을 표시
  • FOREIGN KEY (컬럼명) REFERENCES 데이터베이스.테이블명 (컬럼)
  • FOREIGN KEY (commenter) REFERENCES nodejs.users (id)
  • 댓글 테이블에는 commenter 컬럼이 생기고 사용자 테이블의 id값이 저장됨
  • ON DELETE CASCADE, ON UPDATE CASCADE
  • 사용자 테이블의 로우가 지워지고 수정될 때 댓글 테이블의 연관된 로우들도 같이 지워지고 수정됨
  • 데이터를 일치시키기 위해 사용하는 옵션(CASCADE 대신 SET NULLNO ACTION도 있음)

 

'DB > 관계형 DB' 카테고리의 다른 글

procedure  (0) 2020.12.29
mysql - CRUD 작업하기  (0) 2020.12.28
술어논리와 릴레이션의 연산 #1  (0) 2020.12.02
SQL에서 릴레이션 조작  (0) 2020.11.29
관계형 모델  (0) 2020.11.28