📌 MySQL Group By와 집계 함수 활용(Error Code 1055 해결 방법)
·
기술블로그
📌 개념 정리이번 포스팅에서는 MySQL에서 Error Code: 1055가 발생하는 원인과 이를 해결하는 방법에 대해 설명합니다. 이 오류는 ONLY_FULL_GROUP_BY 모드에서 GROUP BY를 사용할 때 비집계 함수가 GROUP BY 구문에 포함되지 않거나, 집계되지 않은 컬럼을 선택하려 할 때 발생하는 오류입니다. 이를 해결하는 방법은 두 가지가 있으며, 각각의 방법을 통해 오류를 해결할 수 있습니다.🚦 Error Code: 1055의 원인Error Code: 1055는 MySQL에서 ONLY_FULL_GROUP_BY 모드가 활성화된 경우 발생합니다. 이 모드에서는 GROUP BY 구문을 사용할 때, 비집계 컬럼을 그룹화 조건에 포함시키지 않으면 오류가 발생합니다. 예를 들어, AVG(r..
📌 Select *와 Select 컬럼 지정의 차이점: 성능 최적화와 효율적인 쿼리 작성
·
기술블로그
📌 개념 정리이번 포스팅에서는 MySQL에서 SELECT *와 특정 컬럼을 지정하여 데이터를 조회하는 방식의 차이점을 살펴보고, 성능 최적화 및 효율적인 쿼리 작성 방법에 대해 설명합니다. 특정 컬럼만 선택해 데이터를 조회할 때의 장점과 단점, 그리고 실무에서 자주 마주칠 수 있는 예시를 다룹니다.🚦 핵심 개념 정리**SELECT ***: 테이블에서 모든 컬럼을 가져오는 쿼리입니다. 간편하지만 불필요한 데이터까지 모두 가져오기 때문에 성능이 저하될 수 있습니다.SELECT 컬럼명: 특정 컬럼만 선택하여 데이터를 조회하는 쿼리입니다. 성능상 효율적이며 필요한 데이터만 추출할 수 있습니다.성능 최적화: SELECT *를 자주 사용하면 불필요한 데이터까지 가져오게 되어 성능이 떨어질 수 있습니다. 필요한 ..
📌 My Sql에서 부분 일치 검색으로 중복 데이터 제거하기
·
기술블로그
📌 개념 정리이번 포스팅에서는 MySQL에서 부분 일치 검색을 활용하여 '한강'이라는 단어를 포함하는 모든 책 레코드를 조회하는 방법을 소개합니다. 또한, 단순 '=' 대신에 **와일드카드(%)**와 **정규표현식(RLIKE)**을 사용하여 어떻게 더 유연하게 데이터를 검색할 수 있는지 설명합니다.🚦 핵심 개념 정리부분 일치 검색(Like): 문자열의 특정 패턴을 찾을 때 LIKE 연산자와 와일드카드(%)를 사용합니다. 이때 **%**는 0개 이상의 임의 문자열을 의미하며, 컬럼 값 내 특정 문자열 포함 여부를 확인합니다.와일드카드(%): LIKE 절에서 사용되며, 앞뒤로 **%한강%**처럼 위치할 수 있습니다. %한강%은 "한강"이라는 문자열 앞뒤로 어떤 문자열이 와도 일치하는 형태입니다.RLIKE..
📌 MySQL 테이블에서 중복된 데이터를 효과적으로 삭제하는 방법
·
기술블로그
📌 개념 정리이번 포스팅에서는 MySQL 테이블에서 중복된 데이터를 효과적으로 삭제하는 방법을 소개합니다. 특히, 책 제목(title)과 같은 특정 필드의 값이 중복되는 경우에 유용하게 사용할 수 있는 쿼리입니다.🚦 중복 데이터 삭제 방법MySQL 테이블에서 중복된 값이 있을 때, 특정 조건을 사용하여 중복된 레코드만 제거하는 방법입니다.🎯 쿼리 예시책 제목(title)이 중복되는 경우, 가장 최근의 ID(bookID)가 높은 레코드를 삭제하고 최초의 데이터만 유지하는 쿼리입니다.DELETE b1FROM books b1JOIN books b2 ON b1.title = b2.title AND b1.bookID > b2.bookID;🚨 쿼리 작동 원리같은 테이블을 두 번 조인(self-join)하여..
📌 MySQL 데이터베이스 정리 (with 크롤링 in Selenium, PymySQL)
·
기술블로그
📌 개념 정리이번 포스팅에서는 Python과 Selenium을 이용하여 웹에서 책 정보를 크롤링하고 PyMySQL을 통해 MySQL 데이터베이스에 저장하는 과정을 프로세스별로 세부적으로 정리합니다.🚦 전체 프로세스 흐름 및 구조이 작업은 다음과 같은 순서로 진행됩니다:MySQL 연결 → 2. 웹 페이지 접속 → 3. 데이터 추출 → 4. 데이터 정제 및 변환 → 5. 예외 처리 → 6. MySQL 저장 → 7. 반복 및 지연각 프로세스를 단계별로 설명합니다.  💻 프로세스별 코드 흐름 설명 import pymysqlimport timeimport refrom datetime import datetime# MySQL 데이터베이스 연결 설정conn = pymysql.connect( host='lo..
📌 크롤링 시 IndexError 예외처리 방법 (초기값은 있었지만 없을경우)
·
기술블로그
📌 크롤링 시 IndexError 예외처리 방법 (ranking_weeks 예시)크롤링 중 ranking_weeks 같은 데이터가 있을 수도, 없을 수도 있을 때 발생하는 IndexError를 방지하는 법을 알아보겠습니다.🚀 1️⃣ 질문 분석 및 핵심 키워드질문 요약: 크롤링 시 데이터가 없는 경우 IndexError 발생키워드:Selenium: 웹 자동화 도구IndexError: 리스트 인덱스 접근 에러split(" "): 문자열 나누기조건문/예외처리: 안전한 코드 작성법✅ 2️⃣ 해결 방법 체크리스트에러 원인 분석:데이터가 없으면 split(" | ") 결과가 짧아짐추가 split(" ")에서 [2]번 인덱스가 없을 수 있음해결 방법:조건문(if): 리스트 길이를 확인 후 접근예외처리(try-ex..
🐍 Python + PyMySQL로 MySQL 리팩토링(2/2)
·
기술블로그
🐍 Python + PyMySQL 리팩토링 분석이번 포스팅에서는 PyMySQL 기반 CRUD 코드의 리팩토링 과정을 분석하고, 어떤 방식으로 효율성이 향상되었는지 설명합니다.✅ 기존 구조와 문제점기존에는 각 작업(SELECT, INSERT, UPDATE, DELETE)을 수행할 때마다 cursor를 반복 생성하며 동일한 구조의 코드가 중복되었습니다:with connection.cursor() as cursor: cursor.execute(query, values) connection.commit()🔁 문제점:코드 중복이 많아 가독성이 떨어지고, 유지보수가 어려움각각의 연산마다 예외 처리 및 커밋 처리 구조를 반복해야 함🔁 리팩토링 후 구조✨ 핵심 함수: execute_query() 정의d..
🐍 Python + PyMySQL로 MySQL 고객 정보 다루기(1/2)
·
기술블로그
🐍 Python + PyMySQL로 MySQL 고객 정보 다루기이번 포스팅에서는 PyMySQL을 활용하여 MySQL 데이터베이스에 "고객 정보"를 추가하고, 수정하고, 삭제하는 기본적인 CRUD 작업 예제를 함께 정리해봅니다! 📦✅ 1. PyMySQL 연결 설정먼저 MySQL 데이터베이스에 연결합니다. 이 예제는 classicmodels라는 데이터베이스를 사용합니다.import pymysql# (1) DB 연결connection = pymysql.connect( host='localhost', user='root', password='7722', db='classicmodels', charset='utf8mb4', cursorclass=pymysql.cursors.Di..