Spring Boot를 사용한 웹 애플리케이션 개발에서 MySQL과의 연동은 가장 기본이면서도 중요한 과정입니다.초보 개발자도 쉽게 따라할 수 있도록, MySQL 연결 설정부터 테스트까지 단계별로 설명해드리겠습니다. 1. MySQL 설치 및 접속 확인먼저 MySQL이 설치되어 있어야 합니다. 로컬 또는 Docker를 사용하셔도 괜찮습니다.# macOS Homebrew 예시brew install mysqlbrew services start mysqlmysql -u root -pTIP: docker로 실행할 경우 아래 명령어를 사용할 수 있습니다.docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=1234 -p 3306:3306 -d mysql:8 2. MySQL에 ..
다양한 시스템이 존재하는 현대의 IT 환경에서는 MySQL을 외부 서버나 시스템과 연동하여 데이터를 주고받는 일이 자주 발생합니다.MySQL을 외부 서버와 연동하는 대표적인 방법과 그 구현 방식, 주의사항까지 자세히 안내합니다. REST API와 연동하여 데이터 주고받기MySQL 자체는 API 호출 기능이 없지만, 서버 사이드 애플리케이션(PHP, Node.js, Python 등)을 통해 REST API와 연동할 수 있습니다.예: Node.js + Axios + MySQL 연동const axios = require('axios');const mysql = require('mysql2/promise');const connection = await mysql.createConnection({host: 'lo..
MySQL은 다양한 로그와 모니터링 기능을 제공하여 성능 저하나 오류를 빠르게 진단하고 해결할 수 있도록 도와줍니다.실무에서 자주 사용하는 MySQL의 주요 로그 설정과 모니터링 방법, 그리고 이를 활용한 문제 해결 팁을 소개합니다. MySQL의 주요 로그 종류MySQL에서는 여러 종류의 로그를 통해 시스템 상태와 쿼리 흐름을 추적할 수 있습니다.Error Log: 서버 시작, 중단, 오류 기록General Query Log: 실행되는 모든 쿼리 기록Slow Query Log: 일정 시간 이상 걸린 느린 쿼리 기록Binary Log: 데이터 변경 이력 기록 (복제 및 PITR에 사용)슬로우 쿼리 로그 설정 예시SET GLOBAL slow_query_log = 1;SET GLOBAL long_query_t..
데이터베이스에서 날짜와 시간 처리는 예약, 로그 기록, 통계 분석 등 다양한 업무에서 필수적입니다. MySQL은 이를 위해 다양한 날짜·시간 함수를 제공하며, 이를 잘 활용하면 복잡한 날짜 계산도 간단히 처리할 수 있습니다. 1) NOW – 현재 날짜와 시간NOW()는 현재 날짜와 시간을 YYYY-MM-DD HH:MM:SS 형식으로 반환합니다.SELECT NOW() AS current_datetime;결과 예: 2025-08-09 16:30:15 2) CURDATE & CURTIME – 현재 날짜 또는 시간CURDATE(): 현재 날짜만 반환CURTIME(): 현재 시간만 반환SELECT CURDATE() AS today, CURTIME() AS current_time;결과 예: today: 2025-0..
데이터베이스에서 문자열 처리는 매우 자주 발생하는 작업입니다. MySQL은 이를 위해 다양한 문자열 함수를 제공하며, 이 함수를 잘 활용하면 데이터 가공과 검색 속도를 동시에 향상시킬 수 있습니다. 1) CONCAT – 문자열 합치기CONCAT() 함수는 여러 문자열을 하나로 합칩니다.SELECT CONCAT(first_name, ' ', last_name) AS full_nameFROM users;결과: first_name과 last_name을 공백으로 구분해 하나의 컬럼(full_name)으로 반환합니다. 2) SUBSTRING – 문자열 일부 추출SUBSTRING()은 특정 위치부터 원하는 길이만큼 문자를 추출합니다.SELECT SUBSTRING(email, 1, 5) AS email_prefi..
느린 쿼리는 반드시 이유가 있습니다. EXPLAIN은 MySQL이 쿼리를 어떻게 실행하려는지 보여주며, 병목 구간을 정확히 짚어줍니다.EXPLAIN 기본부터 FORMAT=JSON, EXPLAIN ANALYZE를 정리했습니다. 1) EXPLAIN 기본 사용법EXPLAINSELECT o.id, o.user_id, u.nameFROM orders oJOIN users u ON u.id = o.user_idWHERE o.created_at >= CURDATE() - INTERVAL 30 DAY AND u.country = 'KR'ORDER BY o.created_at DESCLIMIT 20;결과는 테이블(또는 서브쿼리) 단위로 한 행씩 출력됩니다. 위에서부터 실행 순서라고 생각하면 이해가 쉽습니다. 2)..