본문 바로가기
CS/데이터베이스

[백엔드] 관계형 DB

by Hoozy 2023. 4. 2.

이전 게시글 운영 체제 2

https://hoozy.tistory.com/entry/%EB%B0%B1%EC%97%94%EB%93%9C-%EC%9A%B4%EC%98%81-%EC%B2%B4%EC%A0%9C-2

 

[백엔드] 운영 체제 2

이전 게시글 운영 체제 1 https://hoozy.tistory.com/entry/%EB%B0%B1%EC%97%94%EB%93%9C-%EC%9A%B4%EC%98%81-%EC%B2%B4%EC%A0%9C-1 카테고리 : 운영 체제 프로세스 간 통신 프로세스들 간의 의사소통하는 것을 IPC라고 한다. 이

hoozy.tistory.com

카테고리 : 데이터베이스

관계형 데이터베이스란

  • 행과 열로 이루어진 각각의 테이블을 고유값(PK)을 참조하여 서로 종속되는 관계(연결하는 것)를 표현하는 데이터베이스 구조.
  • 스키마는 테이블의 집합이라고 볼 수 있다.

종류

  • 아래 5가지의 관계형 데이터베이스가 있다.
  • 여기서는 MySQL과 Oracle 두 개만 알아보겠습니다.
  1. PostgreSQL
  2. MySQL
  3. MariaDB
  4. MS SQL
  5. Oracle

Oracle

  • 미국의 오라클 회사에서 개발한 세계 점유율 1위 데이터베이스 관리 시스템이며 현재 유닉스 체제에서 가장 많이 사용되는 DBMS이다.
  • 장점
    1. 관리시스템
      • Multiple databases 튜닝이 가능하다.
      • 다수의 사용자가 동시에 접근이 가능하다.
    2. 변화관리
      • 변경 plan을 작성하고 실제 구현하기 전에 변경 사항의 효과를 볼 수 있다.
      • 생산 시스템을 방해하지 않는다.
    3. 경고
      • 오류가 발생하면 설정되어 있는 계정 및 이메일로 연락이 온다.
      • 경고는 예정된 가종 정지 시간동안 차단될 수 있다.
    4. 분산처리
      • DBMS 실행 컴퓨터 / 서버 역할 컴퓨터 / DB 응용 프로그램 실행 컴퓨터 로 서로 다르게 분산 처리 한다.
    5. 용량 & 처리
      • 다른 데이터베이스보다 고성능의 트랜잭션을 처리한다.
      • Cost 비용을 최소화하기 위해 테이블과 인덱스를 분리한다.
  • 단점
    1. 비용이 MySQL 보다 비싸다.
    2. 기능이 많아 초보자에게 어렵다.
    3. 높은 지원 하드웨어 사양이 필요하다.

MySQL

  • 전세계적으로 가장 널리 사용되고 있는 오픈소스 데이터베이스이며, MySQL AB사가 개발하여 배포 및 판매하고 있는 데이터베이스 관리툴이다.
  • 장점
    1. 용량 & 처리
      • MySQL은 오직 1MB의 RAM만 사용할만큼 용량 차지가 적다 -> 매우 적은 오버 헤드를 사용한다.
      • 처리 속도가 빠르고 대용량 데이터 처리에 용이하다.
    2. 접근성
      • 다른 데이터 관리 툴에 비해 구조가 간단하여 사용하기가 매우 쉽다.
    3. 지원
      • 다양한 프로그래밍 언어와 통합할 수 있다.
      • 거의 모든 운영체제 사용을 지원한다.
    4. 유연성
      • 유연하고 확장이 가능한 구조이다.
    5. 가격
      • 무료라서 비용적인 부담이 적다.
  • 단점
    1. 복잡한 쿼리는 성능 저하.
    2. 트랜잭션 지원이 완벽하지 않다.
    3. 사용자 정의 함수의 사용이 쉽지 않고, 유연하지 않다.

