MySQL에서 검색 조건 앞뒤에 와일드카드(%)를 붙여 부분 일치 검색을 하고 싶다면 CONCAT() 함수를 활용하면 됩니다. LIKE 절과 함께 사용하면 문자열의 시작, 중간, 끝 어디에 있든 원하는 값을 포함한 레코드를 손쉽게 조회할 수 있습니다.기본 문법와일드카드를 추가할 때는 CONCAT() 함수로 % 기호를 값의 양쪽에 연결합니다. 기본 문법은 다음과 같습니다.SELECT * FROM yourTableNameWHERE yourColumnName LIKE CONCAT(%, yourValue, %);이제 실제 예제를 통해 단계
MySQL에서 특정 숫자가 포함된 모든 레코드 조회하기쉼표로 구분된 값이 저장된 컬럼에서 특정 숫자가 포함된 모든 레코드를 조회하려면 concat() 함수와 LIKE 연산자를 함께 사용하면 됩니다.기본 문법은 다음과 같습니다.select * from yourTableName where concat(,, yourColumnName, ,) like %,yourValue,%;핵심은 컬럼 값의 앞뒤에 쉼표를 붙여 검색 대상 숫자가 정확히 하나의 독립된 값으로 일치하는지 확인하는 것입니다. 이렇게 처리하면 4를 검색할 때 14나 41처럼 다
MySQL에서 날짜와 시간을 자동으로 기록하는 컬럼이 필요하다면 TIMESTAMP 데이터 타입을 활용할 수 있습니다. 특히 DEFAULT CURRENT_TIMESTAMP 옵션과 함께 사용하면, 별도로 값을 입력하지 않아도 레코드가 저장되는 시점의 현재 시간이 자동으로 들어가므로 매우 편리합니다.TIMESTAMP 필드가 있는 테이블 만들기먼저 TIMESTAMP 타입의 컬럼 두 개(start_date, end_date)를 가진 테이블을 생성해 보겠습니다.mysql> create table demo50 -> ( -> id
MySQL에서 연도 자릿수의 합 구하기MySQL에서 연도를 구성하는 각 자릿수의 합을 계산하려면, 먼저 마지막 자릿수를 추출한 뒤 그 값을 더하는 방식을 사용합니다. 이 과정을 반복하면 연도의 모든 자릿수를 더할 수 있습니다. 예를 들어 2020년의 경우 다음과 같이 계산됩니다.2 + 0 + 2 + 0= 4마지막 자릿수 추출하기연도에서 마지막 자릿수를 추출하는 개념은 나머지 연산자(%)를 활용하는 것입니다. 다음 쿼리를 사용하면 됩니다.select floor(@yourVariableName % 10);연도 자릿수의 합을 구하는 쿼리
MySQL에서 조건에 따라 정렬하는 방법MySQL에서 특정 조건에 따라 레코드를 정렬하고 싶다면 ORDER BY 절과 함께 CASE WHEN 문을 활용하면 됩니다. 이 방법을 사용하면 단순한 오름차순·내림차순 정렬이 아닌, 사용자가 직접 정의한 우선순위에 따라 결과를 원하는 순서로 배치할 수 있습니다.예제를 통해 자세히 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table demo51 -> ( -> id int not null auto_increment prim
MySQL에서 두 개 이상의 테이블에 저장된 데이터를 함께 조회하려면 JOIN 개념을 사용해야 합니다. JOIN은 공통된 컬럼(보통 기본 키와 외래 키)을 기준으로 여러 테이블의 데이터를 하나의 결과로 연결해 주는 SQL 기능입니다.이번 글에서는 실제 예제를 통해 두 개의 테이블을 생성하고, 조인하여 원하는 값을 가져오는 과정을 단계별로 살펴보겠습니다.1. 첫 번째 테이블 생성하기먼저 회원 정보를 담을 첫 번째 테이블 demo52를 생성합니다.mysql> CREATE TABLE `demo52` ( -> `id` INT N
MySQL에서 여러 날짜 조건을 조합해 데이터를 조회해야 하는 경우가 자주 있습니다. 예를 들어 입사일은 특정 날짜보다 이전이고, 퇴사일은 특정 날짜보다 이후이거나 아직 값이 없어(NULL) 재직 중인 레코드를 찾는 상황을 생각해 볼 수 있습니다. 이 글에서는 WHERE 절과 AND, OR 연산자를 활용해 이러한 조건부 날짜 조회를 처리하는 방법을 단계별로 살펴봅니다.기본 문법두 개의 날짜 열에 조건을 걸 때는 아래와 같은 형식의 쿼리를 사용합니다.select *from yourTableNamewhereyourColumnName1
MySQL에서 여러 열에 걸쳐 특정 값(예: 1)이 총 몇 번 등장하는지, 또는 모든 열이 특정 값을 만족하는 행이 몇 개인지 확인해야 할 때가 있습니다. 이럴 때 SUM() 함수와 산술·논리 연산자를 함께 사용하면 간단하게 해결할 수 있습니다. 기본 문법 select sum(yourColumnName1+yourColumnName2+yourColumnName3...N) as `anyAliasName1`, sum(yourColumnName1 and yourColumnName2 and yourColumnName3....N) as an
WHERE 조건에 특정 값이 포함된 쿼리를 안전하게 실행하려면 Java에서 PreparedStatement를 사용하면 됩니다. PreparedStatement는 SQL 인젝션 공격을 방지하고 쿼리 실행 성능을 개선하는 데에도 도움이 됩니다. 기본적인 사용 문법은 다음과 같습니다.String anyVariableName = select yourColumnName from yourTableName where name = ?; PreparedStatement ps = (PreparedStatement) con.prepareStatemen
MySQL에서 CONCAT_WS()로 조건에 맞는 행을 선택하며 문자열 연결하기 MySQL에서 여러 열(column)의 값을 하나의 문자열로 합치면서, 동시에 특정 조건에 맞는 행만 조회하고 싶다면 CONCAT_WS() 함수를 사용하면 됩니다. CONCAT_WS는 Concatenate With Separator의 약자로, 첫 번째 인자로 지정한 구분자를 기준으로 나머지 문자열들을 연결해 주는 함수입니다. 실제 동작 과정을 예제를 통해 단계별로 살펴보겠습니다. 1. 테이블 생성하기 먼저 사용자 정보를 저장할 테이블을 생성합니다. my
MySQL 테이블의 중복 데이터 제거하기 MySQL 테이블에 동일한 데이터가 여러 번 저장되어 있을 때, 임시 테이블(temporary table)을 활용하면 중복을 손쉽게 제거하고 각 데이터를 한 행씩만 남길 수 있습니다. 중복 제거 절차 전체 과정은 다음 네 단계로 진행됩니다. DISTINCT 키워드를 사용해 중복이 제거된 데이터로 임시 테이블을 생성합니다. TRUNCATE 명령으로 원본 테이블의 모든 데이터를 삭제합니다. 임시 테이블의 데이터를 원본 테이블에 다시 삽입합니다. 임시 테이블을 삭제합니다. create tab
MySQL에서 다음 행 페이지네이션 선택하기MySQL에서 대량의 데이터를 다룰 때 한 번에 모든 결과를 가져오는 것은 비효율적입니다. 이럴 때 LIMIT 절을 활용하면 원하는 위치부터 지정한 개수만큼의 행만 조회할 수 있어, 게시판이나 목록 화면에서 자주 사용되는 페이지네이션을 손쉽게 구현할 수 있습니다.1. 예제 테이블 생성먼저 실습에 사용할 테이블을 생성합니다. id 컬럼은 자동 증가(AUTO_INCREMENT) 기본 키로 설정했습니다.mysql> create table demo40-> (-> id int not
MySQL REGEXP를 활용한 문자 포함 레코드 필터링MySQL에서 테이블에 저장된 데이터 중 순수하게 숫자로만 이루어진 레코드는 제외하고, 알파벳 문자가 포함되어 있거나 문자와 숫자가 혼합된 레코드만 조회하고 싶을 때가 있습니다. 이런 경우 REGEXP(정규 표현식) 연산자를 사용하면 간단하게 해결할 수 있습니다.기본 문법REGEXP 패턴에 알파벳 범위인 [a-zA-Z]를 지정하면, 해당 열의 값 중 영문자가 하나라도 포함된 레코드만 반환됩니다.SELECT yourColumnName FROM yourTableName WHERE
MySQL TIMESTAMPDIFF()로 날짜 차이 계산 후 행 선택하기MySQL의 WHERE 절에서 두 날짜·시간 값 사이의 차이를 계산하여 조건에 맞는 행을 선택하려면 TIMESTAMPDIFF() 함수를 사용하면 됩니다. 이 함수는 두 datetime 값의 차이를 지정한 단위(초, 분, 시간, 일 등)로 반환해 주므로, 특정 시점 기준으로 일정 범위 안에 있는 데이터를 손쉽게 조회할 수 있습니다.1. 테이블 생성먼저 datetime 타입의 컬럼을 가진 테이블을 생성합니다.mysql> create table demo42-&g
MySQL에서 테이블을 생성할 때 DEFAULT 제약 조건을 사용하면 특정 컬럼에 기본값을 미리 지정할 수 있습니다. 데이터 삽입 시 해당 컬럼의 값을 생략하면, 설정해 둔 기본값이 자동으로 저장되므로 매우 유용합니다.DEFAULT 제약 조건 기본 구문다음은 테이블을 생성하면서 DEFAULT 제약 조건을 추가해 기본값을 설정하는 기본 구문입니다.CREATE TABLE yourTableName ( yourColumnName1 dataType not null , yourColumnName2 dataType default anyValue
MySQL에서 테이블에 저장된 데이터 중 가장 높은 값(최댓값)을 조회하려면 집계 함수인 MAX()를 사용하면 됩니다. 이번 글에서는 직원 급여 테이블을 예로 들어, MAX() 함수를 활용해 최고 급여를 조회하는 방법을 단계별로 살펴보겠습니다.MAX() 함수 기본 문법MAX() 함수는 지정한 컬럼의 값들 중 가장 큰 값을 반환합니다. 기본 문법은 다음과 같습니다.SELECT MAX(컬럼명) AS 별칭 FROM 테이블명;AS 절을 사용해 별칭(alias)을 지정하면 결과 컬럼의 이름을 원하는 대로 표시할 수 있어 가독성이 좋아집니다.
MySQL에서 첫 번째 반복 값만 바꾸기MySQL에서 문자열에 같은 단어가 여러 번 등장할 때, 전체가 아닌 첫 번째 일치 항목만 교체해야 하는 경우가 있습니다. 이럴 때는 REGEXP_REPLACE() 함수를 사용하면 됩니다.예제 문자열다음과 같은 문자열이 있다고 가정해 보겠습니다.This is my first MySQL query. This is the first tutorial. I am learning for the first time.여기서 특정 단어, 예를 들어 first의 첫 번째 등장만 second로 바꾸고 싶습니다.
MySQL에서 특정 값을 기준으로 그보다 작은 값을 가진 레코드를 제외하고 나머지 레코드만 조회하려면 WHERE 절과 비교 연산자를 함께 사용하면 됩니다. WHERE 절은 지정한 조건을 만족하는 행만 결과로 반환하기 때문에, 비교 연산자를 활용하면 원하는 범위의 데이터를 손쉽게 필터링할 수 있습니다.기본 문법select *from yourTableName where yourColumnName > yourValue;위 구문에서 yourColumnName > yourValue 조건은 해당 컬럼의 값이 지정한 값보다 클 때만
문자열과 숫자를 혼합할 때는 VARCHAR 데이터 타입을 사용하세요MySQL에서 John_123처럼 문자열과 숫자가 섞인 값을 저장해야 하는 경우가 자주 있습니다. 이럴 때는 INT 같은 숫자 전용 데이터 타입이 아니라 VARCHAR(가변 길이 문자열) 데이터 타입을 사용해야 합니다.VARCHAR는 괄호 안에 지정한 숫자만큼 최대 길이를 설정할 수 있으며, 실제 저장되는 값의 길이에 따라 공간을 효율적으로 사용합니다.기본 문법테이블 생성 시 컬럼의 데이터 타입을 VARCHAR로 지정하면 됩니다:CREATE TABLE yourTabl
MySQL에서 여러 열을 기준으로 정렬하기MySQL에서 ORDER BY 절을 사용하면 하나의 열뿐만 아니라 여러 열을 기준으로 결과를 정렬할 수 있습니다. 여러 열로 정렬할 때는 첫 번째 열의 값이 같은 경우에만 두 번째 열 기준으로, 두 번째 열까지 같으면 세 번째 열 기준으로 순차적으로 정렬됩니다.여러 열을 기준으로 정렬하는 기본 문법은 다음과 같습니다.SELECT * FROM yourTableNameORDER BY yourColumnName1 DESC, yourColumnName2, yourColumnName3;위 문법에서 첫