RDBS/MYSQL 38

[MySQL]UNION, UNION ALL(데이터 병합) 구문 알아보기

MySQL에서의 UNION 구문은 n개 이상의 조회 결과에 대한 데이터를 병합해 주는 구문입니다. 또한 UNION, UNION ALL 이 두 개의 사용에 따라 조회 결과가 조금 달라지기 때문에 아래 예제를 보며 비교해보도록 하겠습니다. UNION, UNION ALL의 기본 문법 및 차이 MySQL에서 UNION과 UNION ALL은 두 개 이상의 조회 결과를 병합하는 경우에 사용됩니다. 하지만 두 개의 구문에서 병합 방식에 차이가 존재합니다. 기본 문법과 같이 차이점에 대해 알아보도록 하겠습니다. 우선 UNION입니다. SELECT column1, column2, ... FROM table_name1 UNION SELECT column1, column2, ... FROM table_name2; 다음으론 ..

RDBS/MYSQL 2023.08.04

[MySQL]인덱스(INDEX)가 웹 애플리케이션의 성능을 올릴 수 있는 이유

데이터베이스에는 대량의 데이터가 존재하는 테이블에서 필요한 데이터를 빠르게 조회하기 위한 자료구조로, 인덱스(INDEX)를 사용하고 있다. 이러한 인덱스(INDEX)의 사용으로 대용량의 데이터가 존재하는 웹 애플리케이션에서 성능을 낼 수 있다. 인덱스(INDEX)란 무엇인가? 인덱스(INDEX)는 데이터베이스에서 제공해 주는 자료구조로 데이터를 빠르게 조회하는 데 사용할 수 있습니다. 정렬된 형태로 테이블의 특정 칼럼에 생성되며, 실제 지정된 칼럼을 기준으로 데이터를 조회할 때 더욱 빠르게 데이터를 조회할 수 있습니다. 즉, 특정 칼럼에 색인을 주어 검색 속도를 향상하기 위해 사용됩니다. Full Scan VS Range Scan 그렇다면 이제 인덱스(INDEX)를 사용하는 것이 아닐 때 보다 왜 높은 ..

RDBS/MYSQL 2023.07.24

[MySQL]데이터베이스 튜닝, 최적의 성능을 위한 5가지 핵심 팁

MySQL은 데이터베이스 관리 시스템으로서 웹 애플리케이션 및 서비스에서 데이터의 효율적인 저장과 처리를 지원하는 핵심 요소입니다. 그러나 효율적이고 최적화된 데이터베이스를 유지하는 것은 웹 사이트의 SEO와 성능에 큰 영향을 미치는 중요한 과제입니다. 이번 글에서는 MySQL 데이터베이스를 튜닝하는데 필수적인 5가지 핵심 팁을 소개합니다. MySQL 튜닝을 해야 하는 이유 MySQL 튜닝을 해야 하는 이유는 웹 애플리케이션 또는 서비스의 성능을 향상하고, 데이터베이스의 효율성과 안정성을 개선하기 위해서입니다. MySQL의 튜닝 방법 : 인덱싱 최적화 적절한 인덱스를 추가하여 데이터베이스의 조회 성능을 향상합니다. 자주 사용되는 칼럼과 검색 조건에 대해 인덱스를 생성하고, 중복 인덱스를 피하도록 주의합니..

RDBS/MYSQL 2023.07.22

[MySQL]테이블 수정하기, ALTER TABLE 총 정리하기

이제 개발을 시작한 프로그래머는 실무에서 테이블을 직접 수정하는 일이 드물고, ALTER TABLE에 대한 문법이 쉽게 잊어버리는 경우가 있어 기록해 보도록 하자. ALTER TABLE이란? 열과 제약 조건을 변경, 추가 또는 삭제하거나 파티션을 재할당하거나 제약 조건과 트리거를 설정 또는 해제하여 테이블의 정의를 수정한다. 라는 정의를 갖고 있는 ALTER 테이블은 쉽게 말해 칼럼의 추가, 삭제 그리고 칼럼의 속성을 변경할 수 있습니다. ADD - 테이블 칼럼 추가 ALTER TABLE [테이블] ADD [추가 컬럼명][타입][속성] CHANGE - 테이블 칼럼명 변경 ALTER TABLE [테이블] CHANGE [변경 전] [변경 후][타입] MODIFTY - 테이블 칼럼 타입 변경 ALTER TAB..

