1. 들어가며PK를 고르는 것은 생각보다 까다로운 일입니다. 테이블 스키마의 가장 기본이 되는 값이면서도 그 영향 범위가 매우 넓기 때문인데요. Uniqueness를 생각해서 그냥 UUID를 사용하는 경우도 꽤 자주 본 것 같습니다. 오늘은 UUID를 PK로 사용할 때 주의할 점을 함께 살펴보겠습니다 2. UUID정의UUID는 'Universally Unique Identifier'의 약자로 128-bit의 고유 식별자입니다. 다른 고유 ID 생성 방법과 다르게 UUID는 중앙 시스템에 등록하고 발급하는 과정이 없어서 상대적으로 더 빠르고 간단하게 만들 수 있다는 장점이 있습니다.하지만 완전히 고유하지 않을 확률이 있는데요. RFC 4122 문서에 정의된 UUID 버전 4 표준 규약을 따르면 1조 개의..
1. 들어가며콜레이션이란? 하면 저는 사실 부끄럽게도 처음 듣는 단어였습니다. 다만 이번에 Real MySQL을 학습하면서 문자열을 다룰 때 몰라서는 안 될 정보라는 걸 알게 된 만큼 이 글을 읽는 분들도 꼭 알아가시길 바랍니다! 2. 콜레이션 (Collation)정의 및 특성문자를 비교하거나 정렬할 때 사용되는 규칙문자집합(Character Set)에 종속적문자와 코드값(코드 포인트)의 조합이 정의되었는 것이 문자집합e.g. "A=U+0041", "B=U+0042", "a=U+0061", "b=U+0062"MySQL에서 모든 문자열 타입 컬럼은 독립적인 문자집합과 콜레이션을 가질 수 있습니다.사용자가 특별히 지정하지 않는 경우, 서버에 설정된 문자집합의 디폴트 콜레이션으로 자동 설정됩니다. (서버의 ..
1. 들어가며Prepared Statement는 주로 SQL Injection이나 쿼리 파싱 비용을 줄이기 위해 사용한다. 정도로 어렴풋하게 알고 있는 경우가 많은데요. 오늘은 Prepared Statement에 대해 더 자세히 알아보고 잘 활용하는 방법에 대해 써보고자 합니다! 2. Prepared Statement정의Prepared Statement라는 단어를 해석해보면 '준비된 문장' 정도로 해석이 가능합니다. 그런데 무엇이 준비되었다는 뜻일까요? 바로 쿼리가 준비되었다는 의미입니다.이미 쿼리실행계획 분석과 컴파일이 완료되어서 DBMS의 캐시에 준비되어있는 쿼리를 사용한다는 뜻입니다. pstmt = connection.prepareStatement("SELECT * FROM matt WHERE i..
1. 들어가며쿼리를 짜며 INNER JOIN 혹은 LEFT JOIN은 사용할 일이 자주 있습니다. 둘의 차이는 널리 알려져 있고 헷갈리는 경우는 별로 없는데요. 다만 LEFT JOIN의 경우 오용하는 경우도 많고, 속도 면에서 디메리트가 크기 때문에 짚고 넘어갈 필요가 있습니다. 2. LEFT JOIN정의: 쉽게 생각하면 왼쪽 테이블이 주인공이 되는 조인입니다. 둘 중 한쪽 테이블을 기준으로 LEFT 또는 RIGHT JOIN을 할 경우, 그 기준이 되는 테이블의 모든 레코드를 출력하게 됩니다.예를 들어 다음과 같은 테이블이 있다고 해볼까요CREATE TABLE user ( id int NOT NULL AUTO_INCREMENT, name varchar(20) NOT NULL, ... PRIMARY..
1. 들어가며 DB에서는 다양한 에러가 발생합니다. 이런 에러에 대해 500 에러로 처리할 수 있지만 retry를 하거나 다른 핸들링 로직을 추가하고 싶을 수 있습니다. 하지만 MySQL 에러는 다양한 구분과 다양한 코드를 가지고 있습니다. 이러한 에러를 어떻게 해야 범용성 있게, 우아하게 핸들링 할 수 있는지 알아보도록 하겠습니다. 2. 에러 핸들링구분MySQL 에러 구분:Global ErrorServer-side & Client-side에서 공용으로 발생Server ErrorServer-side에서만 발생Client ErrorClient-side에서만 발생 주의사항일부 에러는 서버에서만 찾으면 되고, 아니면 client에서만 찾는 등 에러 번호 만으로 디버깅 위치를 특정할 수 있습니다다.다만 일부 S..
1. Generated Column정의"표현식"으로 정의된 컬럼정의된 "표현식"에 따라 컬럼의 값이 자동으로 생성"표현식" = 고정된 값, 함수 또는 다른 컬럼들에 대한 연산 조합 등이 해당사용자가 직접 값을 입력하거나 변경할 수 없음두 가지 종류가 존재합니다.- Virtual Generated Column (가상 컬럼) - Stored Generated Column (스토어드 컬럼) 생성 방법col_name data_type [GENERATED ALWAYS] AS (expr)[VIRTUAL | STORED] [NOT NULL | NULL][UNIQUE [KEY]] [[PRIMARY] KEY][COMMENT 'string'] 기본적으로 위와 같은 문법으로 생성할 수 있습니다. 익숙한 문법이겠지만 []의 ..