MySQL에서 그룹별 합계 계산하기MySQL에서 데이터를 특정 기준으로 묶은 다음 각 그룹의 합계를 구하려면 집계 함수인 SUM()과 GROUP BY 절을 함께 사용하면 됩니다. 이 글에서는 예제 테이블을 만들고, 제품명별로 수량×가격의 합계를 계산하는 과정을 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 제품명, 수량, 가격을 저장할 테이블을 생성합니다.mysql> create table DemoTable -> ( -> ProductName varchar(20), -> ProductQuan
MySQL에서는 GROUP BY 절과 COUNT() 함수를 함께 사용하면 사용자 유형별로 각각 몇 명의 사용자가 있는지 손쉽게 집계할 수 있습니다. 이번 글에서는 ENUM 타입으로 정의된 사용자 유형(UserType)을 기준으로 사용자 수를 조회하는 방법을 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다. 사용자 이름은 VARCHAR 타입으로, 사용자 유형은 ENUM 타입으로 정의합니다.mysql> create table DemoTable-> (-> UserName varchar(2
MySQL에서 숫자 반올림하기MySQL에서 숫자를 반올림하려면 ROUND() 함수를 사용하면 됩니다. 이 글에서는 테이블 생성부터 실제 반올림 쿼리 실행까지 전체 과정을 예제와 함께 살펴보겠습니다.1. 테이블 생성먼저 DECIMAL 타입의 컬럼을 가진 테이블을 생성합니다.mysql> create table DemoTable -> ( -> Amount DECIMAL(10,4) -> );Que
MySQL에서 가장 최근 시간의 레코드 가져오기MySQL에서 문자열로 저장된 시간 데이터 중 가장 늦은(최근) 시간을 가진 레코드를 조회하려면 ORDER BY 절과 STR_TO_DATE() 함수를 함께 사용하면 됩니다. STR_TO_DATE() 함수는 문자열 형태의 시간을 실제 시간 값으로 변환해 주기 때문에, 이를 기준으로 정렬하면 원하는 결과를 얻을 수 있습니다.먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable -> ( -> DueTime varchar
MySQL에서 타임스탬프(UNIX 시간) 값으로부터 날짜만 표시하려면 FROM_UNIXTIME() 함수를 사용하면 됩니다. 이 함수는 UNIX 타임스탬프를 YYYY-MM-DD HH:MM:SS 형식의 날짜·시간 문자열로 변환해 줍니다.1. 샘플 테이블 생성먼저 타임스탬프 값을 저장할 테이블을 생성합니다.mysql> create table DemoTable-> (-> timestampValue bigint-> );Query OK, 0 rows affected (0.70 sec)2. 데이터 삽입INSERT 명령을 사
슬래시(/)나 하이픈(-) 같은 특수 문자가 섞여 있는 값, 예를 들어 2321/78/54-6 형태의 데이터를 숫자 기준으로 정렬하려면 단순한 ORDER BY만으로는 원하는 결과를 얻기 어렵습니다. 이럴 때는 SUBSTRING() 함수와 함께 ORDER BY를 사용하면 됩니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 만들어 보겠습니다.mysql> create table DemoTable -> ( -> Value varchar(40) -> ); Query OK, 0 rows affec
날짜(DATE) 컬럼과 열거형(ENUM) 컬럼을 동시에 기준으로 데이터를 정렬하려면 ORDER BY DATE() 구문을 활용하면 됩니다. 이 글에서는 실제 예제를 통해 두 조건을 함께 적용해 정렬하는 방법을 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 DATE 타입의 컬럼과 ENUM 타입의 컬럼을 가진 테이블을 생성합니다.mysql> create table DemoTable -> ( -> JoiningDate date, &
MySQL 전역 권한(*.*)과 이후 생성된 데이터베이스결론부터 말하면 네, 적용됩니다. *.*를 사용해 부여한 권한은 특정 데이터베이스가 아닌 전역(global) 권한이기 때문입니다. 즉, 권한을 부여한 시점 이후에 새로 생성되는 모든 데이터베이스와 테이블에도 동일한 권한이 자동으로 적용됩니다.실제 예제를 통해 확인해 보겠습니다.1. 사용자 생성먼저 테스트용 사용자를 생성합니다.mysql> CREATE USER Jace@localhost IDENTIFIED BY Jace123;Query OK, 0 rows affected (
MySQL 테이블에서 특정 컬럼의 각 값(그룹)별로 최대값을 조회해야 하는 경우가 자주 있습니다. 예를 들어 국가별 인구 데이터에서 각 국가의 최대 인구 값을 구하고 싶다면, GROUP BY 절과 MAX() 집계 함수를 함께 사용하면 됩니다.이번 글에서는 실제 예제를 통해 단계별로 살펴보겠습니다.1. 예제 테이블 생성하기먼저 국가 이름과 인구 정보를 저장할 테이블을 생성합니다.mysql> create table DemoTable -> ( -
학생의 개별 과목 최고 점수를 조회하려면 MAX() 함수와 GROUP BY 절을 함께 사용하면 됩니다. 이번 글에서는 실제 예제를 통해 테이블 생성부터 데이터 삽입, 그리고 학생별로 Marks1과 Marks2의 최대값을 구하는 방법까지 단계별로 살펴보겠습니다. 1. 테이블 생성하기 먼저 학생 이메일 ID와 두 과목의 점수를 저장할 테이블을 생성합니다. mysql> create table DemoTable -> ( -> StudentEmailId varchar(20), &
MySQL에서 101J, 100A처럼 숫자와 문자가 혼합된 VARCHAR 타입의 데이터를 정렬하려면 ORDER BY 절을 활용할 수 있습니다. 다만 단순히 문자열 기준으로 정렬하면 의도한 순서대로 나오지 않기 때문에, 약간의 트릭이 필요합니다. 이 글에서는 예제를 통해 그 방법을 단계별로 살펴보겠습니다.예제 테이블 생성먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable -> ( -> StudentCode varchar(20) -> );Query OK, 0
MySQL에서 이미 생성된 테이블의 스토리지 엔진을 변경해야 하는 경우가 종종 있습니다. 예를 들어, 기존에 MyISAM으로 만든 테이블을 트랜잭션 지원과 외래 키 제약 조건이 가능한 InnoDB로 전환하고 싶다면 ALTER TABLE 문 하나만으로 간단하게 처리할 수 있습니다.기본 문법테이블의 스토리지 엔진을 변경하는 기본 문법은 다음과 같습니다.ALTER TABLE yourTableName ENGINE=InnoDB;ENGINE 뒤에 원하는 스토리지 엔진 이름(InnoDB, MyISAM, MEMORY 등)을 지정하면 됩니다. 이제
MySQL에서 테이블의 전체 데이터가 아닌 특정 조건에 맞는 일부 행만 삭제하려면 DELETE 문과 함께 WHERE 절을 사용하면 됩니다. WHERE 절이 없는 DELETE 문은 테이블의 모든 행을 삭제하므로, 조건을 반드시 명시해야 원하는 데이터만 안전하게 제거할 수 있습니다.1. 예제 테이블 생성하기먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> );Query OK,
MySQL에서 후행 공백 제거하기MySQL에서 문자열 끝에 붙어 있는 공백, 즉 후행 공백(trailing space)을 제거하려면 RTRIM() 함수를 사용하면 됩니다. 이 함수는 문자열의 오른쪽 끝에 있는 모든 공백을 잘라낸 결과를 반환합니다.먼저 예제로 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable -> ( -> FirstName varchar(50) -> );Query OK, 0 rows affected (1.38 sec)insert 명령을 사용해
MySQL에서 특정 문자열(예: The )이 포함된 데이터를 정렬하거나 조작해야 할 때는 ORDER BY 절과 TRIM() 함수를 함께 사용하면 간단하게 해결할 수 있습니다. 이 글에서는 실제 예제를 통해 그 사용 방법을 단계별로 살펴보겠습니다.1. 예제 테이블 생성하기먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable -> ( -> Title text
MySQL에서 특정 날짜의 마지막 순간, 즉 그날의 마지막 초(23:59:59)를 구하려면 INTERVAL 연산을 활용하면 됩니다. 이 방법은 날짜에 하루를 더한 뒤 1초를 빼는 간단한 원리로 동작합니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable -> ( -> JoiningDatetime datetime, -> DueDatetime datetime -> );Query OK, 0 rows affected (0.
MySQL에서 특정 테이블이 어떤 스토리지 엔진(InnoDB, MyISAM 등)으로 생성되었는지 확인하고 싶다면 information_schema.tables 뷰의 ENGINE 컬럼을 조회하면 됩니다. JDBC 애플리케이션에서도 일반적인 SELECT 쿼리와 동일한 방식으로 손쉽게 스토리지 엔진 정보를 가져올 수 있습니다.1. 테스트용 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable -> ( -> Id int NOT NULL AUTO_INCREMENT
개요도메인 레코드와 검색 횟수가 저장된 MySQL 테이블에서 가장 인기 있는 도메인을 찾으려면 GROUP BY 절과 함께 ORDER BY 절을 사용하면 됩니다. GROUP BY로 도메인별로 데이터를 묶고, SUM() 함수로 검색 횟수를 합산한 뒤, ORDER BY DESC로 내림차순 정렬하면 검색량이 많은 순서대로 결과를 확인할 수 있습니다.이제 실제 예제를 통해 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다. URL, 도메인 이름, 검색 횟수 세 개의 컬럼으로 구성합니다.mysql> cre
MySQL에서는 UPDATE 문 하나만으로 한 레코드의 여러 컬럼을 동시에 수정할 수 있습니다. 이 글에서는 실제 예제를 통해 테이블 생성부터 데이터 삽입, 그리고 단일 쿼리로 여러 값을 업데이트하는 과정까지 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다. 아래 쿼리는 자동 증가되는 기본키(Id)와 세 개의 점수 컬럼(Marks1, Marks2, Marks3)으로 구성된 테이블을 만듭니다.mysql> create table DemoTable -> ( -> Id int
네, # 기호를 사용하면 CREATE TABLE 문 중간에도 주석을 작성할 수 있습니다. MySQL에서는 # 이후의 내용이 모두 주석으로 처리되어 실행에 영향을 주지 않습니다.1. 테이블 생성 시 주석 추가하기먼저 각 컬럼 정의 옆에 주석을 달아 테이블을 생성해 보겠습니다.mysql> create table DemoTable -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, # 일련번호를 생성