사용자들의 정보를 객체(메모리)에 저장했기 때문에 서버를 껐다 켜면 메모리가 날아가 데이터가 유실되는 문제 발생
위의 문제를 해결하고 데이터를 영구적으로 저장할 공간이 필요함.
데이터베이스란 관련성을 가지며 중복이 없는 데이터들의 집합이다.
서버의 하드디스크나 SSD 등의 저장 매체에 데이터를 저장한다.
서버 종료 여부와 상관 없이 데이터를 계속 사용할 수 있다.
여러 사람이 동시에 접근할 수 있고, 권한을 따로 줄 수 있다.
게시글에 댓글을 쓴다,로그, 엑셀 등 ➡️ 관계형 데이터베이스 (MYSQL)
인공지능에게 학습 시킬 채팅 데이터 같이 비정형, 수집에 목적 ➡️ 비관계형 (MongoDB)
다음과 같이 테이블을 생성할 수 있다. 그러나 문법 오류가 났다.
mysql> DESC users;
mysql> DROP TABLE users;
Create, Read, Update, Delete 데이터베이스에서 많이 하는 작업 4가지
생성, 조회, 수정, 삭제
INSERT INTO 테이블 (컬럼명들) VALUES (값들)
SELECT 컬럼 FROM 테이블명
SELECT * FROM nodejs.users;
SELECT * 은 모든 컬럼을 선택한다는 의미
SELECT name, married FROM nodejs.users;
컬럼만 따로 추리는 것도 가능하다
WHERE로 조건을 주어 선택 가능
SELECT name, age FROM nodejs.users WHERE married = 1 AND age > 30;
SELECT id, name FROM nodejs.users WHERE married = 0 OR age > 30;
ORDER BY로 특정 컬럼 값 순서대로 정렬 가능
SELECT id, name FROM nodejs.users ORDER BY age DESC;
LIMIT으로 조회할 개수 제한
SELECT id, name FROM nodejs.users ORDER BY age DESC LIMIT 1;
OFFSET으로 앞의 로우들 스킵 가능(OFFSET 2면 세 번째 것부터 찾음)
SELECT id, name FROM nodejs.users ORDER BY age DESC LIMIT 1 OFFSET 1;
데이터베이스에 있는 데이터를 수정하는 작업
UPDATE 테이블명 SET 컬럼=새값 WHERE 조건
UPDATE nodejs.users SET comment = '바꿀 내용' WHERE id = 2;
데이터베이스에 있는 데이터를 삭제하는 작업
DELETE FROM 테이블명 WHERE 조건
DELETE FROM nodejs.users WHERE id = 2;
MYSQL 작업을 쉽게 할 수 있도록 도와주는 라이브러리
➡️ 초기 규모의 프로젝트만 사용 가능
mysql2는 MySQL DB가 아닌 드라이버(노드와 Mysql을 이어주는 역할)
시퀄라이즈 구조 생성
users 모델과 comments 모델 간의 관계를 정의
사용자 테이블과 사용자 정보 테이블
게시글과 해시태그 테이블
하나의 게시글이 여러 개의 해시태그를 가질 수 있고 하나의 해시태그가 여러 개의 게시글을 가질 수 있음
DB 특성상 다대다 관계는 중간 테이블이 생김
한 컬럼에는 한 가지의 데이터만 들어있어야 한다.
중간 테이블이 없으면 정규화 원칙을 위반하여 이를 해결하기 위해 중간 테이블을 만들어 연결해주는 방법이 존재하는 것.
married: true 오타 수정!
gt >
lt <
gte >=
lte <=
업데이트, 삭제할 땐 조건이 꼭 있어야한다. Where 필수!!!