본문 바로가기

MySQL

(20)
[MySQL] VALUES - keyword, function & statement Keyword 로서의 VALUES INSERT 문에서 삽입할 값을 나열할 때 VALUES 를 사용합니다. 이 때의 VALUES는 keyword 입니다. INSERT INTO table_name (col1, col2, col3) VALUES ('value1', 'value2', 'value3'); Function 으로서의 VALUES() 일반적인 INSERT … ON DUPLICATE KEY UPDATE 문은 아래와 같습니다. INSERT INTO table_name (id, col1, col2) VALUES ('key_value', 'value1', 'value2') -- VALUE keyword ON DUPLICATE KEY UPDATE col1 = 'value1' , col2 = 'value2'; 여..
About Sequel SAFE 배경 데이터베이스 형상 관리란, 데이테베이스를 구성하는 각 객체 - Table, View, Index, Stored Procedure, Function, Trigger, etc - 와 데이터베이스 자체에 대한 버전 관리를 기반으로 변경 사항을 체계적으로 추적하고 통제하는 것입니다. 하지만 MSA (Micro Service Architecture)를 지향하는 현재에도 데이터베이스를 독립적인 배포의 대상이 아닌 백엔드 시스템의 일부로 보는 경향이 짙은 것 같습니다. 하지만, 프론트엔드나 백엔드처럼 데이터베이스 역시 별도의 형상 관리가 가능합니다. 데이터베이스를 형상 관리한다면 배포 역시 체계적이 됩니다. 즉, 더 이상 Diff. 도구로 개발 DB와 프로덕트 DB의 차이를 찾아 마이그레이션 스크립트를 작성할 ..
[MySQL] 사용자 로그 테이블 - (3) 자동화된 파티션 관리 [MySQL] 사용자 로그 테이블 - (1) Primary Key가 필요한가? [MySQL] 사용자 로그 테이블 - (2) 파티션 관리 [MySQL] 사용자 로그 테이블 - (3) 자동화된 파티션 관리 이전 글들에서 사용자 로그 테이블을 설계할 때 Key에 대해 고려할 점과 파티션을 적용하고 관리하는 방법을 소개했습니다. 이 글에서는 사용자 로그 테이블에 daily 파티션을 생성, 추가 및 삭제하는 일련의 작업을 자동으로 처리하는 방법에 대해 살펴 봅니다. 개요 관리 대상 테이블을 지정하고 로그의 보관 기간을 설정하는 방법 `log_retention` 테이블을 생성하고 다음의 내용을 저장 사용자 로그 테이블의 이름 파티션 키로 사용하는 날짜 컬럼의 이름 로그 보관 기간 파티션 관리 Stored Proce..
[MySQL] 사용자 로그 테이블 - (2) 파티션 관리 [MySQL] 사용자 로그 테이블 - (1) Primary Key가 필요한가?[MySQL] 사용자 로그 테이블 - (2) 파티션 관리[MySQL] 사용자 로그 테이블 - (3) 자동화된 파티션 관리 이 글에서는 로그 테이블의 Daily 파티션을 관리하는 일반적인 방법을 소개합니다. 파티션 추가하기현재 `sample_log` 테이블에 3개의 파티션이 있다고 가정하겠습니다. 123SELECT PARTITION_NAME, PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_DESCRIPTIONFROM information_schema.PARTITIONSWHERE TABLE_NAME = 'sample_log';Colored by Color Scriptercs (결과) 로그 ..
[MySQL] 사용자 로그 테이블 - (1) Primary Key가 필요한가? [MySQL] 사용자 로그 테이블 - (1) Primary Key가 필요한가?[MySQL] 사용자 로그 테이블 - (2) 파티션 관리[MySQL] 사용자 로그 테이블 - (3) 자동화된 파티션 관리 로그 테이블과 Primary Key InnoDB 에 대한 몇 가지 사실을 열거해 봅시다. Primary Key는 항상 Clustered Index 이다.Primary Key가 없다면 다음 우선 순위에 따라 Clustered Index가 선택된다. 즉, Clustered Index가 없는 테이블은 존재하지 않는다.NOT NULL 속성의 Unique Key (= Unique Index)후보가 없다면, 보이지 않는 컬럼을 내부적으로 추가하여 사용auto_increment 속성의 컬럼은 반드시 단일 Key 또는 복합..
[MySQL] 5.7에서 JSON 을 JSON_TABLE() 함수 없이 테이블로 변환하기 MySQL 8.0.4 이후 버전에서는 JSON_TABLE() 함수를 FROM 절에서 사용할 수 있습니다. JSON_TABLE() 문법12345678910111213141516171819JSON_TABLE( expr, path COLUMNS (column_list)) [AS] alias column_list: column[, column][, ...] column: name FOR ORDINALITY | name type PATH string path [on_error] [on_empty] | name type EXISTS PATH string path | NESTED [PATH] path COLUMNS (column_list) on_error: {NULL | ERROR | DEFAULT json_stri..
[MySQL / Stored Procedure] 에러 핸들링 (5) SIGNAL [MySQL / Stored Procedure] 에러 핸들링 시리즈(1) DECLARE ... HANDLER(2) Error Logging(3) CONSTRAINT (上)(4) CONSTRAINT (下)(5) SIGNAL 1편 ~ 4편까지 SQLEXCEPTION 이 발생했을 때, 에러 또는 예외에 대한 SP 리턴 값을 지정하고 필요에 따라 로깅하는 방법을 소개해 드렸습니다. 이 글에서는 SQLEXCEPTION 이 발생하지 않는 예외 상황에서도, DECLARE ... HANDLER 를 사용하여 SP 리턴 값을 지정하고 로깅하는 방법을 소개합니다. 어떤 상황이 SQLEXCEPTION 이 없지만 예외로 처리해야하는 상황일까요? 대표적인 예로, 수정하거나 삭제하려는 Row 가 존재하지 않는 경우가 있습니다. 참..
[MySQL / Stored Procedure] 에러 핸들링 (4) CONSTRAINT (下) [MySQL / Stored Procedure] 에러 핸들링 시리즈(1) DECLARE ... HANDLER(2) Error Logging(3) CONSTRAINT (上)(4) CONSTRAINT (下)(5) SIGNAL학생이 강의를 수강하는 모델 테스트 DB와 테이블을 아래와 같이 생성합니다.123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566CREATE DATABASE exception_test DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci; USE exception..