mysql 27

[MySQL]트랜잭션(Trasaction) 예제로 간단하게 이해하기

트랜잭션(Transaction)이란 데이터베이스와 같은 시스템에서 처리되고 있는 업무 중 반드시 묶여서 처리되어야 하는 묶음의 최소단위이다. 일상생활에서 많이 사용되고 있는 트랜잭션 중 하나가 바로 송금 서비스이다. 이 과정을 들여다보면 A라는 사람이 B에게 송금을 한다고 가정해 보자. 트랜잭션(Transaction)으로 구성하는 이유 A의 잔고 : 금액 차감 B의 잔고 : 금액 증가 이러한 두 과정은 각각의 업무이지만 하나의 트랜잭션(Transaction)으로 구성되어 처리된다. 만약 위의 두 과정을 트랜잭션(Transaction)으로 구성하지 않고 시스템을 운영하면 어떤 일이 벌어질까? 단일 사용자이고, 두 개의 업무가 순서대로 처리된다면 문제가 없을 것이다. 하지만 대부분에 시스템에는 여러 개의 클..

RDBS/MYSQL 2023.07.02

[MySQL]문자열의 대소문자를 변경하는 방법(UPPER, LOWER함수)

SQL로 데이터를 조회하는 과정에서 문자열 데이터의 통일성을 위해 대, 소문자로 변경해야 하는 경우가 발생합니다. 이러한 경우에 MySQL이 제공하는 함수를 사용하여 간단하게 변환할 수 있습니다. UPPER, LOWER의 기본 구조 #UPPER : 소문자 -> 대문자 #LOWER : 대문자 -> 소문자 UPPER , LOWER 예시 SELECT UPPER('Test'); #TEST SELECT LOWER('TeSt'); #test

RDBS/MYSQL 2023.06.25

[MySQL]소수점 다루기 - 반올림(ROUND)과 버림(TRUNCATE)

MySQL에서 다양한 숫자 데이터를 다뤄야 하는 상황에서 데이터의 규격 및 형태를 맞추기 위해 소수점 형태에 데이터에 대한 반올림과 버림을 해야 하는 경우가 있다. 이러한 상황에서 ROUND, TRUNCATE 함수를 활용하여 소수점에 대한 처리를 할 수 있다. 📌반올림 - ROUND SELECT ROUND(1234.5678) FROM DUAL; #자리수를 지정하지 않으면 정수만 출력된다. #RESULT : 1234 SELECT ROUND(1234.5678, 1) FROM DUAL; #RESULT : 1234.6 SELECT ROUND(1234.5678, 2) FROM DUAL; #RESULT : 1234.57 📌버림 - TRUNCATE SELECT TRUNCATE(1234.5678) FROM DUAL; ..

RDBS/MYSQL 2023.06.18

[MySQL]데이터의 특정 값이 포함되어있는지 확인하는 방법(FIND_IN_SET)

FIND_IN_SET 구문을 활용하여 콤마로 구분되는 데이터의 특정 값이 포함되어 있는지 확인할 수 있다. FIND_IN_SET 구문을 사용하기 위해서는 특정 칼럼에 해당하는 데이터가 콤마로 구분되어 있고, 정렬되지 않은 데이터 내부에 특정 값이 포함되어 있는지 확인하는 경우에 유용하게 사용할 수 있습니다. 기본 문법은 다음과 같다. 📌기본 구조 및 사용 예시 #FIND_IN_SET(검색할 문자열, 콤마로 구분된 리스트); #EXAMPLE #FIND_IN_SET("A", "A, B, C, D"); #RESULT #1 검색할 문자열 : A 리스트 : A, B, C, D 결과 : 1 📌FIND_IN_SET - 실 사용 예시 month hist 4 101, 102, 103, 104, 105 5 101, 103..

RDBS/MYSQL 2023.06.06

[MySQL]반드시 알아야 하는 쿼리의 실행 순서

SELECT * FROM [테이블] WHERE [조건] GROUP BY [그룹화할 컬럼] HAVING [그룹화 후 조건] ORDER BY [정렬 컬럼] SQL 쿼리를 통해 필요한 데이터의 조회합니다. 원하는 데이터를 조회하기 위해 쿼리에는 WHERE, GROUP BY, HAVING, ORDER BY 등 다양한 SQL 문법들을 조합하는데 이러한 문법들 사이에서 실행되는 순서가 있습니다. 어떠한 쿼리든 순서에 따라 실행되기 때문에 이러한 처리 순서를 파악하고 있어야만 성능 좋은 쿼리가 만들어집니다. 따라서 이번 포스팅에서는 SQL의 쿼리 실행순서에 대해 알아보도록 하겠습니다. 📢SQL 스크립트 작성 순서 #스크립트 작성 순서 #SELECT - FROM - WHERE - GROUP BY - HAVING - O..

