Database 104

[MySQL] Stored Procedure - 반복문

개요2025.02.28-[MySQL] Stored Procedure - 조건문에서 프로시저 내에서 조건에 따라 실행흐름을 제어해 보았다. 이번 글에서는 반복문을 사용해보려고 한다.  WHILEWHILE문은 조건문이 참인 경우 계속 반복하며 실행된다. 다시 말해 조건이 거짓이 되면 반복을 종료한다.[begin_label:] WHILE search_condition DO statement_listEND WHILE [end_label] 예시 )아래 예시는 입력으로 받은 문자를 입력받은 수만큼 반복하여 SELECT 하는 프로시저이다. DELIMITER &&CREATE PROCEDURE test_procedure( IN loop_str CHAR, IN loop_val INT)BEGIN declare..

Database 2025.03.14

[MySQL] Stored Procedure - 조건문

개요2025.02.26-[Database] Stored Procedure - 정의/호출, 2025.02.27-[MySQL] Stored Procedure - 변수에서 MySQL에서 Stored Procedure, 그리고 Stored Procedure의 내부 변수를 선언하고 사용하는 방법을 알아보았다.Stored Procedure의 큰 장점 중 하나가 바로 프로그램처럼 조건 논리를 구현하여 실행 흐름을 제어할 수 있다는 것이다. 이번 글에서는 Stored Procedure에서 사용할 수 있는 조건문에 대해서 알아본다.   IFIF문은 기본적인 조건 구문을 구현한다.IF search_condition THEN statement_list [ELSEIF search_condition THEN stateme..

Database 2025.03.11

[MySQL] Stored Procedure - 변수

개요2025.02.26-[Database] Stored Procedure - 정의/호출에서 프로시저의 기본적인 정의와 사용 방법에 대해서 알아보았다. 이번 글에서는 프로시저에서 변수를 선언하고 사용하는 방법을 정리해둔다.  변수 선언프로시저 내에서 사용할 변수는 DECLARE 문으로 선언한다.DECLARE variable_name datatype(size);-- 기본값 지정DECLARE variable_name datatype(size) DEFAULT default_value;-- 여러 변수 한 번에 선언DECLARE variable_name, variable_name datatype(size) DEFAULT default_value;변수를 선언했을 때의 초기값은 Null이다. 만약 선언과 동시에 초기화..

Database 2025.03.10

[Database] Stored Procedure - 정의/호출

개요운영 서비스의 데이터베이스에서 프로시저를 사용하여 여러 테이블에 대한 작업을 한 번에 수행하고 있는데, 프로시저를 잘 알지 못하다 보니 동작 흐름 분석에 어려움이 있다.때문에 이번 글에서는 프로시저에 대한 개념이나 아주 기본적인 문법을 정리해보려고 한다. 참고로 MySQL을 기반으로 문법을 정리한다.  Stored Procedure프로시저는 여러 쿼리를 모아 하나의 함수처럼 실행하기 위한 쿼리 집합이다. 함수처럼 매개변수를 전달받아 반복적으로 상할 수 있는 블럭으로, 보통 구현이 복잡한 트랜잭션이나 연속 실행 등을 수행할 때 사용한다.프로시저를 사용하면 하나의 요청으로 여러 쿼리를 실행하여 네트워크 부담을 줄일 수 있다. 하지만 처리 성능이 높지  않고, 재사용성이 좋지 않아 업무 사양 변경 시 응용..

Database 2025.03.07

[Database] 임시 테이블 VS CTE

개요2025.02.18-[MySQL] Temporary Table에서 임시 테이블이라는 개념을 살펴보았는데, 비슷한 개념으로 WITH문을 사용하는 CTE (2022.06.01-[MySQL] WITH - 임시 테이블 생성)가 존재한다.이번 글에서는 두 개념 사이에 어떤 차이점이 존재하는지 살펴보려고 한다.  임시 테이블과 CTECTEWITH CTE_Name (Column1, Column2, ...) AS ( SELECT Column1, Column2 FROM TableName WHERE Condition ) SELECT * FROM CTE_Name;단일 SELECT, INSERT, UPDATE, DELETE 문 실행 범위 내에서 정의된 임시 결과 ..

Database 2025.02.28

[MySQL] Temporary Table

개요최근 서비스에서 사용하고 있는 프로시저의 코드를 분석하면서 TEMPORARY TABLE이라는 키워드를 발견했다. 확인해보니 임시 테이블을 다룰 때 사용하는 키워드인 것 같았다.이번 글에서는 임시 테이블의 개념과 사용에 대해서 정리해보려고 한다.   임시 테이블임시 테이블은 현재 세션 내에서만 유지되며 세션이 종료되면 자동으로 삭제되는 테이블이다. 데이터베이스에 저장되지 않기 때문에 테이블에 쿼리의 중간 결과를 저장할 필요가 있지만, 계속 유지할 필요는 없을 때 사용할 수 있다. 생성하면 세션 내에서는 여러 번 재사용할 수 있고, SELECT문이 데이터를 쿼리하는데 비용이 많이 드는 경우 유용하다. 임시 테이블은 생성한 클라이언트만 접근할 수 있다는 특징이 있다. 다른 클라이언트에 영향을 주지 않기 때..

Database 2025.02.26

[DBeaver] 결과 패널 헤더 복사

개요DBeaver에서 SELECT를 수행하고 결과 패널의 출력을 복사할 때가 많은데, 결과 패널의 내용을 전체 선택하여 복사를 해도 컬럼명은 포함되지 않는 것 같다.위와 같이 전체를 선택한 상태에서 복사를 수행해도, 실제로 복사된 내용은 아래와 같다.2024-11-12 04:08:05.0 2024-11-11 04:00:00컬럼명도 포함해서 전체 복사하는 방법을 적어둔다.  Advanced CopyDBeaver의 일반 복사는 하나 이상의 셀의 내용을 탭으로 구분된 형식으로 복사한다. 복사의 방식을 제어하고 싶다면 Advanced Copy를 사용한다. Advanced Copy를 사용하면 열 이름 포함 여부, 행 번호 포함 여부, 구분 기호, 값 형식 등을 제어할 수 있다.Advanced Copy 기능에 진입..

Database 2024.11.27

[Redis] 키 만료 시간 설정

개요2023.06.03-[Python] redis 사용하기에서 redis에 값을 추가하고 값을 가져오는 방법을 알아보았다. 그리고 최근 redis에서는 값의 만료 시간을 설정할 수 있다는 것을 알게 되었다.방법을 적어둔다.   SETredis에 값을 설정하는 SET 명령을 사용할 때 만료 시간을 설정할 수 있는데, 그 옵션은 아래와 같다.EX : 초 단위 만료 시간 설정. 지정한 초 이후에 삭제된다.PX : 밀리 초 단위 만료 시간 설정. 지정한 밀리 초 이후에 삭제된다.EXAT : 만료 Unix 시각 설정. 초 단위로 설정하고, 해당 시각 이후에 삭제된다.PXAT : 만료  Unix 시각 설정. 밀리 초 단위로 설정하고. 해당 시각 이후에 삭제된다.참고로 EX 옵션은 SETEX 명령으로, PX 옵션은 ..

Database 2024.11.26

[MySQL] GROUP_CONCAT으로 압축한 행 풀기

개요2024.09.10-[MySQL] GROUP_CONCAT - 그룹 별 행 압축에서 특정 컬럼에 대해 그룹 별로 압축하는 GROUP_CONCAT 함수를 알아보았다. 이번 글에서는 JSON_TABLE, JSON_ARRAY를 활용하여 압축한 행을 다시 풀어내는 방법을 적어본다.  예제 데이터다음과 같은 예제 데이터를 사용하여 방법을 적어둔다.| type | names || ------- | -------- || cooker | 뒤집개 || fruit | 수박,사과,사과 | DDL더보기CREATE TABLE objects ( type varchar(50), names varchar(100));INSERT INTO objects VALUES ('cooker ', '뒤집개');INS..

Database 2024.10.11

[MySQL] JSON_TABLE - JSON 데이터를 테이블로 변환

개요2024.09.23-[MySQL] JSON 다루기에서 MySQL에서 JSON 형식의 데이터를 추가하고 조회하는 방법을 알아보았다.이번 글에서는 JSON 데이터를 테이블 형태로 변환하는 함수인 JSON_TABLE 함수의 사용 방법을 적어둔다.  JSON_TABLEJSON_TABLE(expr, path COLUMNS (column_list) [AS] alias)JSON_TABLE은 JSON 데이터를 표형식 데이터로 변환하는 함수로 MySQL 8.0에서 도입되었다. 매개변수는 다음과 같다.- expr : 테이블로 변환할 JSON 데이터- path : 테이블 행을 생성하는데 사용하는 JSON 경로- column_list : 테이블 열을 생성하는데 사용하는 JSON 경로 예시와 함께 사용 방법을 적어둔다.  ..

Database 2024.10.10