📟 Database/혼자 공부하는 SQL

    [MySQL] 13. 인덱스의 내부 작동 원리와 구조, 인덱스에서 데이터 검색하기

    [MySQL] 13. 인덱스의 내부 작동 원리와 구조, 인덱스에서 데이터 검색하기

    클러스터형 인덱스와 보조 인덱스는 모두 내부적으로 균형 트리로 만들어진다. 균형 트리(Balanced Tree)는 '자료 구조'에 나오는 범용적으로 사용되는 데이터의 구조로써 데이터를 검색하는 데 효율적으로 이루어져있다. 균형 트리는 나무를 거꾸로 표현한 자료 구조로, 트리에서 제일 상단의 뿌리를 루트, 줄기를 중간, 끝에 달린 잎을 리프라고 부른다. 균형 트리 구조에서 데이터가 저장되는 공간을 노드(Node)라고 한다. 루트 노드(Root Node)는 노드의 가장 상위 노드를 말한다. 모든 출발은 루트 노드에서 시작된다. 리프 노드(Leaf Node)는 제일 마지막에 존재하는 노드를 말한다. 루트 노드와 리프 노드 사이에 있는 노드를 중간 노드(Internal Node)라고 한다. 노드라는 용어는 개념..

    [MySQL] 12. 인덱스의 개념과 장단점, 클러스터형 인덱스와 보조 인덱스

    [MySQL] 12. 인덱스의 개념과 장단점, 클러스터형 인덱스와 보조 인덱스

    인덱스는 SELECT에서 즉각적인 효과를 내는 빠른 방법 중 한 가지이다. 즉, 적절한 인덱스를 생성하고 인덱스를 사용하는 SQL을 만든다면 기존보다 아주 빠른 응답 속도를 얻을 수 있다. 인덱스의 장점은 다음과 같다. 1. SELECT 문으로 검색하는 속도가 매우 빨라진다. 2. 그 결과 컴퓨터의 부담이 줄어들어 결국 전체 시스템의 성능이 향상된다. 인덱스의 단점은 다음과 같다. 1. 인덱스도 공간을 차지해서 데이터베이스 안에 추가적인 공간이 필요하다. (대략 테이블 크기의 10% 정도의 공간 필요) 2. 처음에 인덱스를 만드는 데 시간이 오래 걸릴 수 있다. 3. SELECT가 아닌 데이터의 변경 작업(INSERT, UPDATE, DELETE)이 자주 일어나면 오히려 성능이 떨어질 수 있다. MySQ..

    [MySQL] 11. 가상의 테이블: 뷰(생성, 수정, 삭제)

    [MySQL] 11. 가상의 테이블: 뷰(생성, 수정, 삭제)

    뷰(View)는 데이터베이스 개체 중 하나이다. 모든 데이터베이스 개체는 테이블과 관련이 있지만, 특히 뷰는 테이블과 아주 밀접하게 연관되어 있다. 뷰는 한 번 생성해 놓으면 테이블이라고 생각하고 사용해도 될 정도로 사용자들의 입장에서는 테이블과 거의 동일한 개체로 취급된다. 뷰는 테이블처럼 데이터를 가지고 있지는 않다. 뷰의 실체는 SELECT 문으로 만들어져 있기 때문에 뷰에 접근하는 순간 SELECT가 실행되고 그 결과가 화면에 출력되는 방식이다. 비유하자면 바탕 화면의 '바로 가기 아이콘'과 비슷하다. 뷰는 단순 뷰와 복합 뷰로 나뉘는데, 단순 뷰는 하나의 테이블과 연관된 뷰를 말하고, 복합 뷰는 2개 이상의 테이블과 연관된 뷰를 말한다. 뷰를 만드는 형식은 다음과 같다. CREATE VIEW 뷰..

    [MySQL] 10. SQL 테이블 제약조건(기본키, 외래키, 고유키)

    [MySQL] 10. SQL 테이블 제약조건(기본키, 외래키, 고유키)

    제약조건은 데이터의 무결성을 지키기 위해 제한하는 조건이다. 여기서 데이터의 무결성이란 '데이터에 결함이 없음'을 의미한다. 간단한 예로 네이버 회원의 아이디가 중복되면 이메일, 블로그, 쇼핑 기록 등 상당한 혼란이 일어날 것이다. 이러한 것이 바로 데이터의 결함이고, 이런 결함이 없는 것을 데이터의 무결성이라고 표현한다. MySQL에서 제공하는 대표적인 제약조건으로는 6가지가 존재한다. PRIMARY KEY 제약조건, FOREIGN KEY 제약조건, UNIQUE 제약조건, CHECK 제약조건, DEFAULT 정의, NULL 값 허용 테이블에는 많은 행 데이터가 존재한다. 이 중에서 데이터를 구분할 수 있는 식별자를 기본 키(Primary Key)라고 부른다. 기본 키에 입력되는 값은 중복될 수 없으며,..