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 NULL과 NO 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 |