RDBS/MYSQL 2023.07.16

[MySQL]GROUP_CONCAT을 활용하여 그룹 별 데이터 나열하기

MySQL에서 사용하는 그룹화 방법 중 하나로 GROUP_CONCAT() 함수를 사용하여, 그룹 내 열을 나열할 수 있습니다. 실제로 자주 사용되는 함수로 이번 포스팅을 읽고 쉽게 이해하셨으면 좋겠습니다. 어떤 상황에서 사용을 할까? 사번 팀 직급 이름 001 인사팀 과장 차OO 002 개발팀 사원 문OO 003 인사팀 대리 김OO 004 개발팀 부장 박OO 005 기획팀 차장 정OO 위와 같이 사번, 팀, 직급, 이름이 있는 직원 테이블이 있다고 치자. 이러한 상황에서 팀별로 그룹화하고, 한 개의 ROW에 팀에 속하는 멤버의 이름을 담고 싶다면 어떻게 처리해야 할까? 우선 추출하고자 하는 데이터를 확인해 보겠습니다. 추출할 데이터 팀 이름 인사팀 차OO, 김OO 개발팀 문OO, 박OO 기획팀 정OO 위..

RDBS/MYSQL 2023.07.11

[MySQL]동시성 문제를 해결할 FOR UPDATE 알아보기

수많은 유입이 발생하는 웹 서비스를 개발함에 있어서 동시성 문제는 가장 고려해야 할 요소 중 하나이다. 그렇기 때문에 개발을 하면서 "동시성"을 고려하여 개발을 해야 하고, 일관적 처리가 반드시 필요하다. 이번 포스팅에서는 MySQL의 동시성 문제를 처리할 수 있는 FOR UPDATE에 대해 알아보려고 한다. 트랜잭션(Transaction)과 락(Lock) 2023.07.02 - [분류 전체보기] - [MySQL] 트랜잭션(Trasaction) 예제로 간단하게 이해하기 [MySQL]트랜잭션(Trasaction) 예제로 간단하게 이해하기 트랜잭션(Transaction)이란 데이터베이스와 같은 시스템에서 처리되고 있는 업무 중 반드시 묶여서 처리되어야 하는 묶음의 최소단위이다. 일상생활에서 많이 사용되고 있..

RDBS/MYSQL 2023.07.09

[MySQL]WITH ROLLUP(그룹 소계 함수)와 GROUP BY와 비교하기

데이터에 대한 집계는 GROUP BY라는 구문을 사용한다. 하지만 GROUP BY는 그룹화할 칼럼에 대한 집계만 이루어진다. 하지만 각 칼럼별 집계된 값에 대한 총합이 필요한 경우 WITH ROLLUP문을 사용하여 원하는 데이터를 조회할 수 있다. [MySQL]그룹화 하고 조건 부여하기(Group By절, Having절) 📌그룹화 하고 조건 부여하기(Group By절, Having절) 실무에서 가장 많이 사용되고, 가장 이해하기 어려운 GROUP BY에 대해 알아보도록 하겠습니다. 이 구문은 실제 데이터를 조회하면서 데이터를 집 mooonstar.tistory.com WITH ROLLUP 구문 SELECT SUM(COST) FROM PRICE GROUP BY COST WITH ROLLUP; 기본적인 문법..

RDBS/MYSQL 2023.07.04

[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]WITH문을 사용하여 가상의 테이블을 만들어 사용하기

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

RDBS/MYSQL 2023.06.25