MySQL에서는 @변수명 형식의 사용자 정의 변수를 사용하여 쿼리 결과를 변수에 저장할 수 있습니다. 이번 글에서는 예제 테이블을 만들고, SELECT 문의 결과를 변수에 할당하는 과정을 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 테스트에 사용할 테이블을 생성합니다.mysql> create table DemoTable1864 ( Id int, FirstName varchar(20), LastName varchar(20) ); Query OK, 0 rows affected (0.00 s
MySQL ROUND() 함수로 소수점 둘째 자리까지 반올림하기MySQL에서 나눗셈 같은 계산 결과를 특정 소수점 자릿수로 반올림하려면 ROUND() 함수를 사용하면 됩니다. ROUND() 함수는 첫 번째 인자로 반올림할 값이나 수식을, 두 번째 인자로 표시할 소수점 자릿수를 전달받습니다.먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable1865 ( Value1 int, &nbs
MySQL에서 한 열에 저장된 값이 다른 열의 쉼표로 구분된 값 목록 안에서 몇 번째 위치에 있는지 확인하려면 FIND_IN_SET() 함수를 사용하면 됩니다. 이 함수는 첫 번째 인수로 전달한 문자열이 두 번째 인수(쉼표로 구분된 목록)에서 차지하는 위치를 숫자로 반환하며, 값이 존재하지 않으면 0을 반환합니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable1866 ( Value1 int, ListOfValues varchar(100)
MySQL에서 날짜/시간(DATETIME) 값을 초 단위로 증가시키려면 DATE_ADD() 함수와 INTERVAL 키워드를 함께 사용하면 됩니다. 아래 예제를 통해 테이블 생성부터 쿼리 실행까지 전체 과정을 단계별로 살펴보겠습니다. 1. 테이블 생성하기 먼저 DATETIME 타입의 컬럼을 가진 테이블을 생성합니다. mysql> create table DemoTable1867 ( ArrivalTime datetime &n
MySQL에서 DATETIME 값에 시간을 추가하는 방법MySQL에서 DATETIME 타입의 값에 시간을 더하려면 ADDTIME() 함수를 사용하면 됩니다. 이 함수는 첫 번째 인자로 전달된 날짜·시간 값에 두 번째 인자로 전달된 시간 간격을 더한 결과를 반환합니다.실제 동작 과정을 예제를 통해 단계별로 살펴보겠습니다.1단계: 테이블 생성하기먼저 DATETIME 타입의 컬럼을 가진 테이블을 생성합니다.mysql> create table DemoTable1848 ( &
MySQL에서 데이터를 조회할 때 특정 열에 포함된 NULL 값을 빈 문자열()로 바꾸어야 하는 경우가 종종 있습니다. 이럴 때 IFNULL() 또는 COALESCE() 함수를 활용하면 간단하게 해결할 수 있습니다. 이번 글에서는 예제 테이블을 만들고, 데이터를 가져오는 시점에 여러 열의 NULL 값을 빈 문자열로 변환하는 방법을 단계별로 살펴보겠습니다. 1. 예제 테이블 생성 먼저 실습에 사용할 테이블을 생성합니다. mysql> create table DemoTable1849 (  
MySQL의 IF() 함수는 조건을 평가한 후, 조건이 참이면 두 번째 인자를, 거짓이면 세 번째 인자를 반환합니다. 이를 활용하면 Yes 또는 No 같은 단순한 값 대신 원하는 사용자 정의 메시지를 손쉽게 출력할 수 있습니다.1. 예제 테이블 생성먼저 데모용 테이블을 생성해 보겠습니다.mysql> create table DemoTable1850 ( OrderStatus varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. 샘플 데이터 삽입INSERT 명령을 사용
MySQL에서 특정 시간 기준으로 오래된 데이터를 자동으로 정리해야 하는 경우가 자주 발생합니다. 예를 들어 로그 데이터나 임시 세션 정보처럼 일정 시간이 지난 레코드를 주기적으로 삭제할 때 유용합니다. 이때 DELETE 명령어와 INTERVAL 구문을 함께 사용하면 손쉽게 처리할 수 있습니다.1. 테이블 생성하기먼저 실습에 사용할 테이블을 생성하겠습니다. datetime 타입의 컬럼 하나로 구성된 간단한 테이블입니다.mysql> create table DemoTable1851 (
MySQL에서는 문자열과 정수(int)를 비교하려고 해도 오류가 발생하지 않습니다. 그 이유는 MySQL이 비교 연산을 수행할 때 암시적 형 변환(Implicit Type Conversion)을 통해 문자열을 자동으로 숫자로 변환하기 때문입니다.예를 들어 1John 같은 문자열은 숫자로 변환될 때 앞부분의 숫자만 인식되어 1로 처리되고, John처럼 숫자로 시작하지 않는 문자열은 0으로 변환됩니다.1. 테스트용 테이블 생성먼저 varchar 타입과 int 타입의 컬럼을 가진 테이블을 생성해 보겠습니다.mysql> create
개요MySQL에서 테이블의 전체 데이터가 아니라 마지막 50개 항목 가운데 임의의 5개 행만 조회해야 하는 경우가 있습니다. 이럴 때는 서브쿼리와 함께 ORDER BY RAND()를 사용하면 간단하게 해결할 수 있습니다.핵심 아이디어는 다음과 같습니다.먼저 내부 서브쿼리에서 ORDER BY ... DESC와 LIMIT 50으로 최신(마지막) 50개 행을 추출합니다.그 결과를 외부 쿼리에서 ORDER BY RAND()로 무작위 정렬한 뒤 LIMIT 5로 5개 행만 가져옵니다.1. 예제 테이블 생성먼저 실습에 사용할 테이블을 만들어 보
MySQL에서 목록에 포함된 특정 항목들의 고유한 개수(distinct count)를 확인하려면 COUNT() 함수와 GROUP BY 절을 함께 사용하면 됩니다. 이 방법을 활용하면 조건에 맞는 데이터를 항목별로 그룹화하여 각 값이 몇 번 등장했는지 한눈에 파악할 수 있습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable1854 ( Name varchar(20) &n
혈액형(BloodType) 저장에 적합한 MySQL 데이터 유형MySQL에서 혈액형 데이터를 저장할 때는 varchar(3) 또는 ENUM 데이터 유형을 사용하는 것이 좋습니다. 혈액형은 A+, A-, B+, B-, AB+, AB-, O+, O-처럼 최대 3자 이내로 표현되기 때문입니다.먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable1855 ( BloodType varchar(3) ); Query OK, 0 rows affected (0.00 sec)레코
문제 상황MySQL에서 BIT 타입의 열에 GROUP_CONCAT() 함수를 그대로 적용하면 의미를 알 수 없는 깨진 값(쓰레기 값)이 반환되는 경우가 있습니다. 이는 BIT 값이 문자열로 변환되는 과정에서 발생하는 현상입니다.해결 방법해결 방법은 아주 간단합니다. GROUP_CONCAT() 내부에서 해당 열에 +0을 더해주면 됩니다. 이렇게 하면 BIT 값이 숫자로 변환되어 정상적인 결과를 얻을 수 있습니다.1. 테이블 생성먼저 테스트용 테이블을 생성해 보겠습니다.mysql> create table DemoTable1856
MySQL에서 특정 구분자(예: 하이픈 -) 앞에 있는 문자열만 추출하고 싶다면 SUBSTRING_INDEX() 함수를 활용하면 됩니다. 이 함수는 지정한 구분자가 나타나기 전까지의 문자열을 간단하게 반환해 주기 때문에, 이름과 성이 하이픈으로 연결된 데이터를 분리할 때 특히 유용합니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성하겠습니다.mysql> create table DemoTable1857 ( Name varchar(20)&nb
Java 애플리케이션에서 MySQL 데이터베이스를 사용하려면 JDBC(Java Database Connectivity)를 통해 연결을 설정해야 합니다. 이 글에서는 DriverManager 클래스를 활용해 Java와 MySQL을 연결하는 기본적인 방법을 예제 코드와 함께 살펴보겠습니다. 사전 준비 사항 코드를 실행하기 전에 다음 사항을 확인하세요. MySQL 서버가 로컬 환경(localhost)에서 실행 중이어야 합니다. MySQL Connector/J 드라이버(JDBC 드라이버)가 프로젝트의 클래스패스에 포함되어 있어야 합니다
MySQL에서 다수의 행을 한 번에 삽입할 때 가장 빠른 방법은 INSERT INTO 문을 단 한 번만 실행하고, 여러 개의 값 그룹을 쉼표로 구분하여 하나의 쿼리로 처리하는 것입니다. 이 방식은 행마다 INSERT 문을 반복 실행하는 것보다 네트워크 오버헤드와 파싱 비용을 크게 줄여주는 최적화된 기법입니다.최적화된 INSERT 문 기본 문법insert into yourTableName values(NULL,yourValue1,yourValue2),(NULL,yourValue1,yourValue2),....N;위 문법처럼 AUTO_
특정 필드에 해당 값이 존재하지 않는 레코드를 조회하려면 WHERE 절과 함께 서브쿼리(subquery)를 사용하면 됩니다. 이번 글에서는 하나의 MySQL 쿼리 안에 두 개의 SELECT 문을 활용하여, 특정 조건에 해당하지 않는 레코드를 추출하는 방법을 예제와 함께 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다. 사용자 이름과 사용자 유형(ENUM 타입)을 저장하는 간단한 구조입니다.mysql> create table DemoTable1840 ( UserName varchar(20)
MySQL에서 문자열 안에 숫자가 포함되어 있는지 확인하려면 REGEXP 연산자와 문자 클래스 패턴을 조합하여 사용할 수 있습니다. MySQL의 정규식은 POSIX 방식을 따르기 때문에 일반적으로 쓰이는 \d 대신 [0-9] 또는 [[:digit:]] 패턴을 사용하는 것이 좋습니다.기본 문법특정 컬럼 값에 숫자가 하나라도 포함된 행을 조회하는 기본 문법은 다음과 같습니다.select * from yourTableName where yourColumnName regexp [0-9];예제 테이블 생성문법을 이해하기 위해 먼저 테스트용
MySQL에서 NULL 값이 있는 행의 열 곱셈 처리하기 MySQL에서 곱셈 연산을 수행할 때 피연산자 중 하나라도 NULL이면 결과는 항상 NULL이 됩니다. 이러한 문제를 해결하려면 COALESCE() 함수를 사용하여 NULL 값을 다른 값(예: 1)으로 대체하면 됩니다. COALESCE()는 인수로 전달된 값 중 첫 번째로 NULL이 아닌 값을 반환하는 함수입니다. 따라서 COALESCE(열이름, 1)처럼 작성하면 해당 열의 값이 NULL일 때 1을 반환하게 됩니다. 1. 테이블 생성 먼저 예제에 사용할 테이블을 생성해 보겠
MySQL에서 특정 연도에 해당하는 시작 날짜(StartDate)와 종료 날짜(EndDate)를 조회하려면 YEAR() 함수를 사용하면 됩니다. 이 함수는 DATE 타입의 값에서 연도만 추출해 주기 때문에, 특정 연도 조건으로 데이터를 필터링할 때 매우 유용합니다.1. 테이블 생성하기먼저 시작일과 종료일을 저장할 테이블을 생성합니다.mysql> create table DemoTable1843 ( StartDate date, &nbs