데이터노트

    CHAR와 VARCHAR

    DBMS에서 지원하는 데이터 타입에서 살펴봤듯이 각종 DBMS가 지원하는 대표적인 문자형 데이터 타입에는 고정 길이 문자형을 표현하는 'CHAR'와 가변 길이 문자형을 표현하는 'VARCHAR'[각주:1]가 있습니다. 필자는 고정 길이와 가변 길이로 구분한 이유가 궁금했습니다. 데이터 타입을 고정 길이와 가변 길이 형태로 구분한 이유가 무엇일까요? ANSI SQL 표준화 작업 과정 중 데이터전문가들이 검토한 결과로 데이터베이스에서 문자형을 표현하는 데이터 타입을 고정/가변 길이로 구분할 필요성이 있었던 것 같습니다. 아마도 데이터 표현과 데이터 관리의 명확성 때문에 위와 같이 구분한 것 아닐까요? 데이터 타입을 명확히 구분하는 것이 해당 속성의 데이터 특성을 이해하는데 훨씬 효율적일 것입니다. 하지만 데..

    다양한 조인(JOIN)기법

    조인(JOIN)은 관계형 데이터베이스(Relational Database, RDB)의 꽃이라고 불립니다. 조인을 명확하게 이해하기 위해서는 관계형 데이터베이스에 대한 이해가 필요합니다. 관계형 데이터베이스에 대한 설명은 이 글의 범위를 벗어나므로, 관계형 데이터베이스에 대한 자세한 내용은 다음 링크를 참조하시기 바랍니다. 참고로 관계형 데이터베이스의 특징을 한 문장으로 요약하면, 정규화(Normalization) 이론을 활용하여 데이터 이상 현상을 제거하고, 데이터 중복을 최소화하여 데이터를 관리하는 것입니다. 조인이 왜 필요할까요?관계형 데이터베이스의 구조적 특징으로 말미암아 정규화를 수행하면 의미 있는 데이터의 집합으로 테이블이 구성되고, 각 테이블끼리는 관계(Relationship)를 갖게 됩니다...

    DBMS에서 지원하는 데이터 타입

    데이터 모델을 설계하는 과정에서 속성을 도출하고, 속성의 데이터 타입(Data Type)을 결정하는 과정은 꽤 복잡합니다. 그러나 지금까지 경험을 비추어보면, 다양한 상황을 고려하지 않고 데이터 타입을 선택하는 경우가 많았습니다. 이 결과로 말미암아, 속성의 특성에 알맞은 데이터 타입을 사용하지 못하고, 부정확하게 사용하는 경우를 자주 볼 수 있었습니다. 올바른 데이터 타입을 선정하는 것은 매우 중요합니다. 왜냐하면, 데이터 타입을 결정하면 다양한 제약조건이 만들어지고 데이터 타입을 변경하기 어렵기 때문[각주:1]입니다. 이뿐만 아니라, 질의(Query) 작성과 응용 프로그램의 성능에도 큰 영향을 미치게 됩니다[각주:2]. 이 문서에서 현존하는 모든 DBMS에서 지원하는 데이터 타입을 다루는 것은 불가능..

    실행계획, SQL 작성 후 반드시 확인하자.

    지난번에 소개했던 SQL(Structured Query Language)에서 SQL에 대해 간단히 살펴보는 시간을 가졌습니다. 이번 시간에는 많은 분이 놓치고 있는 중요한 내용에 대해 이야기하려 합니다. 글의 작성 순서로 볼 때, 기본적인 SQL 작성법을 먼저 설명하는 것이 옳을 것입니다만, 제가 쓰는 글이 어떤 순서를 갖고 쓰이는 책이 아니기에 꼭 순서를 맞출 필요는 없다고 판단되어 이 주제부터 작성합니다. 오늘 작성하는 글의 주제는 SQL을 어느 정도 숙지하고 있는 독자를 대상으로 이야기를 진행합니다. 응용프로그램을 작성하다 보면 데이터베이스를 활용하는 코드를 빈번히 작성할 것입니다. 이때, 많은 개발자가 작성한 질의문의 결과를 확인한 후, 이 결과가 옳으면 질의문의 성능을 검증하지 않고 바로 프로그..