MySQL의 IF() 함수는 조건에 따라 서로 다른 값을 반환하는 제어 흐름(control flow) 함수입니다. 흔히 IF ELSE 또는 IF THEN ELSE 함수라고도 불리며, 세 개의 표현식을 인자로 받아 첫 번째 표현식이 참(TRUE, 즉 0이 아니고 NULL도 아닌 값)이면 두 번째 표현식을 반환하고, 그렇지 않으면 세 번째 표현식을 반환합니다.기본 문법IF(expr, value_if_true, value_if_false)각 인자의 의미는 다음과 같습니다.expr: 평가할 조건식입니다.value_if_true: expr이
SELECT 문에서 MySQL IF() 함수 사용하기MySQL의 IF() 함수는 SELECT 문 안에서도 충분히 활용할 수 있습니다. 핵심은 IF() 함수의 첫 번째 인자로 조건과 함께 컬럼 이름을 전달하는 것입니다. 이렇게 하면 조회되는 각 행마다 조건을 평가하여 원하는 값을 동적으로 출력할 수 있습니다.실제 예제를 통해 이해해 보겠습니다. 다음은 Students 테이블에 저장된 데이터입니다.mysql> Select * from Students; +----+-----------+-----------+----------+---
MySQL IF() 함수에서 SELECT 문 활용하기MySQL의 IF() 함수는 조건에 따라 서로 다른 값을 반환하는 강력한 제어 흐름 함수입니다. 흥미로운 점은 SELECT 문(서브쿼리)을 IF() 함수의 첫 번째 인수인 조건식으로 사용할 수 있다는 것입니다.이를 이해하기 위해 다음과 같은 데이터를 가진 Students 테이블을 예시로 살펴보겠습니다.예시 테이블: Studentsmysql> Select * from Students; +----+-----------+-----------+----------+-----------
데이터베이스를 조회할 때 특정 열의 값이 NULL로 저장되어 있으면, 결과 화면에 빈칸이나 NULL이 그대로 출력되어 데이터를 해석하기 어려울 수 있습니다. 이럴 때 MySQL의 IF() 함수를 사용하면 NULL 대신 N/A처럼 원하는 값을 표시할 수 있습니다.IF() 함수의 기본 문법IF() 함수는 조건식을 평가한 뒤, 조건이 참이면 두 번째 인자를, 거짓이면 세 번째 인자를 반환하는 제어 흐름 함수입니다.IF(조건식, 조건이_참일_때_값, 조건이_거짓일_때_값)예제 데이터 확인Employee 테이블에서 두 직원의 salary(급
MySQL에서는 TRIM() 함수와 UPDATE 문을 함께 사용하면 열 값에서 특정 문자열을 제거한 뒤 테이블을 손쉽게 업데이트할 수 있습니다. 아래 예시를 통해 examination_btech 테이블을 활용해 그 사용법을 자세히 살펴보겠습니다.예제 1: 문자열 끝부분(Trailing) 제거하기Course 열의 값 끝에 붙어 있는 (CSE)라는 문자열을 삭제하고, 동시에 테이블도 업데이트하고 싶다면 다음과 같은 쿼리를 실행하면 됩니다.mysql> Update examination_btech SET Course = TRIM(Tr
MySQL에서 특정 열의 값이 NULL인지 확인하려면 IS NULL 연산자를 사용해야 합니다. 많은 초보 개발자가 =(비교 연산자)로 NULL을 비교하려고 하지만, 이는 올바른 방법이 아닙니다. 그 이유는 NULL이 값이 아니라 값이 존재하지 않음을 나타내는 상태이기 때문입니다.IS NULL 연산자를 사용한 NULL 확인 예제다음은 employee 테이블의 데이터를 이용해 IS NULL 연산자의 동작을 보여주는 예제입니다.mysql> Select * from Employee WHERE Salary IS NULL; +----+-
MySQL의 RAND() 함수는 0과 1 사이의 임의의 부동 소수점 값을 반환합니다. 그렇다면 동일한 쿼리 안에서 RAND()를 시드(seed) 값 없이 두 번 이상 호출하면 어떻게 될까요? 정답은 호출할 때마다 서로 다른 난수가 생성된다는 것입니다. 예제로 확인하기 아래 예제는 하나의 SELECT 문에서 RAND() 함수를 세 번 호출한 결과입니다. mysql> Select RAND(), RAND(), Rand(); +--------------------+-------------------+------------------
MySQL에서 ORDER BY 절과 함께 RAND() 함수를 사용하면 결과 집합의 행들이 섞여서(shuffled) 반환됩니다. 즉, 조회 결과가 매번 실행할 때마다 무작위(random) 순서로 출력되는 것입니다.예제 테이블 준비동작 방식을 이해하기 위해 다음과 같은 데이터를 가진 Employee 테이블을 예로 들어 보겠습니다.mysql> Select * from employee; +----+--------+--------+ | ID | Name | Salary | +----+--------+--------+ | 1 | G
RAND( ) 함수에 정수 인자를 전달하면 해당 값이 난수 생성기의 시드(seed)로 사용됩니다. 핵심은 같은 값으로 시드를 설정할 때마다 RAND( )가 항상 동일한 순서의 난수 시퀀스를 반환한다는 점입니다.즉, 프로그램을 여러 번 실행하거나 쿼리를 반복해도 시드 값만 동일하다면 완전히 똑같은 난수 결과를 얻을 수 있습니다. 이는 테스트 데이터 생성이나 재현 가능한 무작위 샘플링이 필요할 때 매우 유용합니다.예제아래 예제에서는 세 개의 RAND( ) 호출에 모두 동일한 시드 값 1을 전달했습니다. 그 결과 세 함수 모두 정확히 같
RAND() 함수로 무작위 데이터 조회하기MySQL에서 RAND() 함수를 ORDER BY 절과 LIMIT 절과 함께 사용하면, 쿼리를 실행할 때마다 서로 다른 행(row) 또는 값 집합을 무작위로 반환받을 수 있습니다. RAND() 함수는 각 행에 대해 임의의 난수를 생성하고, ORDER BY 절이 이 난수를 기준으로 결과를 정렬한 뒤, LIMIT 절이 지정된 개수만큼만 잘라내어 반환하기 때문입니다.이를 이해하기 위해 다음과 같은 레코드를 가진 Employee 테이블을 예로 들어 보겠습니다.mysql> Select * fro
MySQL의 LENGTH() 함수는 문자열의 길이를 바이트(byte) 단위로 측정합니다. 즉, 이 함수는 멀티바이트(multibyte)에 안전하지 않습니다. CHAR_LENGTH()나 CHARACTER_LENGTH()처럼 멀티바이트에 안전한 함수와 LENGTH() 함수의 결과 차이는 유니코드(Unicode) 환경에서 특히 중요합니다. 유니코드에서는 대부분의 문자가 2바이트로 인코딩되고, UTF-8에서는 문자마다 필요한 바이트 수가 달라지기 때문입니다.예를 들어, 어떤 문자열이 2바이트짜리 문자 4개로 구성되어 있다면 LENGTH()
MySQL에서 숫자를 처리할 때 자주 사용되는 CEILING(), FLOOR(), ROUND() 함수는 모두 수치를 조정하지만 각각 동작 방식이 다릅니다. 이 글에서는 세 함수의 개념과 실행 예제, 그리고 핵심 차이점을 하나씩 살펴보겠습니다.CEILING() 함수 – 무조건 올림CEILING() 함수는 X보다 작지 않은(크거나 같은) 정수 중 가장 작은 값을 반환합니다. 즉, 소수 값과 상관없이 항상 큰 쪽 정수로 올림합니다.mysql> Select CEILING(3.46); +---------------+ | CEILING(
MySQL에서 REPLACE() 함수의 결과값을 사용자가 원하는 열 이름(별칭)으로 가져오려면, REPLACE() 함수 뒤에 AS 키워드를 함께 사용하면 됩니다.AS 키워드는 함수나 연산의 결과에 새로운 이름을 부여하는 역할을 하며, 이를 통해 결과 집합의 열 제목을 더 직관적이고 의미 있게 표시할 수 있습니다.예제다음 예제는 student 테이블에서 과목이 Computers인 학생들의 이름을 조회하고, 동시에 REPLACE() 함수를 적용한 결과를 Name_Changed라는 새로운 열 이름으로 출력합니다.mysql> Sele
MySQL의 TRUNCATE() 함수란?TRUNCATE() 함수는 숫자 X를 소수점 D자리까지 잘라낸(truncate) 값을 반환합니다. 이 함수의 동작 방식은 다음과 같습니다.D가 0이면 소수점 이하를 모두 제거하고 정수 부분만 반환합니다.D가 음수이면 정수 부분에서 D개만큼의 자릿수를 잘라냅니다.다음 예제를 통해 확인해 보겠습니다.mysql> Select TRUNCATE(7.536432,2); +----------------------+ | TRUNCATE(7.536432,2) | +----------------------
MySQL의 ROUND() 함수에서 두 번째 인수에 음수 값을 지정하면, 소수점 앞자리 숫자들이 삭제되면서 반올림 처리됩니다. 이때 삭제되는 자릿수는 음수 인수의 절댓값에 따라 결정됩니다.음수 인수를 사용한 ROUND() 함수의 동작 원리두 번째 인수가 -1이면 일의 자리, -2이면 십의 자리, -3이면 백의 자리가 각각 삭제 대상이 되고, 해당 자릿수의 숫자가 5 이상인 경우 그 앞자리 숫자가 올림됩니다. 아래 예제들을 통해 두 번째 인수의 음수 값에 따라 출력 결과가 어떻게 달라지는지 살펴보겠습니다.예제 1: 두 번째 인수가 -
MySQL에서 현재 사용 중인 데이터베이스가 아니라 다른 데이터베이스에 속한 테이블 목록과 각 테이블의 유형까지 한 번에 확인하려면 SHOW FULL TABLES 문을 사용하면 됩니다. 이 문은 단순히 테이블 이름만 보여주는 SHOW TABLES와 달리, 해당 객체가 일반 테이블인지 뷰(VIEW)인지까지 함께 출력해 주기 때문에 매우 유용합니다. 기본 구문 SHOW FULL TABLES IN db_name 여기서 db_name은 테이블 목록을 조회하고자 하는 데이터베이스의 이름입니다. USE 문으로 데이터베이스를 전환할 필요 없이
데이터베이스 작업을 하다 보면 특정 테이블에 어떤 열(column)들이 정의되어 있는지 확인해야 할 때가 많습니다. MySQL에서는 SHOW COLUMNS 문을 사용하면 간단하게 해결할 수 있습니다.기본 구문(Syntax)SHOW COLUMNS FROM tab_name;여기서 tab_name은 열 목록을 조회하고자 하는 테이블의 이름입니다. 이 문장을 실행하면 해당 테이블에 포함된 모든 열의 이름(Field), 데이터 타입(Type), NULL 허용 여부(Null), 키 정보(Key), 기본값(Default), 추가 속성(Extra
MySQL에서는 SHOW COLUMNS 문을 사용하면 현재 접속해 있는 데이터베이스와 관계없이, 다른 데이터베이스에 있는 테이블의 열 목록을 간단히 조회할 수 있습니다. 기본 구문은 다음과 같습니다.구문SHOW COLUMNS FROM db_name.tab_name각 요소의 의미는 다음과 같습니다.tab_name: 열 목록을 확인하고자 하는 테이블의 이름입니다.db_name: 해당 테이블이 저장되어 있는 데이터베이스의 이름입니다.예제아래 예제는 현재 query라는 데이터베이스를 사용 중인 상태에서, mysql 데이터베이스에 저장된 a
MySQL에서 COALESCE() 함수는 인수로 전달된 값들 중 첫 번째로 NULL이 아닌 값을 반환하는 함수입니다. 이 특성을 활용하면 UPDATE 문과 함께 사용하여 테이블에 존재하는 NULL 값을 원하는 기본값으로 손쉽게 대체할 수 있습니다.예제 데이터 확인설명을 위해 Employee 테이블을 사용합니다. 아래 데이터에서 ID가 5와 6인 행의 Salary 열은 NULL로 저장되어 있습니다.mysql> Select * from Employee; +----+--------+--------+ | ID | Name | Sa
MySQL 테이블 데이터에 COALESCE() 함수 적용하기MySQL 테이블의 데이터 값에 COALESCE() 함수를 적용하려면 이 함수의 인수로 컬럼 이름을 전달해야 합니다. COALESCE() 함수는 전달된 인수를 왼쪽에서 오른쪽 순서로 검사하며, 첫 번째 컬럼의 값이 NULL이라면 다음 컬럼을 확인하고, 이 과정을 NULL이 아닌 첫 번째 값을 찾을 때까지 반복합니다.아래의 employee 테이블 데이터를 사용하여 이 개념을 실제로 살펴보겠습니다.예제 테이블: employeemysql> Select * from emplo