= 1 day)에 해당하는 데이터를 조회하려면 INTERVAL 개념을 활용하면 됩니다.현재 날짜 확인하기먼저 CURDATE() 함수로 현재 날짜를 확인해 보겠습니다.mysql> select curdate();+------------+| curdate() |+------------+| 2019-11-29 |+------------+1 row in set (0.00 sec)테이블 생성 및 데이터 입력예제를 위해 먼저 테이블을 생성합니다.mysql> create table DemoTable1806 &nbs
MySQL에서 여러 행의 값을 하나의 행으로 합치기MySQL에서 여러 개의 행(row)에 나뉘어 저장된 값들을 쉼표로 구분된 단일 행으로 변환하고 싶다면 GROUP_CONCAT() 함수와 CONCAT() 함수를 함께 사용하면 됩니다.GROUP_CONCAT()은 그룹화된 여러 행의 값을 하나의 문자열로 연결해 주는 집계 함수이고, CONCAT()은 각 값 앞뒤에 원하는 문자(예: 대괄호)를 붙이는 데 활용할 수 있습니다.1. 예제 테이블 생성먼저 실습용 테이블을 생성합니다.mysql> create table DemoTable18
다른 형식의 날짜 이후 레코드 조회하기테이블에 저장된 날짜가 21/11/2019처럼 MySQL의 기본 날짜 형식과 다른 형태라면, 단순 비교만으로는 올바른 결과를 얻을 수 없습니다. 이럴 때 STR_TO_DATE() 함수를 사용하면 문자열 형태의 날짜를 DATE 타입으로 변환한 뒤 원하는 기준 날짜와 비교할 수 있습니다.1. 테이블 생성먼저 날짜를 varchar 타입으로 저장하는 테이블을 생성합니다.mysql> create table DemoTable1808 ( &n
MySQL에서 LIKE 절로 특정 열 값 조회하기MySQL에서 테이블에 저장된 데이터 중 특정 열의 값을 조회하고 싶다면 LIKE 절을 사용하면 됩니다. LIKE 절은 패턴 매칭을 기반으로 조건에 맞는 레코드만 골라내는 강력한 도구입니다.이번 글에서는 간단한 예제를 통해 테이블 생성부터 데이터 삽입, 그리고 LIKE 절을 활용한 조건 검색까지 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 이름(Name)을 저장할 테이블을 생성합니다.mysql> create table DemoTable1809 &
MySQL에서 LONGTEXT 타입 컬럼에는 아주 큰 숫자도 저장할 수 있지만, 값 자체는 문자열로 취급됩니다. 그렇기 때문에 ORDER BY로 정렬하면 의도와 달리 사전식(문자열) 순서로 정렬되는 문제가 발생합니다. 이번 글에서는 LONGTEXT에 저장된 숫자를 쿼리 안에서 정수처럼 처리하는 방법을 예제와 함께 알아보겠습니다. 1. 테스트 테이블 생성하기 먼저 LONGTEXT 타입의 컬럼을 가진 테이블을 만들어 보겠습니다. mysql> create table DemoTable -> ( -> Valu
개요MySQL에서 하나의 쿼리만으로 특정 조건에 해당하는 행의 개수를 여러 개 동시에 구하고 싶다면, 집계 함수 SUM()과 조건식을 함께 활용하면 됩니다. MySQL에서는 Name=Chris와 같은 비교 조건이 참일 때 1, 거짓일 때 0을 반환하기 때문에, 이를 SUM으로 합산하면 해당 조건을 만족하는 행의 개수를 손쉽게 계산할 수 있습니다.예제를 통해 단계별로 살펴보겠습니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable1790 ( Id int N
MySQL에서 컬럼 값을 0과 비교하면 어떤 일이 벌어질까?MySQL에서 다음과 같은 쿼리를 실행하면, 겉보기와 달리 해당 테이블의 모든 행이 반환됩니다.select * from yourTableName where yourColumnName = 0;숫자 0과 일치하는 행만 나올 것처럼 보이지만 실제 결과는 전혀 다릅니다. 직접 예제를 통해 확인해 보겠습니다.1. 테스트 테이블 생성mysql> create table DemoTable1791 ( FirstName varchar(20) );Query OK, 0 ro
MySQL에서 NULL이 아닌 데이터 선택하기MySQL에서 NULL 값이 포함되지 않은 레코드만 조회하려면 IS NOT NULL 조건을 사용하면 됩니다. 이 조건은 특정 컬럼의 값이 NULL이 아닌 행만 필터링하여 반환합니다.실제 동작 과정을 확인하기 위해 먼저 테이블을 생성해 보겠습니다.1. 테이블 생성mysql> create table DemoTable1792 ( Name varchar(20) ); Query OK, 0 rows affected (0.00 sec)위 쿼리는 Name이라는 varchar(
MySQL에서 NULL 값이 있는 열을 안전하게 연결하기MySQL에서 CONCAT() 함수로 두 개의 열을 연결할 때, 하나의 열 값이라도 NULL이면 결과 전체가 NULL로 반환되는 문제가 발생합니다. 쿼리 실행 시 이러한 문제를 피하려면 IFNULL() 함수를 함께 사용하는 것이 좋습니다.먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable1793 ( StudentFirstName varchar(20),&nbs
MySQL에서 하나의 열로 두 가지 합계 구하기MySQL에서 하나의 열(Amount)에 대해 전체 합계와 특정 조건을 만족하는 값의 합계를 동시에 조회해야 하는 경우가 있습니다. 이럴 때 CASE 문을 활용하면 하나의 쿼리로 두 가지 다른 합계를 손쉽게 표시할 수 있습니다.예제를 통해 단계별로 살펴보겠습니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable1794 ( Amount int&
MySQL에서 날짜 데이터를 다룰 때 특정 개월 범위에 해당하는 레코드만 추출해야 하는 경우가 자주 있습니다. 예를 들어 작년 7월부터 올해 7월까지의 데이터를 조회하고 싶다면 YEAR(), MONTH(), DATE_SUB() 함수를 조합하면 됩니다.이 글에서는 실제 예제를 통해 개월 범위 조건으로 레코드를 가져오는 방법을 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다. 이름(Name)과 마감일(DueDate) 두 개의 컬럼으로 구성된 간단한 테이블입니다.mysql> create table
MySQL에서 DELETE 문으로 테이블의 데이터를 모두 삭제해도 자동 증가(AUTO_INCREMENT) 값은 초기화되지 않고 이어집니다. 이때 TRUNCATE TABLE 명령어를 사용하면 테이블을 완전히 비우고 AUTO_INCREMENT 값을 1부터 다시 시작할 수 있습니다.TRUNCATE TABLE과 DELETE의 차이DELETE FROM 테이블명;은 행 단위로 데이터를 삭제하며, AUTO_INCREMENT 카운터는 그대로 유지됩니다. 반면 TRUNCATE TABLE 테이블명;은 테이블을 처음 생성된 상태처럼 초기화하기 때문에
MySQL에서 한 테이블에 있는 데이터를 다른 테이블로 옮기고 싶을 때는 INSERT INTO ... SELECT 구문을 사용하면 됩니다. 이 구문은 SELECT 쿼리로 조회한 결과를 그대로 다른 테이블에 삽입할 수 있어, 조건에 맞는 일부 데이터만 복사할 때 특히 유용합니다.아래 예제를 통해 실제 동작 과정을 단계별로 살펴보겠습니다.1. 첫 번째 테이블 생성하기먼저 원본 데이터가 담길 테이블을 생성합니다.mysql> create table DemoTable1 ( Id int, FirstName varch
MySQL에서 단일 열에 저장된 여러 값을 각각 따옴표로 묶어 하나의 문자열로 합치고 싶다면 group_concat() 함수와 replace() 함수를 함께 사용하면 됩니다. 이 글에서는 실제 예제를 통해 단계별로 방법을 살펴보겠습니다.1단계: 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable1799 ( EmployeeId varchar(20) ); Query OK,
MySQL에서는 IS NULL 연산자와 UPDATE 문을 조합하면, 특정 컬럼이 NULL인 행을 손쉽게 찾아 원하는 값으로 일괄 업데이트할 수 있습니다. 이번 글에서는 예제 테이블을 만들고, NULL이 포함된 필드를 조건에 맞게 업데이트하는 전체 과정을 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 DemoTable이라는 이름의 테이블을 생성합니다.mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> );
MySQL에서 테이블의 기본 키(PRIMARY KEY)를 삭제하려면 ALTER TABLE 문을 사용해야 합니다. ALTER TABLE로 테이블 구조를 변경한 뒤, DROP PRIMARY KEY 절을 함께 사용하면 기존 기본 키를 손쉽게 제거할 수 있습니다.기본 문법ALTER TABLE yourTableName DROP PRIMARY KEY;실습 예제먼저 기본 키가 설정된 테이블을 생성해 보겠습니다.mysql> create table DemoTable-> (-> StudentId int NOT NULL,-> St
MySQL에서 VARCHAR 타입에 double과 date를 저장해도 괜찮을까요?네, 기술적으로는 VARCHAR 컬럼에 double(숫자)과 date(날짜) 값을 문자열 형태로 저장하는 것이 가능합니다. 다만 실무 환경에서는 가급적 DOUBLE, DECIMAL, DATE 같은 전용 데이터 타입을 사용하는 것이 좋습니다. 여기서는 VARCHAR에 저장된 값들을 어떻게 DOUBLE과 DATE 타입처럼 활용할 수 있는지 단계별로 살펴보겠습니다.1. 테이블 생성먼저 Amount와 JoiningDate 두 컬럼을 VARCHAR(20) 타입으
데이터베이스 작업을 하다 보면 같은 이름이나 키가 여러 번 등장하는 중복 레코드를 자주 만나게 됩니다. 예를 들어 학생별 시험 점수가 여러 행으로 저장되어 있을 때, 학생 이름별로 점수를 하나로 합쳐야 하는 경우가 있죠. 이럴 때 GROUP BY 절과 SUM() 집계 함수를 함께 사용하면 간단하게 해결할 수 있습니다. 1. 예제 테이블 생성 먼저 실습에 사용할 테이블을 만들어 보겠습니다. mysql> create table DemoTable -> ( -> StudentName varchar(20),
MySQL에서 중복된 튜플(레코드)을 찾고 그 개수까지 함께 확인하려면 GROUP BY 절과 HAVING 절을 함께 사용하면 됩니다. GROUP BY로 데이터를 그룹화한 뒤, HAVING 조건으로 특정 개수 이상 중복된 그룹만 필터링하는 방식입니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable-> (-> Id int,-> Name varchar(20)-> );Query OK, 0 rows affected (0.80 sec)2. 샘플 데이터
MySQL에서 저장된 날짜(date) 값을 기준으로 그 달의 첫 번째 날과 마지막 날을 조회해야 하는 경우가 자주 있습니다. 예를 들어 월별 마감일 계산이나 리포트 작성 시 유용하게 활용할 수 있는데요. 이 글에서는 DATE_FORMAT() 함수와 LAST_DAY() 함수를 사용하여 손쉽게 구하는 방법을 단계별로 알아보겠습니다.1. 테스트용 테이블 생성하기먼저 날짜를 저장할 테이블을 생성합니다.mysql> create table DemoTable-> (-> DueDate date-> );Query OK, 0 r