성장일기

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

데이터베이스 6

마리아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