성장일기

내가 보려고 정리하는 공부기록

데이터베이스 7

마리아DB (7) _ 인덱스, 프로시저, 트리거

드디어 마리아DB 정리 마지막 게시글이다. 이번에는 인덱스와 프로시저, 트리거에 대해 정리해보려고 한다. 1. 인덱스 (index) 인덱스는 데이터베이스의 개체 중 하나로, 데이터를 빠르게 조회하기 위해 테이블의 열 단위로 생성되는 개체이다. 책에서의 책갈피와 비슷한 역할을 한다. 인덱스를 생성하면 테이블의 모든 데이터를 조회하는 것이 아니라, index를 생성한 열을 별도로 저장해 검색속도를 빠르게 한다. 잘만 사용하면 시스템 성능에 도움이 되지만, 그렇지 않다면 오히려 성능을 떨어뜨릴 수 있다.  인덱스의 종류인덱스는 크게 클러스터형 인덱스와 보조인덱스가 있다.클러스터형 인덱스기본키를 생각하면 된다. 기본키에 자동으로 클러스터형 인덱스가 생성된다.보조 인덱스보조인덱스는 별도 공간에 생성되는 인덱스이다..

마리아DB (6) _ 뷰(View)

이번 게시글에서는 뷰에 대해 다루어 볼 예정이다. 1. 뷰 (View) ?뷰는 쉽게 이야기 하면 가상의 테이블이라고 할 수 있다. 기존의 테이블 데이터 중 자주 쓰는 데이터를 뷰로 만들어 읽기 전용으로 많이 사용하고, 수정도 가능하다. 즉 필요한 부분만 가져와서 테이블처럼 만든 것이다. 간단하게 뷰의 장단점을 정리하면 다음과 같다.장점원하는 부분만 보기 좋게 가져올 수 있다데이터 관리에 용이하다단점인덱스를 구성할 수 없다삽입, 수정 등 연산에 제약이 있다.  ✅ 뷰의 DML (INSERT, UPDATE, DELETE) 조작이 불가능한 경우뷰 정의에 포함되지 않는 열을 조작하는 경우원본 테이블의 A,B,C,D 열 중 A,B열로 테이블을 구성했다면, C열의 조작이 불가능함 산술 표현법으로 정의된 경우그룹함수..

마리아DB (5) _ 테이블 생성, 수정, 삭제하기

이번 게시글에서는 테이블에 관한 전반적인 내용을 다루려고 한다. 목차는 다음과 같다테이블 생성 - CREATE테이블에 데이터 삽입하기 - INSERT삭제데이터 삭제하기 - DELETE테이블 삭제하기 - DROP수정데이터 수정하기 - UPDATE테이블 수정하기 - ALTER 이번 게시글에서는 다루는 대상이 무엇인지와 명령어를 잘 연결지어 이해해야한다. 예를 들어, 테이블을 수정하는 것과, 테이블 속 데이터를 수정하는 명령어는 엄연히 다르다는 걸 인지해야 한다는 것이다.  1. 테이블 생성하기 - CREATE DBMS에서 데이터를 다루기 위해서 가장 먼저 하는 일은 DB를 생성한 후, 관련된 테이블을 생성하는 것이다. 이 두 가지 모두 CREATE라는 명령어를 이용한다. 테이블을 생성할 땐 CREATE TA..

마리아DB _ 데이터모델링 (개념적, 논리적, 물리적 모델링 / 정규화)

이 게시글에서는 DB모델링에 대해 정리해보려고 한다. 데이터모델링 ?데이터 모델링은 데이터를 중심으로 모델링을 진행하는 방법으로, 주어진 개념으로부터 논리적인 데이터 모델을 구성하는 작업을 의미한다. 데이터 모델링은 다음과 같은 3가지 과정으로 분류할 수 있다.개념적 모델링논리적 모델링물리적 모델링모델링을 하기 전에, 업무를 파악하고 요구사항을 분석해야 한다.  개념적모델링요구사항을 분석하는 단계에서 정의된 핵심 개체와 그들의 관계를 바탕으로 ERD를 생성하는 단계이다. 다음은 학생이라는 개체를 나타낸 것이다.학번나이이름성별 엔터티 (Entity)관리해야 할 구체적인 대상을 의미한다. 위에서는 학생 자체를 엔터티라고 한다. 엔터티도 형태의 유무에 따라서 유형엔터티와 무형엔터티로 나눌 수 있다.  무형엔터..

마리아DB (3) _ 서브쿼리 작성하기

이번 게시글에서는 데이터모델링을 정리하기 전에 간단하게 서브쿼리에 대해 정리해보려고 한다. 서브쿼리란 ?서브쿼리는 하나의 sql문 안에 포함된 또 다른 sql문을 의미한다. 서브쿼리문은 생각보다 자주 사용하게 되고, 여러개의 쿼리문을 작성할 수도 있다. 아래 코드는 간단한 예시이다. 홍길동 사원과 같은 부서인 부서원을 조회하는 코드이다.SELECT name, codeFROM employeeWHERE code = ( SELECT code FROM employee WHERE name = '홍길동'); 홍길동사원과 같은 부서인 사람을 구하려면, 우선 홍길동사원의 부서가 어디인지를 파악해야 한다. 그 후, 찾아낸 부서를 바탕으로 같은 부서인 사람을 구해주면 되는 것이다. 그래서 쿼리문을 다음과 같이 두 개..

마리아DB (2) _ 윈도우함수, 조인

이 게시물에서는 윈도우함수와 조인에 대해 정리하려고 한다. 1. 윈도우 함수함수들을 쭉 정리하다가 낯선 단어를 발견했다. 윈도우 함수 ? 사실 처음들어봤다. 윈도우함수가 대체 무엇일까 ?윈도우함수란, 행과 행 간의 비교, 연산을 하기 위한 함수라고 한다. 윈도우 함수에는 순위함수와 분석함수가 있다. 참고로 윈도우 함수에는 OVER 문구가 필수로 들어간다. 아래 코드로 확인해보자.SELECT WINDOW_FUNCTION (ARGUMENTS) OVER([PARTITION BY 컬럼] [ORDER BY 컬럼] [WINDOWING 절]) FROM 테이블명; 순위함수순위함수는 특정 컬럼의 순위를 구하는 함수로 RANK(), DENSE_RANK(), ROW_NUMBER, NTILE() 이 있다. RANK()ORDE..

마리아DB (1) _ DB설치, 기본명령어

학교에서 데이터베이스를 배울 때에는 Mysql을 사용했었다. 그러면서 마리아DB의 존재에 대해서는 알고 있었는데, 이렇게 운이 좋게 배울 수 있게 되었다. 마리아DB와 MySQL 모두 표로 데이터를 관리하는 관계형 DB라서 비슷하게 느껴졌는데 문득 차이점이 궁금해져 찾아보았다. 마리아DB와 MySQL은 완전 별개의 db가 아니었다. MySQL이 Oracle Corporation에 인수되고 라이선스 및 배포 문제가 생기자, MySQL을 수정해 MariaDB를 만든 것이다. 둘이 비슷하게 느낀 것도 MySQL 유저가 번거로움 없이 MariaDB로 전환할 수 있도록 하기 위해 동일한 클라이언트 프로토콜, 클라이언트 API 등을 사용하기 때문이었다. 그래도  MariaDB가 MySQL에 비해 쿼리 속도가 빠르고..

728x90