MySQL에서 NULL과 NOT NULL 값이 섞여 있는 열에서 NULL이 아닌 값만 추출하고 싶다면 IS NOT NULL 조건을 사용하면 됩니다. 이 글에서는 실제 예제를 통해 NULL 값을 걸러내고 원하는 데이터만 다른 테이블로 옮기는 과정을 단계별로 살펴보겠습니다. 1. 테이블 생성하기 먼저 날짜 정보를 저장할 테이블을 만들어 보겠습니다. mysql> create table DemoTable1 ( DueDate date &n
LIKE 연산자로 ^ 문자 검색하기MySQL에서 캐럿(^)처럼 특수한 문자가 포함된 컬럼을 찾으려면 LIKE 연산자와 와일드카드(%)를 함께 사용하면 됩니다. information_schema.columns 뷰를 조회하면 데이터베이스 내 모든 테이블의 컬럼 정보를 확인할 수 있으며, 여기에 조건을 걸어 원하는 문자를 검색할 수 있습니다.기본 문법은 다음과 같습니다.select table_schema, table_name, column_namefrom information_schema.columnswhere column_name li
MySQL의 저장 프로시저(Stored Procedure)를 활용하면 복잡한 계산 로직을 데이터베이스 내부에서 간편하게 처리할 수 있습니다. 이번 글에서는 저장 프로시저를 생성하여 금액(amount) × 수량(quantity)과 같은 수학 연산을 수행하는 방법을 알아보겠습니다.1. 저장 프로시저 생성하기먼저 delimiter 명령어로 구분 기호를 변경한 뒤, 두 개의 정수형 매개변수를 받아 곱셈 결과를 반환하는 저장 프로시저를 만들어 보겠습니다.mysql> delimiter // mysql> create procedure
MySQL 저장 프로시저에서 전달된 변수가 NULL이거나 빈 문자열()인지 확인하려면 IF 조건문을 사용하면 됩니다. 이 글에서는 NULL 또는 빈 값을 검사하는 저장 프로시저를 직접 만들어 보고, 실제 호출 예제를 통해 동작 과정을 단계별로 살펴보겠습니다.저장 프로시저 생성하기아래와 같이 IF 조건문으로 Name 변수가 NULL이거나 빈 문자열인지 검사하는 저장 프로시저를 작성합니다. 조건에 해당하면 기본값인 Adam Smith를 반환하고, 그렇지 않으면 입력받은 이름을 그대로 출력합니다.mysql> delimiter //m
MySQL에서 예약어 from을 컬럼명으로 사용하는 방법MySQL에는 SELECT, FROM, WHERE처럼 시스템에서 특별한 의미로 사용되는 예약어(reserved word)가 있습니다. 이러한 예약어를 그대로 컬럼명으로 사용하려고 하면 문법 오류가 발생합니다.하지만 백틱(`) 기호로 컬럼명을 감싸주면 예약어인 from도 정상적으로 컬럼명으로 사용할 수 있습니다. 아래 예제를 통해 단계별로 확인해 보겠습니다.1. 백틱을 사용해 테이블 생성하기예약어 from을 백틱으로 감싸서 테이블을 생성합니다.mysql> create tab
MySQL에서 고유 제약 조건이란?데이터베이스를 설계할 때 특정 컬럼 또는 여러 컬럼의 조합에 중복된 값이 저장되지 않도록 해야 하는 경우가 자주 있습니다. 이럴 때 사용하는 것이 바로 고유(UNIQUE) 제약 조건입니다. MySQL에서는 ALTER TABLE 문을 사용해 이미 생성된 테이블에도 고유 인덱스를 손쉽게 추가할 수 있습니다.이번 글에서는 예제 테이블을 만들고, 두 개의 컬럼(FirstName, LastName) 조합에 고유 제약 조건을 추가한 뒤, 실제로 중복 데이터가 어떻게 처리되는지 단계별로 살펴보겠습니다.1. 예제
MySQL에서 테이블의 열(컬럼) 이름과 데이터 타입을 함께 추출하려면 INFORMATION_SCHEMA.COLUMNS를 사용하는 것이 가장 간편합니다. 이 시스템 뷰는 데이터베이스 내 모든 테이블의 컬럼 메타데이터를 저장하고 있어, 별도의 도구 없이 SQL 쿼리만으로 원하는 정보를 손쉽게 조회할 수 있습니다.기본 쿼리 문법아래와 같이 concat() 함수를 사용해 컬럼 이름과 데이터 타입을 하나의 문자열로 합쳐서 출력할 수 있습니다.select concat(column_name,=,data_type) as anyAliasName
UNION ALL을 활용한 두 열 값 통합 조회MySQL에서 서로 다른 두 개의 열(Name1, Name2)에 저장된 값들을 하나의 열 목록으로 합쳐서 조회하려면 UNION ALL 연산자를 사용하면 됩니다. UNION ALL은 여러 SELECT 쿼리의 결과를 그대로 이어 붙여 반환하며, 중복 제거 없이 모든 행을 그대로 포함합니다.아래 예제를 통해 단계별로 살펴보겠습니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable1813
MySQL 저장 프로시저(Stored Procedure) 내에서 조건에 따라 다른 로직을 실행해야 할 때 IF-ELSE 문을 사용할 수 있습니다. 이번 글에서는 저장 프로시저에서 IF-ELSE를 구현하는 기본 문법과 실제 예제를 단계별로 살펴보겠습니다.IF-ELSE 기본 문법MySQL에서 IF-ELSE 문의 기본적인 작성 형식은 다음과 같습니다.IF yourCondition THEN yourStatement1; ELSE yourStatement2; END IF;조건(yourCondition)이 참(TRUE)이면 첫 번
MySQL 서버의 모든 데이터베이스·모든 테이블에 SELECT 권한 부여하기MySQL 서버에 존재하는 모든 데이터베이스의 모든 테이블에 대해 특정 사용자에게 읽기(SELECT) 권한을 한 번에 부여하려면 GRANT SELECT 문을 활용하면 됩니다. 이 방법은 여러 개의 데이터베이스를 운영하는 환경에서 개별적으로 권한을 설정하는 번거로움을 크게 줄여 줍니다.1. GRANT SELECT 기본 문법권한을 부여하는 기본 문법은 아래와 같습니다.GRANT SELECT ON *.* TO yourUserName@yourHostName;여기서
MySQL에서 DOUBLE 타입이란?MySQL에서 DOUBLE은 배정밀도 부동소수점 숫자를 저장하는 데 사용되는 데이터 타입입니다. 소수점 이하 자릿수가 필요한 금액, 측정값 등을 저장할 때 유용하게 활용됩니다.MySQL에서 DOUBLE 컬럼을 구현하는 기본 문법은 다음과 같습니다.create table yourTableName ( yourColumnName double(5,2) unsigned );여기서 double(5,2)는 전체 자릿수 5자리
MySQL에서 열의 값을 무작위(random)로 선택하려면 ORDER BY RAND()를 사용하면 됩니다. 여기서 선택할 개수를 2개로 제한하려면 LIMIT 2를 함께 사용합니다.1. 샘플 테이블 생성먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable1815 ( Question text ); Query OK, 0 rows affected (0.00 se
MySQL에서 date() 함수를 사용해 날짜를 비교하고 특정 열을 업데이트하려면 아래와 같은 문법을 사용합니다.update yourTableName set yourColumnName=yourValue where date(yourColumnName)=curdate();여기서 date() 함수는 datetime 타입의 값에서 날짜 부분만 추출하고, curdate()는 현재 날짜를 반환합니다. 두 값을 비교하여 조건에 맞는 행만 업데이트할 수 있습니다.예제 테이블 생성먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> cr
MySQL에서 하나의 매개변수에 여러 개의 ID 또는 값을 전달하려면 FIND_IN_SET() 함수를 사용하면 됩니다. 이 함수는 첫 번째 인자로 전달된 값이 두 번째 인자로 전달된 쉼표로 구분된 문자열 목록에 포함되어 있는지 확인하여, 포함되어 있다면 해당 위치 인덱스를 반환합니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable1817 ( EmployeeName varchar(
MySQL에서 SUM() 함수로 합계를 계산할 때, 결과 열의 머리글(컬럼 헤더)에 별칭(alias)을 지정하면 결과를 훨씬 더 읽기 쉽게 만들 수 있습니다. 별칭을 지정하려면 AS 키워드를 사용하며, 기본 문법은 다음과 같습니다.select sum(yourColumnName) as anyAliasName from yourTableName;그럼 실제 예제를 통해 단계별로 살펴보겠습니다.1. 테이블 생성먼저 CREATE TABLE 명령어로 테스트용 테이블을 만듭니다.mysql> create table DemoTable1800 &
GROUP BY 없이 MySQL에서 중복 행 제거하기 – DISTINCT 키워드 활용법MySQL에서 중복된 열이나 행을 제거할 때 흔히 GROUP BY를 사용하지만, DISTINCT 키워드를 활용하면 더 간단하고 직관적으로 처리할 수 있습니다. 이 글에서는 DISTINCT를 사용해 중복 데이터를 제거하는 방법을 예제와 함께 단계별로 살펴보겠습니다.1단계: 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable1801 (  
뷰(View)는 데이터베이스에 저장된 SELECT 쿼리의 결과를 마치 실제 테이블처럼 다룰 수 있게 해주는 가상 테이블입니다. 복잡한 쿼리를 단순화하거나 특정 사용자에게 필요한 데이터만 노출하고 싶을 때 유용하게 활용됩니다.MySQL 뷰 생성 기본 문법MySQL에서 뷰를 생성하려면 CREATE VIEW 문을 사용합니다. 기본 문법은 다음과 같습니다.CREATE VIEW yourViewName ASSELECT * FROM yourTableName;실습 예제로 배우는 뷰 생성1단계: 테이블 생성하기먼저 예제로 사용할 테이블을 생성합니다
MySQL에는 CONTAINS()라는 이름의 함수가 존재하지 않습니다. 하지만 걱정하지 않으셔도 됩니다. CONCAT() 함수와 CURDATE() 함수를 조합하면 동일한 결과를 손쉽게 얻을 수 있습니다.이 글에서는 실제 예제를 통해 현재 날짜의 연도가 문자열 컬럼에 포함되어 있는 레코드를 조회하는 방법을 단계별로 살펴보겠습니다.1단계: 현재 날짜 확인하기먼저 CURDATE() 함수를 사용하여 현재 날짜를 확인해 보겠습니다.mysql> select curdate();실행 결과는 다음과 같습니다.+------------+ | cu
중복된 ID가 존재하는 테이블에서 각 ID별로 최대값을 구하려면 GROUP BY 절과 MAX() 함수를 함께 사용하면 됩니다. GROUP BY로 중복 ID를 하나의 그룹으로 묶고, MAX() 함수로 각 그룹의 컬럼별 최대값을 집계할 수 있습니다. 아래에서 단계별로 살펴보겠습니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable1804 ( Id int, Marks1 int, Marks2 int, Marks3 int ); Quer
개요MySQL에서 한 컬럼의 값이 NULL일 때, 같은 행에 있는 다른 컬럼의 값으로 대체하면서 해당 필드만 업데이트해야 하는 경우가 있습니다. 이럴 때 COALESCE() 함수를 사용하면 간단하게 해결할 수 있습니다.COALESCE()는 인자로 전달된 값들 중 첫 번째로 NULL이 아닌 값을 반환하는 함수입니다. 따라서 COALESCE(Name1, Name2)처럼 작성하면 Name1이 NULL일 경우 Name2의 값이 대신 사용됩니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table