이메일 주소에서 도메인 이름(gmail.com, yahoo.com 등)만 추출하고 싶다면 MySQL의 SUBSTRING_INDEX() 함수를 사용하면 됩니다. 이 함수는 구분자를 기준으로 문자열을 나누어 원하는 부분만 반환해 줍니다.1. 테이블 생성먼저 예제에 사용할 테이블을 만들어 보겠습니다.mysql> create table DemoTable-> (-> UserMailId varchar(100)-> );Query OK, 0 rows affected (0.68 sec)2. 데이터 삽입INSERT 명령을 사용하
데이터베이스 작업을 하다 보면 이름처럼 아포스트로피()가 포함된 문자열을 저장하고 조회해야 하는 경우가 자주 있습니다. 예를 들어 Sams, Davids 같은 값은 작은따옴표가 SQL 문자열 구분 기호와 충돌하기 때문에 별도의 이스케이프 처리 없이는 오류가 발생할 수 있습니다. 이 글에서는 MySQL에서 아포스트로피가 포함된 레코드를 안전하게 저장하고 검색하는 방법을 단계별로 살펴보겠습니다. 1단계. 테이블 생성 먼저 실습에 사용할 테이블을 생성합니다. mysql> create table DemoTable -> ( -&g
MySQL에서 테이블의 특정 열을 기준으로 가장 큰 값 2개를 조회하려면 ORDER BY 절과 LIMIT 절을 함께 사용하면 됩니다. 열 값을 내림차순(DESC)으로 정렬한 후, LIMIT 2를 지정하여 상위 2개 행만 가져오는 방식입니다.select *from yourTableName order by yourColumnName DESC LIMIT 2;1단계: 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable-> (-> Value int-> );Query
세 번째 필드의 값에 따라 두 필드 중 하나를 선택하려면 MySQL의 IF() 함수를 사용하면 됩니다. 먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable -> ( -> PlayerName varchar(100), -> PlayerScore int, -> PlayerStatus varchar(100) -> );Query OK, 0 rows affected (0.58 sec)INSERT 명령을 사용하여 테이블에 레코드를 삽입합니
MySQL에서 하나의 행에 있는 여러 열의 값 중 가장 큰 값을 구하려면 GREATEST() 함수를 사용하면 됩니다. 이 함수는 인자로 전달된 여러 값 중 최댓값을 반환하므로, 같은 행에 있는 여러 열을 비교할 때 매우 유용합니다.아래 예제를 통해 실제 동작 과정을 단계별로 살펴보겠습니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable -> ( -> Value1 int,&nb
MySQL에서 JSON 객체 값을 조건으로 사용할 수 있을까요?네, 가능합니다. MySQL에서는 json_extract() 함수를 사용하면 JSON 컬럼에 저장된 객체의 특정 키 값을 손쉽게 추출하고, 이를 SELECT 문의 WHERE 절 조건으로 활용할 수 있습니다.아래 예제를 통해 단계별로 살펴보겠습니다.1단계: JSON 타입 테이블 생성먼저 JSON 데이터를 저장할 테이블을 생성합니다.mysql> create table DemoTable -> ( -> Data json
MySQL에서 날짜·시간(DATETIME) 값이 내일 날짜와 일치하는지 확인하려면 DATEDIFF() 함수를 사용하면 됩니다. 이 함수는 두 날짜 사이의 일수 차이를 반환하며, 그 결과가 0이면 두 날짜가 같다는 의미입니다.1. 테이블 생성먼저 예제에 사용할 테이블을 만들어 보겠습니다.mysql> create table DemoTable -> ( -> ShippingDate datetime -> );Query OK, 0 rows affected (0.90 sec)2. 데이터 삽입INSERT 명령을 사
MySQL에서 STR_TO_DATE() 함수의 결과에 AS로 별칭(alias)을 지정한 뒤 WHERE 절에서 해당 별칭을 사용하면 Unknown column(열을 찾을 수 없음) 오류가 발생합니다. 이는 MySQL이 WHERE 절을 처리할 때 아직 SELECT 목록의 별칭이 정의되지 않기 때문입니다.이 문제는 HAVING 절을 사용하면 간단히 해결할 수 있습니다. HAVING 절은 SELECT 이후에 평가되기 때문에 별칭을 참조할 수 있습니다. 실제 예제를 통해 살펴보겠습니다.1. 테이블 생성먼저 날짜가 문자열(varchar) 형태
데이터베이스를 운영하다 보면 일정 기간이 지난 오래된 데이터를 주기적으로 정리해야 하는 경우가 많습니다. MySQL에서는 DELETE 문과 INTERVAL 키워드를 조합하여 30일 이상 지난 레코드를 손쉽게 삭제할 수 있습니다. 현재 날짜(NOW())보다 이전인 레코드를 찾기 위해 비교 연산자 <(미만)를 사용합니다. 1. 예제 테이블 생성하기 먼저 실습에 사용할 테이블을 생성합니다. mysql> create table DemoTable -> ( -> UserMessage text, -&
MySQL에서 데이터를 내림차순으로 정렬한 후 첫 번째 행, 즉 최댓값에 해당하는 행을 제외한 나머지 행만 조회하고 싶다면 NOT IN 연산자와 서브쿼리를 활용하면 간단하게 해결할 수 있습니다. 아래 예제를 통해 단계별로 살펴보겠습니다. 1. 테이블 생성 먼저 데모용 테이블을 생성합니다. mysql> create table DemoTable -> ( -> Amount int -> ); Query OK, 0 rows affected (0.50 sec) 2. 데이터 삽입 insert 명령을
MySQL에서 특정 컬럼의 고유한(distinct) 값이 몇 개인지 계산해야 하는 경우가 자주 있습니다. 예를 들어, 각 사용자별로 서로 다른 코드가 몇 개 존재하는지 집계하는 상황을 생각해 볼 수 있습니다. 이때 COUNT(DISTINCT) 함수와 GROUP BY 절을 함께 사용하면 손쉽게 해결할 수 있습니다.1. 테이블 생성하기먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable -> ( -> Name varchar(100), -> Code var
MySQL에서 특정 컬럼을 기준으로 가장 큰 값(최대 ID)과 관련된 레코드를 가져오려면 ORDER BY ~ DESC로 내림차순 정렬한 뒤 LIMIT 절을 사용하면 됩니다. 기본적인 쿼리 형태는 다음과 같습니다.SELECT * FROM yourTableName ORDER BY yourColumnName DESC LIMIT 1,1;참고: LIMIT 1,1은 첫 번째 행(최대값)을 건너뛰고 그다음 행 한 개를 반환합니다. 즉, 아래 예제에서는 두 번째로 큰 값이 조회됩니다. 최대값 자체가 필요하다면 LIMIT 1(또는 LIMIT 0,1
개요MySQL에서 VARCHAR 타입으로 저장된 필드의 최대값을 구하려면 MAX() 함수와 SUBSTRING() 함수를 함께 사용해야 합니다. VARCHAR 필드는 문자열 기준으로 비교되기 때문에, 값이 숫자처럼 보여도 단순히 MAX()만 적용하면 의도한 결과가 나오지 않을 수 있습니다.먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable -> ( -> Id varchar(200) 
MySQL에서 각 값이 몇 번 등장하는지 개수를 구하고, 그 결과를 내림차순으로 정렬된 새로운 열에 표시하고 싶다면 어떻게 해야 할까요? 핵심은 세 가지입니다.ORDER BY ... DESC : 결과를 내림차순으로 정렬합니다.COUNT() : 각 값이 나타난 횟수를 셉니다.GROUP BY : 동일한 값을 가진 행들을 그룹으로 묶습니다.예를 들어 이름 John이 컬럼에 세 번 등장한다면, 별도의 열에 개수 3이 표시되고 이렇게 계산된 모든 개수 값은 ORDER BY DESC를 통해 내림차순으로 정렬됩니다.1. 예제 테이블 생성먼저 실
MySQL에서 데이터를 업데이트할 때 특정 값 이상으로 값이 증가하지 않도록 제한해야 하는 경우가 있습니다. 예를 들어 어떤 컬럼의 값이 최대 200까지만 가질 수 있도록 하고 싶다면 LEAST() 함수를 활용하면 간단하게 해결할 수 있습니다.1. 테이블 생성먼저 테스트에 사용할 테이블을 생성합니다.mysql> create table DemoTable-> (-> Value int-> );Query OK, 0 rows affected (0.54 sec)2. 샘플 데이터 삽입INSERT 명령을 사용하여 테이블에 레
MySQL에서 숫자 데이터에 천 단위 구분 기호(콤마)를 표시하려면 FORMAT() 함수를 사용하면 됩니다. 이 함수는 숫자를 지정한 소수점 자릿수로 반올림하고, 세 자리마다 콤마를 자동으로 삽입하여 가독성이 좋은 형태로 반환합니다.아래에서 실제 예제를 통해 FORMAT() 함수의 사용 방법을 단계별로 살펴보겠습니다.1단계: 테이블 생성하기먼저 금액(Amount) 값을 저장할 데모 테이블을 생성합니다.mysql> create table DemoTable-> (-> Amount DECIMAL(10,2)-> );Q
MySQL에서 특정 기간(예: 1980년 1월 1일 ~ 1996년 12월 31일) 사이에 태어난 사용자의 비율을 계산하는 방법을 단계별로 알아보겠습니다. 핵심은 SUM() 함수와 COUNT(*)를 함께 활용하는 것입니다.1. 테이블 생성하기먼저 생년월일을 저장할 테이블을 생성합니다.mysql> create table DemoTable-> (-> DateOfBirth varchar(100)-> );Query OK, 0 rows affected (0.55 sec)2. 샘플 데이터 삽입하기INSERT 명령어를 사용해
MySQL에서 테이블의 데이터를 무작위(랜덤)로 조회하려면 RAND() 함수를 사용하고, 반환받을 레코드 수를 제한하려면 LIMIT 절을 함께 사용하면 됩니다.이 두 가지를 조합하면 전체 데이터 중에서 원하는 개수만큼의 임의의 행을 손쉽게 추출할 수 있습니다.1. 샘플 테이블 생성먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable-> (-> Value int-> );Query OK, 0 rows affected (0.54 sec)2. 데이터 삽입INSERT 명령어를 사용
MySQL에서 문자열 컬럼에 저장된 값 중 숫자로만 이루어진 행만 조회하고 싶다면 REGEXP 연산자를 사용하면 됩니다. 정규 표현식 패턴을 활용하면 간단하게 원하는 데이터를 필터링할 수 있습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable-> (-> StudentId varchar(100)-> );Query OK, 0 rows affected (0.51 sec)2. 샘플 데이터 삽입하기INSERT 문을 사용해 다양한 형태의 데이터를 입력합니다
MySQL에서 특정 조건에 해당하는 레코드의 타임스탬프(Timestamp) 필드를 현재 날짜와 시간으로 업데이트하는 방법을 단계별로 알아보겠습니다. 테이블 생성부터 데이터 삽입, UPDATE 쿼리 실행, 결과 확인까지 전체 과정을 예제와 함께 살펴봅니다.1. 테이블 생성먼저 데모용 테이블을 생성합니다. PunchOut 컬럼은 timestamp 타입으로, PunchStatus 컬럼은 tinyint(1) 타입으로 정의합니다.mysql> create table DemoTable-> (-> PunchOut timestamp