1. 인덱스(Index) 1-1. 인덱스란? - 데이터를 좀 더 빠르게 찾을 수 있도록 해주는 도구 조금 더 자세히 설명하자면, Disk에서 발생하는 I/O 시간은 Main Memory 에서 발생하는 I/O에 비해 매우 크다. 인덱스를 설정함으로서 DB의 데이터를 검색시 Diks 의 I/O가 빈번히 일어나지 않도록 하는 것이다. - 속성 값을 기준으로 이미 정렬되어 있으며, 그에 해당하는 레코드 주소가 있어 빠르게 데이터 접근이 가능 - 인덱스 검색을 위한 조건은 WHERE 절에 인덱스로 설정된 컬럼명이 나와야 함 1-2. 장/단점 장점 - 검색 속도가 빨라진다. -> (무조건 그런 것은 아니다.) : 인덱싱보다 전체 테이블 검색(Full Scan)이 더 나은 경우 - 적은 처리량으로 결과를 얻을 수 있..
DB를 조회할 때 종종 행과 열이 바뀌어서 조회가 필요한 경우가 있습니다. RDB(관계형 DB)는 행과 열로 이루어져 있는데, 이 위치를 뒤바꾸는 것을 피벗(Pivot)이라고 합니다. Oracle 11g 에서는 해당 기능을 오라클에서 제공하지만, MySQL/MariaDB 는 따로 제공을 하지 않습니다. 해당 글에서는 MySQL/MariaDB 에서 피벗 형식으로 조회가 되도록 간단하게 예제를 진행해보도록 하겠습니다. 0. 테이블 - 현재 테이블의 구조 및 데이터는 다음과 같습니다. student_table department_table 1. Pivot 사용 전 - 두 테이블을 조인하여 연도별, 학과별 입학 인원을 조회하려고 합니다. - 학과에 입학인원이 없더라도, 0명으로 조회되어야 때문에 Outer Jo..
이전 글에서 NoSQL 에 대해 정리해보았고, 이번 글에서는 NoSQL 중 CouchBase 에 대해 간단하게 알아보고 설치하는 방법을 정리해보고자 합니다. [DB] NoSQL DataBase 정리 회사에서 업무 도중 오픈 API 데이터를 긁어와서 저장해두었다가 특정 필드를 확인해서 서비스에 녹이고자 하였습니다. 그러던 중 간단하게 먼저 공부 겸 진행해보라고 하시면서 DB 는 NoSQL 을 사 dev-jwblog.tistory.com 1. CouchBase 정리 1-1. CouchBase 란? - Apache 의 CouchDB 를 기반으로 새롭게 만든 솔루션이다. - 카우치베이스 Server 라는 NoSQL 솔루션이다. - 고성능 NoSQL(비 관계형)으로 Key-Value 형태로 XML/JSON 를 저..
회사에서 업무 도중 오픈 API 데이터를 긁어와서 저장해두었다가 특정 필드를 확인해서 서비스에 녹이고자 하였습니다. 그러던 중 간단하게 먼저 공부 겸 진행해보라고 하시면서 DB 는 NoSQL 을 사용해보라고 하였습니다. 이번 글에서는 기존 RDB 와 다른 NoSQL 에 대해 정리해보고자 합니다. 1. NoSQL(Not Only SQL)이란? - NoSQL 은 비관계형 데이터베이스를 의미한다. - 관계형 데이터 모델을 지양하며 대량의 분산된 데이터를 저장하고 조회하는데 특화되어있으며, 스키마 없이 사용 가능하거나 느슨한 스키마를 제공한다. - 기존의 관계형 DBMS 가 갖고 있는 특성뿐만 아니라 다른 특성들을 부가적으로 지원한다. 2. NoSQL 특징 - NoSQL DB 는 기존의 관계형 데이터베이스(RD..
1. 서론 - MySQL 에서 날짜 차이를 구하기 위해 DATEDIFF, TIMESTAMPDIFF 함수를 사용합니다. - 간단하게 일(day) 차이를 구할 때는 DATEDIFF 함수를 사용. - 이외에 연(year), 월(month), 시간(hour), 초(second) 등을 지정하여 구할 때는 TIMESTAMPDIFF 함수를 사용. 2. 사용법 2-1. DATEDIFF - 기본적으로 날짜1 - 날짜2 로 계산됩니다. DATEDIFF(날짜1, 날짜2); 2-2. TIMESTAMPDIFF - 기본적으로 날짜2 - 날짜1 로 계산됩니다. TIMESTAMPDIFF(단위, 날짜1, 날짜2); - 단위의 종류로는 아래와 같습니다. SECOND : 초 MINUTE : 분 HOUR : 시간 DAY : 일 WEEK :..
1. EXISTS 절 - 결과로 TRUE, FALSE 를 반환하는 연산자. - 한 테이블이 다른 테이블과 외래키(FK)와 같은 관계인 경우 유용합니다. - 조건에 해당하는 ROW의 존재 유무 이후 더 수행하지 않는다. - 즉, 테이블 간의 결과를 어떤 값이 존재하는 지만 조회 할때 사용합니다. - 쿼리의 의도롤 고려했을 대 EXISTS 가 IN 에 비해 성능이 좋습니다.(그렇지 않을 경우, JOIN 활용) EXIST - 메인 쿼리 -> EXISTS 쿼리 순서로 진행 -- 기본 구문 SELECT * FROM table WHERE [NOT] EXISTS(subquery); 1-1. 예제 - 아래와 같이 간단하게 데이터를 만들고 확인해보겠습니다. SELECT * FROM STUDENT_TABLE; SELECT..
MySQL 에서 어떠한 계산 또는 음수에 대해서 절대값으로 구하기 위해 abs 함수를 사용합니다. 1. 사용법 ABS(절대값을 얻어낼 수) 2. 예제 select abs(10); // 10 select abs(-10); // 10 select abs(10 - 100); // 90
DB(MySQL)에서 DELETE 문 에서 Join 을 사용하여 여러 테이블에서 데이터를 삭제하는 방법을 정리해보고자 한다. 1. 일반적인 DELETE 문 --1. 기본 Delete DELETE FROM T_MEMBER; --2. where 문을 사용한 Delete DELETE FROM T_MEMBER WHERE NAME = '개발자'; 2. Join 을 사용한 DELETE 문 - Join 을 사용하여 Delete 를 할 경우 하나의 쿼리로 다수의 테이블에 있는 데이터를 삭제할 수 있다. 2-1. Inner Join - INNER JOIN 과 함께 DELETE 문을 실행하면 기준이 되는 테이블에서 행을 삭제하고, 다른 테이블에서 일치하는 행을 추가로 삭제할 수 있다. - 예를 들어, T1, T2 두 테이..
테이블을 생성 시, 중복 저장을 막기 위해 다양한 컬럼에 Unique Key 를 등록한다.(Primary Key와는 다름) 이때, 데이터를 Insert 하는 경우, Unique Key 가 존재하는 값에 대해 실행하면 에러가 발생한다. 이러한 경우에 해당 row(데이터)를 Delete 후 다시 Insert 하는 방법도 있지만, 삭제에 대한 위험요소도 있다. 이때, on duplicate key update 를 사용하여 Unique Key 값이 있는 경우에 Insert 가 아닌 update를 해주는 방법이 있다. 1. Table(테이블) 생성 - 간단하게 테이블을 생성한다. //기존 테이블 삭제 DROP TABLE TEST_MEMBER; //테이블 생성 CREATE TABLE TEST_MEMBER ( mem..
1. Join(조인) 이란? - 한 데이터베이스 내의 여러 테이블의 레코드를 조합하여 하나의 열로 표현한 것 - 즉, 둘 이상의 테이블을 연결해서 데이터를 검색하는 방법 - 테이블로서 저장되거나, 그 자체로 이용할 수 있는 결과 셋을 만들어 낸다. - 아래 그림은 조인을 쉽게 이해하기 위한 그림이다. - Join의 종류 INNER JOIN : 내부조인(교집합) LEFT/RIGHT JOIN : 부분집합 OUTER JOIN : 외부조인(합집합) 2. DB에서의 조인 필요성 - 관계형 데이터베이스의 구조적 특징으로 정규화를 수행하면 의미 있는 데이터의 집합으로 테이블이 구성되고, 각 테이블끼리는 관계(Relationship)를 가진다. - 이와 같은 특징으로 관계형 데이터베이스는 저장 공간의 효율성과 확장성이..