전체 글 1231

[MySQL] GET DIAGNOSTICS

개요2025.03.24-[MySQL] Stored Procedure - HANDLER에서 SQL을 사용하며 발생하는 에러를 처리하기 위한 핸들러를 알아보았었다. 이번 글에서는 비슷하게 에러를 다루는 데 사용할 수 있는 GET DIAGNOSTICS라는 구문을 알아보려고 한다.  DIAGNOSTICSSQL문을 실행 시 진단 영역에 진단 정보를 생성하는데, 진단 정보는 SQL 실행 중 발생한 오류에 대한 정보를 포함한다. 진단 정보를 통해서 오류 코드, 경고, 영향을 받은 행 수 및 조건, 명령문에 대한 기타 진단 데이터와 같은 세부 정보에 접근할 수 있다.진단 영역은 크게 발생한 조건 수나 영향을 받은 행 수와 같은 명령문 정보와 오류 코드 및 메시지 등의 조건 정보로 구성되어 있다. 명령문이 여러 조건(c..

Database 2025.04.07

[백준] 1926 - 그림

문제문제 : https://www.acmicpc.net/problem/1926어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로로 연결된 것은 연결이 된 것이고 대각선으로 연결이 된 것은 떨어진 그림이다. 그림의 넓이란 그림에 포함된 1의 개수이다.   풀이BFS 방식으로 풀어낼 수 있는 문제이다. 1. 입력값  초기화입력으로 받는 n과 m, 그리고 그림을 초기화한다.n, m = map(int, sys.stdin.readline().split())graph = [list(map(int, sys.stdin.readline().split())) for i in ran..

[Linux] curl: (60) SSL certificate problem: unable to get local issuer certificate - 인증서 검증 무시

개요업무 중 제공되는 주피터 노트북 환경에서 개발한 API에 대한 동작 테스트가 필요하다. 때문에 API를 외부에서 호출해보려고 했는데, 호출 시 다음과 같은 에러가 발생했다.원인을 확인하고 해결 방법을 적어둔다.  원인확인해 보니 curl은 기본적으로 서버의 SSL 인증서를 확인하는데, 그 인증서가 신뢰할 수 있는 인증 기관에 의해 발행되지 않았거나, 모르는 기관에서 발급한 인증서일 경우 검증 에러가 발생할 수 있다고 한다.다시 말해 curl이 서버에서 제공한 인증서를 확인할 수 없을 때 발생할 수 있다.   해결관련해서 해결 방법은 크게 두 가지가 존재한다.- curl이 신뢰하는 인증 기관 목록(CA List; Certificate Authority List)에 접속 사이트의 인증서를 발급한 기관 추..

Linux 2025.04.02

[MySQL] Stored Procedure - HANDLER

개요2025.03.06-[MySQL] Stored Procedure - 매개변수에 이어서 이번 글도 프로시저와 관련된 부분이다.Stored Procedure를 다루다보면 자연스럽게 에러 처리에 대한 요구사항도 생기기 마련이다. 이번 글에서는 Stored Procedure에서 에러를 적절하게 처리하기 위한 개념인 Handler에 대해서 알아본다.  Handler프로시저 내에서 DECLARE ~ HANDLER 구문은 하나 이상의 조건을 처리하는 핸들러를 정의할 수 있다. DECLARE handler_action HANDLER FOR condition_value [, condition_value] ... statementhandler_action: { CONTINUE | EXIT | UND..

Database 2025.04.01

[Codility] BinaryGap

문제문제 : https://app.codility.com/programmers/lessons/1-iterations/binary_gap/양의 정수 N에서 바이너리 갭은 이진수에서 양 끝이 1로 둘러싸인 연속된 0의 최대 수이다.예로 들어, 숫자 9는 이진수로 1001이고, 길이가 2인 바이너리 갭을 가진다. 숫자 529는 이진수로 1000010001이며, 길이가 4이고 3인 두 개의 바이너리 갭을 가진다. 숫자 20인 이진수로 10100이고 길이가 1인 바이너리 갭을 가지고, 숫자 15는 이진수로 1111이고 바이너리 갭을 갖고 있지 않다. 숫자 32 또한 이진수로 100000으로 바이너리 갭을 가지고 있지 않다. 양의 정수 N이 주어지면 가장 긴 바이너리 갭의 길이를 반환하는 함수를 작성하라. N에 바..

[MySQL] Prepared Statement

개요프로시저를 분석하다 보면 PREPARE라는 구문을 종종 발견하게 되는데, 이번 글에서는 관련 개념을 정리해보려고 한다.  Prepared StatementPrepared Statement은 미리 컴파일된 문장을 의미하며, 컴파일하여 저장해 둔 문장을 여러 번 실행할 수 있을 뿐만 아니라 자리 표시자를 활용하여 동적으로 SQL을 실행시킬 수도 있다. 미리 컴파일된 문장을 활용하기 때문에 구문을 실행시킬 때마다 분석하는 오버헤드를 줄일 수 있다는 장점이 있다.MySQL에서는 PREPARE(컴파일) -> EXECUTE(실행) -> DEALLOCATE PREPARE(해제)의 흐름으로 Prepared Statement을 사용한다.  PREPAREPREPARE는 SQL문을 주닙하고 나중에 참조할 수 있도록 이름..

Database 2025.03.28

[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