RDBS 39

[MySQL]WITH문을 사용하여 가상의 테이블을 만들어 사용하기

SQL을 사용하여 대량의 데이터를 다루는 경우, 임의의 결과를 저장할 때마다 테이블에 저장할 수 없다. 그렇다고 해서 그때마다 테이블을 생성할 수도 없다. 이러한 이 유로 인해 임시 결과를 정의하고 사용하는 경우의 임시테이블을 만들어 해당 테이블에 값을 저장할 수 있다. 이번 포스팅은 임시 테이블을 만들고, 실제 자주 사용하는 구문인 WITH문에 대해 알아보도록 하겠습니다. WITH문은 언제 사용할까? 실제 실무에서는 동일한 SQL이 반복되어 사용되는 경우가 많다. 하지만 그때마다 동일한 쿼리를 실행하게 된다면, 프로그램 전체적으로 성능이 느려지는 문제가 발생한다. 이러한 상황에서 반복적인 사용을 가능하게 해주는 구문이 WITH 절입니다. 즉, 게임에서 사용하는 매크로와 마찬가지로 한번 지정해 주면 자동..

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

[MySQL]조회 결과를 INSERT 하는 방법

📌테이블의 이전으로 인해 데이터의 이전 혹은 데이터가 삭제되기 전의 이력을 남기는 경우에 SELECT 한 값을 INSERT를 해야한다. 실제로 자주 쓰이기 때문에 알아두도록 하자. 📌모든 컬럼 조회 후 INSERT 하는 방법 #TABLE2에 대한 조회 결과를 TABLE1에 INSERT INSERT INTO TABLE1 SELECT * FROM FROM TABLE2 📌부분 컬럼 조회 후 INSERT 하는 방법 #TABLE2에 대한 조회 결과를 TABLE1에 INSERT INSERT INTO TABLE1(COLUMN1, COLUMN2, COLUMN3, COLUMN4) SELECT (COLUMN1, COLUMN2, COLUMN3, COLUMN4) FROM FROM TABLE2 WHERE [조건 부여 가능] 😡..

RDBS/MYSQL 2023.04.08