이전 게시글 운영 체제 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
카테고리 : 데이터베이스
관계형 데이터베이스란
- 행과 열로 이루어진 각각의 테이블을 고유값(PK)을 참조하여 서로 종속되는 관계(연결하는 것)를 표현하는 데이터베이스 구조.
- 스키마는 테이블의 집합이라고 볼 수 있다.
종류
- 아래 5가지의 관계형 데이터베이스가 있다.
- 여기서는 MySQL과 Oracle 두 개만 알아보겠습니다.
- PostgreSQL
- MySQL
- MariaDB
- MS SQL
- Oracle
Oracle
- 미국의 오라클 회사에서 개발한 세계 점유율 1위 데이터베이스 관리 시스템이며 현재 유닉스 체제에서 가장 많이 사용되는 DBMS이다.
- 장점
- 관리시스템
- Multiple databases 튜닝이 가능하다.
- 다수의 사용자가 동시에 접근이 가능하다.
- 변화관리
- 변경 plan을 작성하고 실제 구현하기 전에 변경 사항의 효과를 볼 수 있다.
- 생산 시스템을 방해하지 않는다.
- 경고
- 오류가 발생하면 설정되어 있는 계정 및 이메일로 연락이 온다.
- 경고는 예정된 가종 정지 시간동안 차단될 수 있다.
- 분산처리
- DBMS 실행 컴퓨터 / 서버 역할 컴퓨터 / DB 응용 프로그램 실행 컴퓨터 로 서로 다르게 분산 처리 한다.
- 용량 & 처리
- 다른 데이터베이스보다 고성능의 트랜잭션을 처리한다.
- Cost 비용을 최소화하기 위해 테이블과 인덱스를 분리한다.
- 관리시스템
- 단점
- 비용이 MySQL 보다 비싸다.
- 기능이 많아 초보자에게 어렵다.
- 높은 지원 하드웨어 사양이 필요하다.
MySQL
- 전세계적으로 가장 널리 사용되고 있는 오픈소스 데이터베이스이며, MySQL AB사가 개발하여 배포 및 판매하고 있는 데이터베이스 관리툴이다.
- 장점
- 용량 & 처리
- MySQL은 오직 1MB의 RAM만 사용할만큼 용량 차지가 적다 -> 매우 적은 오버 헤드를 사용한다.
- 처리 속도가 빠르고 대용량 데이터 처리에 용이하다.
- 접근성
- 다른 데이터 관리 툴에 비해 구조가 간단하여 사용하기가 매우 쉽다.
- 지원
- 다양한 프로그래밍 언어와 통합할 수 있다.
- 거의 모든 운영체제 사용을 지원한다.
- 유연성
- 유연하고 확장이 가능한 구조이다.
- 가격
- 무료라서 비용적인 부담이 적다.
- 용량 & 처리
- 단점
- 복잡한 쿼리는 성능 저하.
- 트랜잭션 지원이 완벽하지 않다.
- 사용자 정의 함수의 사용이 쉽지 않고, 유연하지 않다.
Oracle / MySQL 차이점
- 구조적
- 오라클 : DB 서버가 통합된 하나의 스토리지를 공유하는 방식.
- MySQL : DB 서버마다 독립적인 스토리지를 할당하는 방식,
- 조인 방식
- 오라클 : 중첩 루프 조인, 해시 조인, 소트 머지 조인 방식을 제공함.
- MySQL : 중첩 루프 조인 방식을 제공함.
- 확장성
- 오라클 : 별도의 DBMS을 설치해 사용할 수 없음.
- MySQL : 별도의 DBMS을 설치해 사용할 수 있음.
- 파티셔닝
- 오라클 : Local Partion Index, Global Partion Index를 지원.
- MySQL : Local Partion index만 지원.
- 힌트 방식
- 오라클 : 힌트에 문법적 오류가 있으면 힌트를 무시하고 쿼리를 수행한다.
- MySQL : 힌트에 문법적 오류가 있으면 오류를 발생시킨다.
- SQL 구문
- NULL 대체
오라클
NVL(열명, '대체값')
MySQL
IFNULL(열명, '대체값')
- SELECT 결과 개수 제한(상위 개수만 반환)
오라클
ROWNUM <= 숫자
MySQL
LIMIT 시작위치, 가져올 데이터 건수
- 가상 테이블 DUAL
오라클
SELECT 1 FROM DUAL;
MySQL
SELECT 1;
- 현재 날짜
오라클
SELECT SYSDATE FROM DUAL;
MySQL
SELECT NOW();
- 조건식 (IF)
오라클
//칼럼이 값과 일치하면 TRUE, 일치하지 않으면 FALSE
SELECT DECODE(칼럼, 값, TRUE일때 출력할 값, FALSE일때 출력할 값) FROM TABLE;
MySQL
SELECT IFNULL(조건식, TRUE일때 값, FALSE일때 값) FROM TABLE;
- 날짜 형식
오라클
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL;
MySQL
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
- 시퀀스
오라클
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);
- 문자열 합치기
오라클
SELECT "A" || "B" FROM DUAL;
SELECT CONCAT("A", "B") FROM DUAL;
MySQL
SELECT CONCAT("A", "B") FROM DUAL;
- 문자열 자르기
오라클
SELECT SUBSTR( 문자열/칼럼, 시작위치, 잘라낼 문자열의 길이) FROM DUAL;
MySQL
SELECT SUBSTRING(문자열/칼럼, 시작위치, 잘라낼 문자열의 길이);
다음 게시글 NoSQL DB
참고 자료
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 |
댓글