RDBS/MYSQL 2023.05.06

[MySQL]EXISTS, NOT EXISTS를 사용하여 데이터의 존재 여부 확인하기

2023.04.17 - [RDBS/MYSQL] - [MySQL]조건절에 포함되는 데이터 가져오기(WHERE IN, WHERE NOT IN) [MySQL]조건절에 포함되는 데이터 가져오기(WHERE IN, WHERE NOT IN) 📌WHERE절 IN, NOT IN 기본적인 WHERE 절의 사용에 익숙하다면 IN, NOT IN을 사용하여 일치하거나, 불일치하는 데이터만 조회할 수 있다.다음 예제를 통해 확인해보도록 하겠습니다. 📌예제 SELECT * -- 학 mooonstar.tistory.com WHERE 절에서 사용하는 IN, NOT IN절과 유사하게 사용되는 EXISTS, NOT EXISTS 문법에 대해 알아보도록 하겠습니다. 📌연산자 EXISTS 특징 FK로 연관된 두 테이블의 관계가 있는 경우 유용..

RDBS/MYSQL 2023.05.03

[MySQL]다양한 NULL 처리 방법(IFNULL, CASE문, COALESCE)

📌NULL 처리 MySQL에서는 데이터에 대한 NULL 처리가 필요한 상황이 있다. 이러한 상황에서 사용할 수 있는 MySQL에 다양한 NULL 처리 방법에 대해 알아보자. 📌IFNULL SELECT IFNULL("COLIUMN", "대체 값") FROM 테이블; #IFNULL 함수는 컬럼 데이터가 NULL인 경우 대체 값으로 치환할 수 있다. 기본 구조는 다음과 같다. 📌IFNULL - 예제 mem_id mem_name mem_address 1 문OO 경기 안산시 2 차OO 경기 수원시 3 최OO NULL SELECT mem_id , mem_name , IFNULL(mem_address, "주소 누락") AS mem_address FROM member #mem_address에 대한 null값을 "주소 ..

RDBS/MYSQL 2023.05.01

[MySQL]조건절에 포함되는 데이터 가져오기(WHERE IN, WHERE NOT IN)

📌WHERE절 IN, NOT IN 기본적인 WHERE 절의 사용에 익숙하다면 IN, NOT IN을 사용하여 일치하거나, 불일치하는 데이터만 조회할 수 있다.다음 예제를 통해 확인해보도록 하겠습니다. 📌예제 SELECT * -- 학교정보 FROM school_info; 📌조회 결과 mem_id mem_school_name 1 A중학교 2 B중학교 3 C중학교 4 D중학교 5 D중학교 6 A고등학교 📌예제 select * --학생정보 from student_info; 📌조회 결과 mem_id mem_name mem_address 1 david 안양 2 may 과천 3 jack 광명 4 jacky 울산 5 kitty 전주 6 bute 광주 7 hide 광주 8 rosa 평촌 📌포함되는 데이터 조회하기 - WH..

RDBS/MYSQL 2023.04.17

[MySQL]날짜 포맷팅 함수 STR_TO_DATE() 사용하기(DATE_FORMAT의 역기능)

📌날짜를 지정한 형식으로 포맷팅 2023.04.07 - [RDBS/MYSQL] - [MySQL]DATE_FORMAT을 이용한 날짜(일, 월, 년)별 통계(없는 데이터는 0처리 포함) [MySQL]DATE_FORMAT을 이용한 날짜(일, 월, 년)별 통계(없는 데이터는 0처리 포함) MySQL에서는 일, 월, 년도 별로 집계를 해야 하는 상황이 발생합니다. 하지만 GROUP BY를 사용하여 집계를 하는 경우에 데이터가 존재하지 않는다면 그 기간에 데이터를 집계할 수 없습니다. 이번 포 mooonstar.tistory.com 📌문자열을 날짜형식으로 포맷팅 - STR_TO_DATE() 날짜를 원하는 형식으로 포맷팅하는 DATE_FORMAT의 역기능을 할 수 있는 STR_TO_DATE() 함수에 대해 알아보도록..

RDBS/MYSQL 2023.04.14