반응형
관계형 데이터베이스(RDB)와 비관계형 데이터베이스(NoSQL)의 개념
- 비관계형 데이터베이스 (NoSQL): 데이터 형식이 자유로워 유연한 데이터 관리가 가능
Ex. MongoDB - 관계형 데이터베이스(RDB): RDB는 테이블 개념을 사용해 엑셀과 유사한 형태로 데이터를 관리하며, 데이터는 엄격한 구조 안에서 관계를 맺으며 저장됨
Ex. MySQL
Mongoose 라이브러리
- MongoDB를 위한 자바스크립트 라이브러리
ODM(Object Document Mapper)으로 자바스크립트 객체와 MongoDB의 문서(Document)를 매핑해주는 역할
Sequelize 라이브러리와 MySQL 데이터 처리
- Node.js에서 사용되는 ORM(Object Relational Mapper) 라이브러리
MySQL에서 객체와 관계형 데이터를 매핑해주는 역할
SQL (Structured Query Language)
- 데이터베이스에서 데이터의 생성, 삽입, 조회, 수정 등을 수행하는데 사용되는 표준언어
- 데이터를 효과적으로 관리하고 활용하기 위해 고안된 언어
SQL의 종류
- DDL (Data Definition Language): 데이터 정의 언어로 데이터베이스, 테이블, 뷰, 인덱스 등을 생성, 수정, 삭제하는데 사용
- DML (Data Manipulation Language): 데이터 조작 언어로 데이터의 저장, 삭제, 수정, 조회 등을 수행
- DCL (Data Control Language): 데이터 제어 언어로 데이터베이스에 대한 접근 및 권한 설정에 관련된 명령어들을 포함
DDL (Data Definition Language)
- CREATE: 데이터베이스, 테이블, 뷰, 인덱스 등을 생성
CREATE DATABASE 데이터베이스명;
CREATE TABLE 테이블명 (컬럼명 컬럼속성);
- DROP: 데이터베이스, 테이블, 뷰, 인덱스 등을 삭제
DROP DATABASE 데이터베이스명;
DROP TABLE 테이블명;
- ALTER: 데이터베이스, 테이블 등의 속성을 변경
ALTER TABLE 테이블명 ADD 변경조건;
DML (Data Manipulation Language)
- SELECT: 테이블에서 데이터를 조회
SELECT 컬럼목록 FROM 테이블명 [WHERE 조건];
- INSERT: 테이블에 새로운 데이터를 삽입
INSERT INTO 테이블명 (컬럼목록) VALUES (값목록);
- DELETE: 테이블에서 특정 조건에 맞는 데이터를 삭제
DELETE FROM 테이블명 [WHERE 조건];
- UPDATE: 테이블에서 특정 조건에 맞는 데이터를 수정
UPDATE 테이블명 SET 컬럼 = 값 [WHERE 조건];
DCL (Data Control Language)
- COMMIT: 데이터베이스의 작업이 정상적으로 완료되었음을 나타냄
START TRANSACTION; ... COMMIT;
- ROLLBACK: 데이터베이스의 작업이 비정상적으로 완료되었음을 나타냄
START TRANSACTION; ... ROLLBACK;
- GRANT: 데이터베이스의 특정 사용자에게 권한 부여
GRANT [권한] ON 객체명 TO 사용자;
- REVOKE: 데이터베이스의 특정 사용자에게 부여된 권한 회수
REVOKE [권한] ON 객체명 FROM 사용자;
SQL 제약조건 (Constraint)
- 데이터베이스에서 데이터의 무결정과 정확성을 보장하기 위해 컬럼에 생성하는 규칙
중복, 불완전 데이터 입력 방지, 테이블 간 관계 설정 등에 사용
주요 제약 조건 종류
- 고유(Unique): 컬럼의 각 값이 고유해야 함을 명시
- NULL: 컬럼이 NULL 값을 가질 수 있는지 여부를 정의
- 기본 키(Primary Key): 각 행을 고유하게 식별하는 컬럼
- 외래 키(Foreign Key): 다른 테이블의 기본 키를 참조하여 관계를 맺는 컬럼
기본 키(Primary Key) 제약 조건
- 테이블 내 데이터를 고유하게 식별
AUTO_INCREMENT: 자동으로 고유값을 생성하는 속성
CREATE TABLE User
(
userId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255)
);
NULL 제약 조건
- 컬럼이 NULL 값을 가질 수 있는지 설정
CREATE TABLE User
(
userId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255) NOT NULL
);
고유(Unique) 제약 조건
- 컬럼 값의 중복을 방지
CREATE TABLE User
(
userId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255) NOT NULL UNIQUE
);
외래 키(Foreign Key) 제약 조건
- 다른 테이블의 기본 키를 참조하여 테이블 간 관계를 형성
CREATE TABLE Garden
(
gardenId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
address varchar(255) NOT NULL
);
CREATE TABLE GardenPlants
(
gardenPlantsId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
gardenId int(11) NOT NULL,
name varchar(255) NOT NULL,
FOREIGN KEY (gardenId) REFERENCES Garden (gardenId)
);
외래 키(Foreign Key) 제약 조건 심화
- 연계 참조 무결성 제약조건: 참조 데이터가 변경/삭제될 때 수행될 조건을 정의
FOREIGN KEY (UserId) REFERENCES Users(userId)
ON DELETE CASCADE
ON UPDATE CASCADE;
SELECT JOIN 연산자
- 두 테이블 간의 공통 데이터를 기준으로 병합하여 조회
SELECT p.postId, p.title, p.content, u.email
FROM Posts as p
JOIN Users as u
ON p.UserId = u.userId;
레퍼런스
반응형
'backend > Node.js' 카테고리의 다른 글
| [Node.JS] 로컬 환경 RDS 연결 정리 (0) | 2023.11.15 |
|---|---|
| [Node.JS] Sequelize (0) | 2023.11.10 |
| [Node.JS] 미들웨어 (0) | 2023.11.10 |
| [Node.JS] 인증(Authentication) (0) | 2023.11.09 |
| [Node.JS] REST API & Validation (1) | 2023.11.08 |