Oracle / MySQL 차이점

  • 구조적
    • 오라클 : DB 서버가 통합된 하나의 스토리지를 공유하는 방식.
    • MySQL : DB 서버마다 독립적인 스토리지를 할당하는 방식,
  • 조인 방식
    • 오라클 : 중첩 루프 조인, 해시 조인, 소트 머지 조인 방식을 제공함.
    • MySQL : 중첩 루프 조인 방식을 제공함.
  • 확장성
    • 오라클 : 별도의 DBMS을 설치해 사용할 수 없음.
    • MySQL : 별도의 DBMS을 설치해 사용할 수 있음.
  • 파티셔닝
    • 오라클 : Local Partion Index, Global Partion Index를 지원.
    • MySQL : Local Partion index만 지원.
  • 힌트 방식
    • 오라클 : 힌트에 문법적 오류가 있으면 힌트를 무시하고 쿼리를 수행한다.
    • MySQL : 힌트에 문법적 오류가 있으면 오류를 발생시킨다.
  • SQL 구문
  1. NULL 대체

오라클

NVL(열명, '대체값')

MySQL

IFNULL(열명, '대체값')
  1. SELECT 결과 개수 제한(상위 개수만 반환)

오라클

ROWNUM <= 숫자

MySQL

LIMIT 시작위치, 가져올 데이터 건수
  1. 가상 테이블 DUAL

오라클

SELECT 1 FROM DUAL;

MySQL

SELECT 1;
  1. 현재 날짜

오라클

SELECT SYSDATE FROM DUAL;

MySQL

SELECT NOW();
  1. 조건식 (IF)

오라클

//칼럼이 값과 일치하면 TRUE, 일치하지 않으면 FALSE
SELECT DECODE(칼럼, 값, TRUE일때 출력할 값, FALSE일때 출력할 값) FROM TABLE;

MySQL

SELECT IFNULL(조건식, TRUE일때 값, FALSE일때 값) FROM TABLE;
  1. 날짜 형식

오라클

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL;

MySQL

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
  1. 시퀀스

오라클

CREATE SEQUENCE [시퀀스명]
INCREMENT BY [증감숫자]
START WITH [시작숫자]
NOMINVALUE / MINVALUE [최소값]
NOMINVALUE / MINVALUE [최소값]
CYCLE / NOCYCLE
CACHE / NOCACHE
INSERT TABLE
(SEQ_NBR)
VALUES
(시퀀스명.NEXTVAL);

MySQL

// INSERT 시 자동으로 값이 생성되어 들어감.
CREATE TABLE
( SEQ_NBR INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
  1. 문자열 합치기

오라클

SELECT "A" || "B" FROM DUAL;
SELECT CONCAT("A", "B") FROM DUAL;

MySQL

SELECT CONCAT("A", "B") FROM DUAL;
  1. 문자열 자르기

오라클

SELECT SUBSTR( 문자열/칼럼, 시작위치, 잘라낼 문자열의 길이) FROM DUAL;

MySQL

SELECT SUBSTRING(문자열/칼럼, 시작위치, 잘라낼 문자열의 길이);

다음 게시글 NoSQL DB

https://hoozy.tistory.com/entry/%EB%B0%B1%EC%97%94%EB%93%9C-NoSQL%EB%B9%84%EA%B4%80%EA%B3%84%ED%98%95-DB

 

[백엔드] NoSQL(비관계형) DB

이전 게시글 관계형 DB https://hoozy.tistory.com/entry/%EB%B0%B1%EC%97%94%EB%93%9C-%EA%B4%80%EA%B3%84%ED%98%95-DB 카테고리 : 데이터베이스 비관계형 데이터베이스란 관계형 데이터 모델(RDBMS)을 지양하며 대량의 분산

hoozy.tistory.com

참고 자료

https://velog.io/@alicesykim95/Oracle%EA%B3%BC-MySQL%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90
https://mantaray.tistory.com/38

'CS > 데이터베이스' 카테고리의 다른 글

[백엔드] DB 추가 정보  (0) 2023.04.03
[백엔드] NoSQL(비관계형) DB  (0) 2023.04.03

댓글