mysql 10

[Spring] Transactional의 이해

💡 트랜잭션🤔 트랜잭션이란?트랜잭션이란 데이터베이스 혹은 유사 시스템에서 하나의 상호작용 단위이다. 이는 데이터의 정합성을 보장하기 위해 고안된 방법이다. 이는 데이터베이스를 일관성 있게 유지하고, 동시 접근하는 여러 프로그램 간의 격리를 제공하기 위해 존재한다.트랜잭션 내 SQL문들은 모두 성공하여 commit 되거나, 하나라도 실패하는 경우 전체가 rollback 된다. 🫨 ACID트랜잭션이 어떤 속성을 지녀야 하는지 나타내는 핵심이다.4가지 규칙을 모두 보장해 안전하게 수행되어야 한다. 원자성(Atomicity)All or Noting모두 성공 or 모두 실패하나의 트랜잭션은 논리적으로 나누어질 수 없는 단위이기 때문에 동일한 경과를 보장해야 한다.즉, 일부만 성공하거나 실패하는 상태는 존재해..

Spring/Spring 2026.03.02

[MySQL] Boolean vs Enum

MySQL에서 Boolean과 Enum 사용에 대한 고찰Boolean 타입MySQL에는 BOOLEAN이라는 타입 자체가 존재하지 않는다.MySQL 공식 문서 - Data Types MySQL :: MySQL 8.4 Reference Manual :: 13 Data TypesMySQL supports SQL data types in several categories: numeric types, date and time types, string (character and byte) types, spatial types, and the JSON data type. This chapter provides an overview and more detailed description of the properties ..

DB/MySQL 2025.11.24

[MySQL] DETERMINISTIC vs NOT DETEMINISTIC

🔹 의미DETERMINISTIC = “같은 입력값에 대해서 항상 같은 결과를 반환한다”CREATE FUNCTION double_value(x INT)RETURNS INTDETERMINISTICBEGIN RETURN x * 2;END;NOT DETERMINISTIC = “같은 입력값이라도 상황(시간, 환경 등)에 따라 결과가 달라질 수 있다”CREATE FUNCTION random_value()RETURNS DOUBLENOT DETERMINISTICBEGIN RETURN RAND();END;두 함수가 동일한 동작을 해도 함수 호출 시에 호출 횟수 등에 차이가 발생할 수 있다.→ 이전에 계산된 값을 재사용할 수 있다면 굳이 함수를 다시 호출할 필요가 없기 때문이다.인덱스 사용 시 DETERMIN..

DB/MySQL 2025.10.11

[MySQL] VARCHAR vs TEXT

해당 내용은 인프런 Real MySQL 시즌1 - PART 1 강의를 참고하여 작성한 것입니다.공통점문자열 속성 값을 저장최대 65,535 Bytes까지 저장 가능차이점VARCHAR 타입 컬럼에는 지정된 글자 수만큼만 데이터 저장 가능VARCHAR(10) → 10글자 이하만 저장 가능TEXT 타입 컬럼은 인덱스 생성 시 반드시 Prefix 길이 지정 필요CREATE INDEX ix_text_column on table(text_column(100));위와 같이 사용하면 앞의 100글자까지만 인덱스로 사용하겠다는 뜻지정하지 않으면 에러 발생TEXT 타입 컬럼은 표현식으로만 디폴트 값 지정 가능CREATE TABLE tb1 (col TEXT DEFAULT ‘abc’) → 에러 발생CREATE TABLE tb..

DB/MySQL 2025.10.11

[MySQL] CHAR vs VARCHAR 타입 선정

해당 내용은 인프런 Real MySQL 시즌1 - PART 1 강의를 참고하여 작성한 것입니다. 공통점문자열 저장용 컬럼최대 저장 가능 문자 길이 명시바이트 수 X → CHAR(10)이면 문자 종류 관계없이 10글자차이점값의 실제 크기에 관계없이 고정된 공간 할당 여부최대 저장 길이 : CHAR(255) vs VARCHAR(16383) → (65535바이트)저장된 값의 길이 관리 여부 (VARCHAR와 가변 길이 문자셋 사용하는 CHAR는 저장된 값 길이 관리)0~255 bytes → length-bytes : 1256~65535 bytes → legnth-bytes : 2저장 방식Latin1CHAR(10)4바이트를 넣으면 6바이트를 공백으로 관리한다.VARCHAR(10)4바이트를 넣으면 길이 저장용 1..

DB/MySQL 2025.10.11

[MySQL] DATE 자료형 정리

MySQL의 날짜 시간 타입 Mysql에는 시간에 대한 다양한 자료형이 있다. 대표적으로 TIMESTAMP , DATE , DATETIME 같은 것들이 있다. JAVA를 주로 사용하는 나를 기준으로 하자면 LocadDate -> DATE, LocalDateTime -> DATETIME 로 바뀌게 된다. 그렇다면 각자 무엇을 어떻게 나타내주는 것인지 알아보자.DATE 와 DATETIME주로 사용되는 자료형이다. 둘 다 타입명 자체에서 알 수 있듯이 날짜와 날짜+시간을 저장하기 위한 타입이다. DATE : 'YYYY-MM-DD' 포맷으로 표현되고, DATETIME : 'YYYY-MM-DD hh:mm:ss' 의 포맷으로 표현된다.이 때 구분자는 다른 구두점으로도 변경 가능하나 주의를 하며 변경해야한다.DAT..

DB/MySQL 2024.11.20

[프로그래머스] 조건에 맞는 도서와 저자 리스트 출력하기(SQL)

문제https://school.programmers.co.kr/learn/courses/30/lessons/144854풀이(15분)SELECT BOOK_ID, AUTHOR_NAME, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') as PUBLISHED_DATEFROM (BOOK INNER JOIN AUTHOR ON BOOK.AUTHOR_ID = AUTHOR.AUTHOR_ID)WHERE CATEGORY = '경제'ORDER BY PUBLISHED_DATE; 날짜 형식을 맞추기 위해 DATE_FORMAT를 사용한다.inner join 을 통해 책의 저자 아이디와 저자 리스트의 아이디가 동일하고,카테고리가 경제인 경우에 대하여,출판일 기준으로 오름차순 출력한다.

[프로그래머스] 경기도에 위치한 식품 창고 목록 출력하기(SQL)

문제https://school.programmers.co.kr/learn/courses/30/lessons/131114 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이(15분)SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, ifnull(FREEZER_YN,'N') as FREEZER_YN FROM FOOD_WAREHOUSE WHERE ADDRESS LIKE '경기도%'ORDER BY WAREHOUSE_ID ASC; ifnull이라는 메서드를 통해 null값을 대체할 수 있다.ifnull(칼럼명, '대체하고 싶은 텍스트') 라고 작성하면 된다. 이 경우 null을 발견..