LIKE 연산자와 OR 조합으로 특정 문자로 시작하는 이름 찾기MySQL에서 a, b, c 중 하나로 시작하는 이름을 모두 찾으려면 LIKE 연산자와 OR 연산자를 함께 사용해야 합니다. 기본 문법은 다음과 같습니다.SELECT * FROM yourTableName WHERE yourColumnName like A% or yourColumnName like B% or yourColumnName like C%;위 쿼리는 이름이 오직 A, B, C로 시작하는 레코드만 조회합니다. 문법을 이해하기 위해 실제 테이블을 생성하고 예제를 살펴
MySQL에서 SET GLOBAL event_scheduler = ON으로 이벤트 스케줄러를 활성화하면, 서버가 재시작될 때 설정이 초기화되어 다시 OFF로 돌아가는 문제가 발생합니다. 이 글에서는 MySQL을 재시작하더라도 전역 event_scheduler가 항상 ON 상태를 유지하도록 설정하는 방법을 알아보겠습니다.현재 event_scheduler 상태 확인먼저 시스템 변수 @@event_scheduler를 SELECT 문으로 조회하여 현재 상태를 확인할 수 있습니다.mysql> select @@event_scheduler
MySQL에서 고유한(DISTINCT) 값과 그 개수를 동시에 조회하려면 GROUP BY 절과 집계 함수 COUNT(*)를 함께 사용해야 합니다. 기본 문법은 다음과 같습니다.SELECT yourColumnName, COUNT(*) AS anyVariableName FROM yourTableName GROUP BY yourColumnName;예제 테이블 생성하기위 문법을 실제로 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.mysql> create table selectDistinct
MySQL에서 IF() 함수로 1을 Y로 변환하기MySQL에서는 IF() 함수를 사용하여 SELECT 문의 결과값을 1에서 Y로 손쉽게 변환할 수 있습니다. 이 방법은 boolean 타입(tinyint) 컬럼의 값을 화면에 표시할 때 가독성을 높이고 싶을 때 특히 유용합니다.기본 문법SELECT IF(yourColumnName,Y,yourColumnName) as anyVariableName FROM yourTableName;IF() 함수는 첫 번째 인자가 참(1 또는 true)이면 두 번째 인자를 반환하고, 거짓이면 세 번째 인자
MySQL에서 CASE 표현식을 사용하면 SELECT 쿼리 결과에 포함된 특정 값을 원하는 형태로 손쉽게 변환할 수 있습니다. 예를 들어, 불린 값(0 또는 1)으로 저장된 데이터를 조회할 때 1을 Y로, 0은 그대로 출력하고 싶다면 CASE 문이 유용합니다.이번 글에서는 실제 예제를 통해 CASE 문으로 값 1을 Y로 변경하는 방법을 단계별로 알아보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다. 아래 쿼리를 실행해 주세요.mysql> create table changeValuefrom1toY -&
SQL에서 2개 이상의 필드를 연결하는 방법SQL 작업 중에는 두 개 이상의 필드(컬럼) 값을 하나의 문자열로 합쳐야 하는 경우가 자주 발생합니다. 예를 들어 ID, 이름, 나이, 점수를 한 줄로 표시하거나 특정 구분자로 묶어 출력해야 할 때 유용합니다. MySQL에서는 CONCAT() 함수 또는 CONCAT_WS() 함수를 사용하면 손쉽게 해결할 수 있습니다.기본 문법먼저 CONCAT() 함수를 사용하는 방법입니다. 구분자를 포함하려면 각 컬럼 사이에 직접 문자열로 삽입해야 합니다.SELECT CONCAT(yourColumnNam
MySQL에서 DATETIME 타입의 값을 정수(Integer)로 변환하려면 UNIX_TIMESTAMP() 함수를 사용하면 됩니다. 이 함수는 날짜/시간 값을 1970년 1월 1일 00:00:00 UTC(유닉스 에포크) 이후 경과한 초 단위의 정수 값으로 반환합니다.기본 문법SELECT UNIX_TIMESTAMP(yourDatetimeColumnName) as anyVariableName FROM yourTableName;문법을 실제로 이해하기 위해 예제 테이블을 하나 만들어 보겠습니다.1. 테이블 생성아래 쿼리로 DatetimeT
SQL에서 VARCHAR를 DOUBLE로 변환하는 방법MySQL에서 문자열(VARCHAR)로 저장된 숫자 데이터를 수치 연산이나 정렬에 활용하려면 데이터 타입 변환이 필요합니다. 이때 CAST() 함수를 사용하면 VARCHAR 타입을 DOUBLE(DECIMAL) 타입으로 간단하게 변환할 수 있습니다.CAST() 함수 기본 문법SELECT yourColumnName1, yourColumnName2, ......N, CAST(yourColumnName AS DECIMAL(TotalDigit, DigitAfterDecimalP
MySQL에서 날짜의 연도만 변경하기MySQL에서 저장된 날짜 데이터의 연도 부분만 2020년에서 2011년으로 변경해야 하는 경우가 있습니다. 이때 SUBDATE() 함수에 INTERVAL 9 YEAR을 지정하면 간단하게 처리할 수 있습니다. 2020년과 2011년 사이에는 정확히 9년의 차이가 있기 때문입니다.기본적인 UPDATE 문법은 다음과 같습니다.UPDATE 테이블명 SET 날짜컬럼명 = SUBDATE(날짜컬럼명, INTERVAL 9 YEAR);이제 실제 예제를 통해 동작 과정을 단계별로 살펴보겠습니다.1. 예제 테이블
MySQL에서 기본 키(Primary Key) 필드에 NOT NULL을 별도로 지정할 필요는 없습니다. 기본 키를 설정하면 MySQL이 내부적으로 자동으로 NOT NULL 속성을 부여하기 때문입니다. 즉, 기본 키는 NOT NULL과 UNIQUE 제약 조건이 결합된 형태라고 할 수 있습니다.기본 키 필드 동작 확인하기먼저 예제용 테이블을 생성해 보겠습니다. 아래 쿼리로 테이블을 만들 수 있습니다:mysql> create table NotNullAddDemo -> ( -> Id int AUTO_INCRE
MySQL 시간 필드에서 초를 제거하는 방법MySQL에서 시간(time) 필드에 저장된 값에서 초 단위를 제거하고 싶다면 TIME_FORMAT() 함수를 사용하면 됩니다. 이 함수는 지정한 형식 문자열에 따라 시간 값을 원하는 형태로 변환해 줍니다.기본 문법SELECT TIME_FORMAT(컬럼명1, %H:%i) AS 별칭1, TIME_FORMAT(컬럼명2, %H:%i) AS 별칭2 FROM 테이블명;여기서 %H는 24시간 형식의 시, %i는 분을 의미합니다. 초에 해당하는 %s를 포함하지 않으면 결과에서 자동으로 초가 제거됩니다.
사용자 정의 변수(User-Defined Variable)란?MySQL에서 사용자 정의 변수는 세션 전용 변수(session-specific variable)라고도 불립니다. 타입이 엄격하게 제한되지 않는(loosely typed) 변수로, 세션 도중 어느 시점이든 초기화할 수 있으며 세션이 종료될 때까지 그 값을 유지합니다.사용자 정의 변수는 반드시 @ 기호를 접두사로 붙여야 합니다. 예를 들면 다음과 같습니다:@anyVariableName;사용자 정의 변수 초기화 방법 2가지사용자 정의 변수를 초기화하는 방법에는 SET 명령어를
MySQL에서 두 개의 열을 비교하여 NULL이 아닌 값만 선택해야 하는 경우가 자주 있습니다. 예를 들어, 사용자 정보가 여러 열에 분산되어 있고 그중 하나만 값이 존재할 때 유용합니다. 이를 구현하는 방법은 다양하며, 대표적으로 네 가지 문법을 소개합니다. 방법 1: IFNULL() 함수 사용 IFNULL() 함수는 첫 번째 인자가 NULL이면 두 번째 인자를 반환하고, NULL이 아니면 첫 번째 인자를 그대로 반환합니다. SELECT IFNULL(열이름1, 열이름2) AS 별칭 FROM 테이블명; 방법 2: COALESCE
MySQL에서 테이블의 날짜 값에 30일을 더하려면 UPDATE 명령과 함께 ADDDATE() 함수를 사용하면 됩니다. 기본 문법은 다음과 같습니다.UPDATE yourTableNameSET yourDateColumnName=ADDDATE(yourDateColumnName,INTERVAL 30 DAY);위 문법을 실제로 이해하기 위해 예제 테이블을 하나 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.mysql> create table Add30DayDemo -> ( -> Id int NOT NUL
%M과 %b의 차이점MySQL의 %M 형식 지정자는 January, February처럼 월의 전체 영문 이름을 출력할 때 사용됩니다. 따라서 Jan, Feb처럼 축약된 짧은 월 이름을 표시하려면 %M이 아닌 %b 형식 지정자를 DATE_FORMAT() 함수와 함께 사용해야 합니다.두 형식 지정자의 차이를 간단히 정리하면 다음과 같습니다.%M : 월의 전체 영문 이름 출력 → 예) May, November, December%b : 월의 축약된 영문 이름 출력 → 예) May, Nov, Dec참고로 월 이름은 MySQL의 lc_time
MySQL WHERE 1=0의 의미와 활용MySQL에서 WHERE 1=0 조건은 쿼리가 어떤 행도 반환하지 않도록 만드는 데 사용됩니다. 1=0은 항상 거짓(FALSE)이기 때문에, 이 조건이 포함된 SELECT 문은 테이블에 데이터가 있더라도 항상 빈 결과 집합(Empty set)을 반환합니다.기본 문법은 다음과 같습니다:SELECT * FROM yourTableName WHERE 1=0;이러한 특성 때문에 WHERE 1=0은 실무에서 다양하게 활용됩니다. 예를 들어, 데이터 없이 테이블 구조만 복사하거나(CREATE TABLE
MySQL에서 두 열의 값이 다른 행 조회하기MySQL에서 두 개의 열(column) 값을 비교하여 서로 다른 값을 가진 행만 선택하려면 != 연산자를 사용할 수 있습니다. 다만 NULL 값이 포함된 경우 단순 비교로는 처리되지 않기 때문에, IS NULL 조건을 함께 사용해야 완벽하게 처리할 수 있습니다.기본 문법SELECT * FROM yourTableName WHERE yourColumnName1 != yourColumnName2 OR (yourColumnName1 IS NULL AND yourColumnName2 IS
MySQL INT 컬럼에 NULL 저장이 가능한가?네, 가능합니다. MySQL에서 INT 타입의 컬럼은 기본적으로 NULL 값을 허용(nullable)합니다. 별도의 제약 조건(NOT NULL)을 지정하지 않는 한, 해당 컬럼에는 숫자 대신 NULL을 자유롭게 저장할 수 있습니다.INT 컬럼에 NULL을 삽입하는 기본 문법은 다음과 같습니다.INSERT INTO yourTableName(yourIntColumnName) values(NULL);예제 테이블 생성실제 동작을 확인하기 위해 테스트용 테이블을 만들어 보겠습니다. 아래 쿼리
MySQL에서 열의 NOT NULL 제약 조건 제거하기MySQL에서 이미 생성된 열에 설정된 NOT NULL 제약 조건을 제거하려면 ALTER 명령어를 사용하면 됩니다. 기본 문법은 다음과 같습니다.ALTER TABLE 테이블이름 MODIFY COLUMN 열이름 데이터타입;즉, 열을 다시 정의할 때 NOT NULL 옵션을 빼고 원하는 데이터 타입만 지정하면 해당 열의 NOT NULL 제약이 자동으로 해제됩니다.1. 예제용 테이블 생성먼저 실습을 위한 테이블을 만들어 보겠습니다. 아래 쿼리는 Name 열에 NOT NULL 제약이 걸린
MySQL에서는 UPDATE 명령어를 사용하여 테이블의 모든 행에 원하는 값을 손쉽게 추가할 수 있습니다. 이 글에서는 정수형 컬럼과 날짜형 컬럼에 각각 값을 더하는 방법을 실습 예제와 함께 단계별로 살펴보겠습니다.1. 기본 문법정수형(Integer) 컬럼에 값 더하기UPDATE yourTableName SET yourIntegerColumnName = yourIntegerColumnName + anyValue;UPDATE yourTableName SET yourIntegerColumnName = anyValue WHERE your