제로부터 쌓는 개발일지
article thumbnail
반응형

관계형 데이터베이스(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;

 

레퍼런스

SQL의 종류를 알아봐요!

ERD란 무엇일까요? 1:N, N:M과 같은 관계는 어떻게 작성할까요?

반응형

'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
profile

제로부터 쌓는 개발일지

@PachyuChepe

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...