mysql 70

[MySQL] GREATEST/LEAST - 행 별 최대/최소 찾기

개요평소 많이 사용하는 MAX 함수는 특정 열 내의 최댓값을 찾는 함수이다. 그런데 이번에는 특정 행 내의 최댓값을 확인해야 하는 경우가 발생했다. 이번 글에서는 greatest라는 함수를 사용해 각 행의 최댓값을 찾아본다.  GREATESTGREATEST는 주어진 수에서 가장 큰 값을 반환한다. 숫자 뿐만 아니라 문자열을 대상으로도 연산을 할 수 있다.GREATEST(arg1, arg2, arg3, ...)-- 예시SELECT GREATEST(1, 10, 100, 32) AS greatestUNIONSELECT GREATEST("w3Schools.com", "microsoft.com", "apple.com") AS greatest아래는 테이블에 대해 사용하는 예시이다. 먼저 다음과 같은 세 개의 숫자형..

Database 2025.03.27

[MySQL] DELETE JOIN - 교차 테이블 데이터 삭제

개요2025.03.12-[MySQL] UPDATE JOIN - 교차 테이블 갱신에서 UPDATE JOIN 구문에 대해서 알아보았는데, 이번에는 DELETE JOIN이라는 구문도 발견해서 추가로 정리한다.  DELETE JOINDELETE JOIN은 다른 테이블과 관련된 조건에 따라 한 테이블에서 행을 삭제할 수 있다. 여러 연결된 테이블에 존재하는 데이터에 대해 특정 조건에 따라 행을 삭제해야 할 때 유용하다.DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.key = T2.key WHERE condition;데이터를 삭제할 테이블을 DELETE와 FROM 절 사이에 나열한다. 위의 예시의 경우 T1, T2 테이블을 나열했는데, 만약 T1만 기재하면 T1 테이블의 데이터만 삭제..

Database 2025.03.26

[MySQL] UPDATE JOIN - 교차 테이블 갱신

개요데이터베이스를 다룰 때에 UPDATE를 수행할 때는 단순하게 단일 테이블에 대해서만 수행을 했었는데, 현재 사용 중인 프로시저를 분석하던 중 UPDATE 문에서 JOIN을 사용하는 문법을 발견했다.이번 글에서 UPDATE JOIN 구문이 어떻게 동작하는지 정리해 둔다.  UPDATE JOINUPDATE JOIN은 다른 테이블의 값을 기반으로 한 테이블을 업데이트하는 등의 작업을 할 때 사용할 수 있는데, 그 구문은 다음과 같다.UPDATE T1[INNER JOIN | LEFT JOIN] T2 ON T1.C1 = T2.C1SET T1.C2 = T2.C2, T2.C3 = exprWHERE condition; 동작 흐름UPDATE 키워드 뒤에 갱신할 테이블 지정한다.JOIN 절 사용한다. JOIN ..

Database 2025.03.25

[MySQL] Function - 정의/호출/삭제

개요2025.02.26-[Database] Stored Procedure - 정의/호출에서 데이터베이스에서 여러 쿼리를 한 번에 처리하는 목적으로 사용하는 프로시저에 대해서 알아보았다.프로시저는 호출하여 사용한다는 점에서 함수(Function)와 유사한 점이 있는데, 이번 글에서는 함수에 대해서 알아보려고 한다.  Function 데이터베이스에서의 함수는 일반적인 프로그래밍 언어에서의 함수 개념과 동일하다. 입력값을 받아 특정 결과를 수행한 결괏값을 출력하는 구조로, DML에서 사용할 수 있다. 일반적으로 데이터베이스에서는 count, sum, avg 등과 같은 함수를 제공하고 있는데, 데이터베이스에서 제공하지 않는 함수는 사용자가 직접 정의하여 사용할 수도 있다.    정의함수를 정의할 때는 CREAT..

Database 2025.03.24

[MySQL] Stored Procedure - 매개변수

개요2025.02.26-[Database] Stored Procedure - 정의/호출에서 프로시저의 매개변수를 정의하는 부분을 간단하게 살펴봤었다. 이번 글에서는 매개변수를 정의하고 실제로 사용하는 예시를 정리해두려고 한다.   ININ 유형의 매개변수는 프로시저를 호출할 때 전달하는 입력 매개변수이다. 프로시저 내에서 사용할 때는 변수명만 기재하면 된다.CREATE PROCEDURE test_procedure( IN value VARCHAR(20))BEGIN SELECT value;END-- 호출CALL test_procedure('test');   OUTOUT 유형 매개변수는 프로시저가 호출자에게 값을 반환하는 매개변수이다. 프로시저 내에서 NULL로 초기화된다.CREATE PROCEDU..

Database 2025.03.19

[MySQL] DELIMITER - 구분 기호

개요Stored Procedure에 대해서 알아보다보면 SQL 구문에 DELIMITER 라는 키워드를 찾아볼 수 있다. 이번 글에서는 DELIMITER의 역할에 대해서 잠깐 알아보려고 한다.  DELIMITER기본적으로 SQL의 구문기호는 세미콜론(;)이다. 데이터베이스는 세미콜론을 기준으로 하나의 쿼리문을 인식하고 실행시킨다. 하지만 필요한 경우 구분 기호를 변경하여 사용하기도 한다. 이 때 사용하는 키워드가 바로 DELIMITER이다.DELIMITER DELIMITER는 쿼리를 구분하는 구분 기호를 전달받은 문자열로 재정의하여 사용한다.DELIMITER //select 1//select 2//테스트해보면 기본 구분 기호인 세미콜론이 아니라 '//' 문자열을 구분 기호로 하여 쿼리가 실행되고 있음을 확..

Database 2025.03.18

[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