MySQL에서 SELECT 필드별 조건 처리 방법MySQL에서 집계 함수 내부의 특정 필드에 조건을 적용해야 할 때는 WHERE 절 대신 CASE 문을 사용하는 것이 효과적입니다. WHERE 절은 행 전체를 필터링하지만, CASE 문은 SELECT 목록 안에서 각 필드(열)마다 개별적인 조건 로직을 적용할 수 있기 때문입니다.아래 예제를 통해 실제 동작 과정을 단계별로 살펴보겠습니다.1단계: 테이블 생성먼저 세 개의 정수형 컬럼을 가진 테이블을 생성합니다.mysql> create table DemoTable1988 &
MySQL에서 VARCHAR 타입으로 저장된 날짜 데이터를 실제 DATE 형식으로 변환하려면 STR_TO_DATE() 함수를 사용하면 됩니다. 이 함수는 문자열과 형식 지정자를 인자로 받아 해당 문자열을 MySQL이 인식할 수 있는 날짜 값으로 변환해 줍니다.1. 테스트 테이블 생성먼저 날짜 문자열을 저장할 VARCHAR 컬럼을 가진 테이블을 생성합니다.mysql> create table DemoTable1989 ( DueDate varchar(20) ); Query OK, 0 rows affected (
오늘 날짜를 기준으로 정확히 일주일(7일) 간격으로 차이가 나는 날짜를 조회하려면 DATEDIFF 함수를 활용하면 됩니다. 먼저 현재 날짜부터 확인해 보겠습니다.mysql> select curdate();+------------+| curdate() |+------------+| 2019-12-20 |+------------+1 row in set (0.00 sec)테이블 생성하기예제에 사용할 테이블을 먼저 생성합니다.mysql> create table DemoTable1990 ( 
MySQL에서 값이 존재하지 않는 행 조회하기테이블에서 특정 값들이 포함되지 않은 레코드만 조회하고 싶다면 NOT IN() 연산자를 사용하면 됩니다. NOT IN()은 지정한 값 목록에 속하지 않는 데이터만 필터링해 반환하는 조건문으로, 제외하고 싶은 값을 명확하게 지정할 수 있어 매우 유용합니다.아래에서 실제 예제를 통해 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 학생 정보를 저장할 테이블을 생성합니다.mysql> create table DemoTable1991 ( StudentId int NOT NULL AUT
MySQL에서 테이블의 처음 3개 행에만 특정 값을 설정하고 싶다면, UPDATE 문에서 LIMIT 3을 사용하면 됩니다. ORDER BY 절과 함께 사용하면 어떤 순서로 행을 선택해 수정할지도 지정할 수 있어 매우 유용합니다.1. 테이블 생성하기먼저 예제로 사용할 테이블을 생성합니다.mysql> create table DemoTable1968 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20) ); Query OK, 0 rows affe
문자열에 포함된 숫자 값으로 정렬하기MySQL에서 CSE 101, CSE 11처럼 문자와 숫자가 결합된 문자열 데이터를 다루다 보면, 문자열 전체가 아닌 숫자 부분만을 기준으로 정렬해야 하는 경우가 자주 발생합니다. 단순히 ORDER BY를 사용하면 사전순으로 정렬되어 CSE 101이 CSE 11보다 앞에 오는 문제가 생깁니다. 이 글에서는 SUBSTRING, LOCATE, CAST 함수를 조합하여 이 문제를 해결하는 방법을 소개합니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table
MySQL에서 값을 != NULL로 비교하면 결과는 항상 NULL을 반환합니다. 이는 SQL에서 NULL은 알 수 없는 값으로 취급되기 때문에, 어떤 값과 비교하더라도 참·거짓을 판별할 수 없기 때문입니다. 따라서 != NULL 조건은 실질적으로 아무 의미가 없습니다.반면 IS NOT NULL은 해당 값이 NULL인지 아닌지를 명확하게 판별하는 전용 연산자입니다.두 방식의 차이를 직접 확인하기 위해 먼저 테이블을 생성해 보겠습니다.1. 테이블 생성mysql> create table DemoTable1970 ( V
MySQL에서는 저장 프로시저(Stored Procedure) 내부에 SELECT 문을 작성하여 조건에 맞는 전체 테이블 데이터를 손쉽게 반환할 수 있습니다. 이번 글에서는 테이블 생성부터 데이터 삽입, 저장 프로시저 작성 및 호출까지 전 과정을 예제와 함께 단계별로 살펴보겠습니다. 1. 테이블 생성하기 먼저 예제에 사용할 테이블을 생성합니다. 학생 ID는 자동 증가(AUTO_INCREMENT) 기본 키로 설정합니다. mysql> create table DemoTable1971 ( StudentId int NO
MySQL에서 전체 데이터가 아닌 특정 조건에 맞는 행(row)만 가져오고 싶다면 WHERE 절과 ORDER BY, LIMIT를 함께 사용하면 됩니다. 이 글에서는 예제 테이블을 만들고, 특정 행만 조회하는 쿼리를 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제로 사용할 테이블을 생성합니다.mysql> create table DemoTable1972 ( Section char(1), StudentName varchar(20) ); Query OK, 0 rows affected (0.00 sec
개요저장 프로시저(Stored Procedure) 안에서 매개변수로 전달받은 값을 이용해 새 테이블을 만들고, LIKE 조건으로 원하는 데이터만 필터링해서 채우려면 일반적인 정적 쿼리로는 처리할 수 없습니다. 이럴 때는 프리페어드 스테이트먼트(Prepared Statement)를 활용한 동적 SQL을 사용해야 합니다.이 글에서는 실제 예제를 통해 전체 과정을 단계별로 살펴보겠습니다.1단계: 샘플 테이블 생성먼저 예제에 사용할 기본 테이블을 생성합니다.mysql> create table DemoTable1973 &nb
MySQL에서 여러 열의 데이터 개수를 한 번에 구하고 싶을 때가 있습니다. 이때 COUNT() 함수를 활용하면 되는데, 중요한 점은 COUNT 함수가 기본적으로 NULL 값을 자동으로 제외한다는 것입니다. 실제 예제를 통해 확인해 보겠습니다.1. 테이블 생성하기먼저 학생 이름과 점수를 저장할 테이블을 생성합니다.mysql> create table DemoTable1975 ( StudentName varchar(20), StudentMarks int &
개요MySQL에서 특정 열의 값이 NULL이면 해당 열을 새 값으로 업데이트하고, 이미 값이 있다면 다른 열을 업데이트하며, 두 열 모두 값이 존재하면 아무 작업도 하지 않는 로직이 필요할 때가 있습니다. 이런 경우 IF() 함수와 IS NULL 조건을 함께 사용하면 간단하게 해결할 수 있습니다.아래에서 예제 테이블을 만들고 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 테스트용 테이블을 생성합니다.mysql> create table DemoTable1976 ( FirstNam
UNION ALL과 SUM()으로 여러 테이블의 합계 구하기동일한 구조의 여러 테이블에 데이터가 나눠져 있을 때, 모든 테이블의 값을 한 번에 합산해야 하는 경우가 종종 있습니다. 이럴 때는 UNION ALL과 SUM() 함수를 함께 사용하면 간단하게 해결할 수 있습니다.먼저 예제를 위해 UP이라는 동일한 열을 가진 5개의 테이블을 생성하고 데이터를 삽입해 보겠습니다.1. 예제 테이블 생성 및 데이터 삽입mysql> create table DemoTable1977 ( UP int ); Query OK, 0
MySQL에서는 ALTER TABLE 문을 사용해 테이블의 저장 엔진을 손쉽게 변경할 수 있습니다. 이 글에서는 InnoDB로 생성된 테이블을 MyISAM 엔진으로 전환하는 전체 과정을 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 테스트에 사용할 테이블을 생성합니다.mysql> create table DemoTable1982 ( StudentId int, StudentName varchar(20), StudentAge int ); Query OK, 0 rows affected (0.00
MySQL에서 현재 연도로 동적 테이블 이름 만들기MySQL에서는 테이블 이름에 연도(예: 2019)처럼 동적인 값을 사용해야 하는 경우가 있습니다. 이때 PREPARE 문과 CONCAT() 함수를 함께 활용하면 손쉽게 해결할 수 있습니다. 아래에서 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 실습용 테이블을 하나 생성합니다.mysql> create table DemoTable1959 ( UserName varchar(20) ); Query OK, 0 rows affected (0.00 sec)2.
MySQL에서 여러 행에 흩어져 있는 문자열 데이터를 하나의 행으로 결합하고, 동시에 숫자 컬럼의 합계를 구해야 한다면 GROUP_CONCAT()과 SUM() 함수를 함께 사용하면 됩니다. GROUP_CONCAT()은 여러 행의 문자열 값을 하나로 이어 붙여 주고, SUM()은 지정한 컬럼의 값들을 모두 더해 줍니다.1. 예제 테이블 생성먼저 실습에 사용할 테이블을 만들어 보겠습니다.mysql> create table DemoTable1960 (  
밑줄(_)과 하이픈(-)으로 구분된 긴 문자열 안에서 숫자 부분만 추출해야 하는 경우가 있습니다. MySQL에서는 REPLACE() 함수로 불필요한 문자열을 제거한 뒤, CAST() 함수를 사용해 남은 값을 정수형으로 변환하면 간단하게 해결할 수 있습니다. 아래 예제를 통해 단계별로 살펴보겠습니다.1. 테이블 생성먼저 데모용 테이블을 생성합니다.mysql> create table DemoTable1961 ( Title text );Query OK, 0 rows a
하나의 열에 저장된 하이픈(-) 구분 문자열을 여러 개의 개별 열 값으로 분리해야 하는 경우가 종종 있습니다. 이럴 때 SUBSTRING_INDEX() 함수를 활용하면 간단하게 해결할 수 있습니다.1. 테스트 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable1962 ( EmployeeInformation text ); Query OK, 0 rows affected (0.00 sec)2. 샘플 데이터 삽입INSERT 명령을 사용하여 사번-이름-나이 형식의
MySQL에서 NULL 값을 1로 표시하기MySQL 테이블에 저장된 NULL 값을 조회할 때 실제 숫자 대신 1로 표시하고 싶은 경우가 있습니다. 이 글에서는 IFNULL() 함수와 UPDATE 문을 활용해 NULL 값을 1로 변환하는 방법을 단계별로 알아보겠습니다.1단계: 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable1963 ( Counter int ); Query OK, 0 rows affected (0.00 sec)2단계: 데이터 삽입INSER
MySQL에서 새로운 사용자를 생성하고 데이터베이스에 대한 권한을 부여하는 작업은 데이터베이스 관리의 기본이자 필수 과정입니다. 이 글에서는 데이터베이스 생성부터 사용자 계정 생성, 그리고 SELECT, INSERT, UPDATE, DELETE, EXECUTE 등 다양한 권한을 부여하는 방법까지 단계별로 살펴보겠습니다.사용자 생성 및 권한 부여 기본 문법먼저 데이터베이스를 생성하고, 사용자 계정을 만든 뒤 각 작업에 대한 권한을 하나씩 부여하는 기본적인 문법은 다음과 같습니다.create database yourDatabaseNam