MySQL에서 datetime 열의 기본값을 0000-00-00으로 설정하려면 DEFAULT 키워드를 사용하면 됩니다. 이번 글에서는 테이블 생성부터 데이터 삽입, 조회까지 전체 과정을 예제와 함께 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 datetime 열에 기본값 0000-00-00 00:00:00을 지정하여 테이블을 생성합니다.mysql> create table DemoTable -> ( -> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -
MySQL에서 날짜 데이터를 월 단위로 그룹화하여 합계를 구하려면 GROUP BY MONTH() 절을 활용하면 됩니다. 이 글에서는 예제 테이블을 만들고, 월별로 금액 합계를 집계하는 전체 과정을 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 구매 날짜와 금액을 저장할 테이블을 생성합니다.mysql> create table DemoTable1628 -> ( -> PurchaseDate date, -> Amount int -> );Query OK, 0 rows affected (1.
쉼표로 구분된 결과에 포함된 숫자를 변환하려면 CASE 문과 FIND_IN_SET() 함수를 함께 사용해야 합니다. 이 글에서는 2,4,6처럼 저장된 월 번호 데이터를 February,April,June과 같은 월 이름으로 바꾸는 방법을 단계별로 살펴보겠습니다.1단계: 테이블 생성하기먼저 월 정보를 저장할 테이블을 생성합니다.mysql> create table DemoTable1629 -> ( -> Month varchar(100)&n
MySQL에서 문자열의 왼쪽부터 지정한 길이만큼만 잘라서 표시하고 싶다면 LEFT() 함수를 사용하면 됩니다. 이 함수는 첫 번째 인자로 컬럼 또는 문자열을, 두 번째 인자로 반환할 문자 수를 받아 왼쪽부터 해당 개수만큼의 문자만 반환합니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable-> (-> Title text-> );Query OK, 0 rows affected (0.59 sec)2. 데이터 삽입하기INSERT 명령을 사용해 테이블에 샘플
MySQL에서 두 테이블 각각의 최대값(MAX)을 구한 뒤, 그중 가장 작은 값(MIN)을 하나의 쿼리로 추출하려면 UNION 연산자를 활용하면 됩니다. UNION은 여러 SELECT 문의 결과를 하나의 결과 집합으로 합쳐주기 때문에, 서로 다른 테이블에서 가져온 최대값들을 한 번에 비교할 수 있습니다.먼저 예제에 사용할 첫 번째 테이블을 생성해 보겠습니다.mysql> create table DemoTable1-> (-> Value int-> );Query OK, 0 rows affected (0.48 sec)
MySQL 저장 프로시저에서 DELIMITER의 역할MySQL에서 저장 프로시저를 작성할 때 DELIMITER는 매우 중요한 역할을 합니다. MySQL 클라이언트는 기본적으로 세미콜론(;)을 문장의 끝으로 인식하기 때문에, 저장 프로시저 내부에 여러 개의 SQL 문장이 포함되어 있으면 클라이언트가 프로시저를 하나의 완전한 블록으로 처리하지 못하고 중간에 오류가 발생합니다.따라서 저장 프로시저를 정의하기 전에 구분자(delimiter)를 다른 기호로 변경해 주어야 합니다. 일반적으로는 더블 슬래시(//)나 $$(달러 기호)가 많이 사
MySQL에서 중복 값 기준으로 레코드 합산하는 방법MySQL에서 한 열에 중복된 값이 존재할 때, 해당 값들을 기준으로 다른 열의 숫자 데이터를 합산해야 하는 경우가 자주 발생합니다. 예를 들어 동일한 이름의 고객별 구매 금액을 모두 더하거나, 같은 카테고리의 재고 수량을 집계하는 상황이 대표적입니다.이럴 때는 SUM() 집계 함수와 GROUP BY 절을 함께 사용하면 간단하게 해결할 수 있습니다.1. 테이블 생성하기먼저 실습에 사용할 테이블을 생성합니다. 이름(Name)과 값(Value) 두 개의 열로 구성된 테이블입니다.mys
MySQL에서 쉼표로 구분된 값에서 특정 값 찾기MySQL에서 하나의 열에 78,89,65처럼 쉼표로 구분된 여러 값이 저장되어 있을 때, 그 안에서 특정 값을 포함하는 레코드를 찾으려면 FIND_IN_SET() 함수를 사용하면 됩니다.FIND_IN_SET(찾을값, 대상문자열) 형태로 사용하며, 첫 번째 인자가 두 번째 인자의 쉼표 구분 목록 안에 존재하면 해당 위치를 반환하고, 존재하지 않으면 0을 반환합니다.실제 예제를 통해 단계별로 살펴보겠습니다.1단계: 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> cr
MySQL에서 두 개의 열을 활용한 사용자 지정 정렬MySQL에서 두 개 이상의 열을 기준으로 사용자 지정(custom) 정렬을 수행하려면 ORDER BY 절에 CASE 문을 조합하면 됩니다. CASE 문을 활용하면 특정 값에 우선순위를 부여해 원하는 순서대로 데이터를 정렬할 수 있습니다.먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable1610-> (-> Marks int,-> Name varchar(20)-> ) ;Query OK, 0 rows affec
MySQL에서 특정 열의 특정 값을 가장 먼저 표시하고, 나머지 레코드는 오름차순으로 정렬해야 하는 경우가 종종 있습니다. 예를 들어 월 번호 목록에서 5월(5)을 맨 앞에 배치하고 나머지 월은 순서대로 보여주고 싶다면, ORDER BY 절에 불리언(Boolean) 표현식을 활용하면 간단하게 해결할 수 있습니다.1. 테이블 생성하기먼저 데모용 테이블을 생성해 보겠습니다.mysql> create table DemoTable-> (-> MonthNumber int-> );Query OK, 0 rows affecte
MySQL GROUP_CONCAT() 함수로 여러 텍스트 레코드 하나로 결합하기MySQL에서 여러 개의 텍스트 레코드를 하나의 문자열로 합치려면 GROUP_CONCAT() 함수를 사용하면 됩니다. 이 함수는 그룹화된 행들의 값을 지정한 구분자(separator)로 연결하여 단일 문자열로 반환해 줍니다.아래에서 실제 예제를 통해 단계별로 살펴보겠습니다.1단계: 테이블 생성하기먼저 텍스트 값을 저장할 테이블을 생성합니다.mysql> create table DemoTable1611-> (-> Value text->
MySQL에서 선택한 행의 크기를 구하려면 CHAR_LENGTH() 함수를 사용하면 됩니다. 이 함수는 문자열의 길이(문자 수)를 반환하며, SUM() 함수와 함께 사용하면 여러 행의 문자 길이를 한 번에 합산할 수 있습니다. 아래 예제를 통해 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable1612 -> ( -> FirstName varchar(20
MySQL에서 AND 연산자는 WHERE 절과 함께 사용되어 여러 조건을 모두 만족하는 레코드만 필터링할 때 활용됩니다. 이번 글에서는 DELETE 문에 AND 조건을 적용하여 테이블에서 원하는 레코드를 정확하게 삭제하는 방법을 단계별로 살펴보겠습니다. 1. 테이블 생성 먼저 예제로 사용할 테이블을 생성합니다. mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> ); Query OK, 0 rows affe
네, 가능합니다. MySQL에서는 DATE() 함수를 사용해 datetime 값에서 날짜 부분만 추출할 수 있고, CURDATE() 함수를 사용하면 현재 날짜를 손쉽게 가져올 수 있습니다. 이 두 함수를 조합하면 Oracle의 trunc(sysdate)와 동일한 효과를 얻을 수 있습니다.1. 현재 날짜 확인하기먼저 CURDATE() 함수로 현재 날짜를 확인해 보겠습니다.mysql> select curdate(); +------------+ | curdate() | +------------+ | 2019-10-20 | +---
MySQL에서 데이터베이스에 존재하는 테이블 중 특정 패턴과 일치하는 테이블 이름만 조회하고 싶다면 LIKE 연산자와 information_schema.tables 뷰를 함께 활용하면 됩니다. information_schema는 MySQL 서버의 메타데이터(테이블, 컬럼, 인덱스 등) 정보를 담고 있는 시스템 스키마로, 이를 조회하면 SHOW TABLES보다 더 유연한 조건 검색이 가능합니다.기본 문법LIKE 연산자를 사용해 특정 테이블 이름을 표시하는 기본 문법은 다음과 같습니다.SELECT table_name AS `별칭` FR
MySQL에서 점(.)이 포함된 문자열, 예를 들어 버전 번호처럼 생긴 데이터를 다룰 때는 단순한 LIKE 패턴 매칭만으로는 원하는 결과를 얻기 어렵습니다. 특정 숫자로 시작하는 레코드를 정확하게 조회하려면 REGEXP(정규 표현식)를 사용하는 것이 가장 확실한 방법입니다.이번 글에서는 실제 예제를 통해 점이 포함된 문자열에서 19로 시작하는 레코드를 조회하는 과정을 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 게임 출시 버전 정보를 저장할 테이블을 만듭니다.mysql> create table DemoTable -&
MySQL에서 두 열의 값을 곱한 결과를 천 단위 구분 기호와 함께 보기 좋게 표시하려면 FORMAT() 함수를 활용하면 됩니다. FORMAT() 함수는 숫자를 지정한 소수점 자릿수로 반올림하고, 천 단위마다 쉼표(,)를 추가해 가독성을 크게 높여 줍니다.1. 샘플 테이블 생성먼저 실습에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable -> ( -> Price decimal(10,4), -> Rate decimal(10,4) -> );Query
MySQL에서 여러 열에 저장된 값 중 가장 큰 값을 구할 때는 GREATEST() 함수를 사용합니다. 하지만 열에 NULL 값이 섞여 있으면 단순 비교만으로는 원하는 결과를 얻기 어렵습니다. 이럴 때 COALESCE() 함수를 함께 사용하면 깔끔하게 해결할 수 있습니다. 핵심 함수 살펴보기 GREATEST(): 전달된 여러 값 중 가장 큰 값을 반환합니다. 다만 인수 중 하나라도 NULL이면 결과 역시 NULL이 됩니다. COALESCE(): 인수 목록에서 NULL이 아닌 첫 번째 값을 반환합니다. 이를 활용하면 NULL을 지
MySQL에서 LIKE 연산자를 IN()처럼 사용하기MySQL의 IN()과 유사한 방식으로 여러 패턴을 한 번에 확인하고 싶다면, COUNT() 함수와 IF() 함수를 LIKE 연산자와 함께 조합하여 활용할 수 있습니다. 이 방법을 사용하면 각 패턴별로 일치하는 레코드 수를 하나의 쿼리로 집계할 수 있습니다.먼저 예제 테이블을 생성해 보겠습니다.mysql> create table DemoTable-> (-> Subject varchar(80)-> );Query OK, 0 rows affected (0.58 se
MySQL WHERE 절에서 여러 값으로 업데이트하기MySQL에서 UPDATE 문을 실행할 때 WHERE 절에 여러 조건을 조합하면, 원하는 행만 정확하게 골라서 수정할 수 있습니다. 이 글에서는 AND 연산자를 활용해 두 개 이상의 조건을 동시에 만족하는 레코드를 업데이트하는 방법을 예제와 함께 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable -> ( ->