MySQL에서 대소문자와 문자열을 완전히 일치시키며 검색하려면 BINARY 키워드를 사용할 수 있습니다. 기본적으로 MySQL의 문자열 비교는 콜레이션(collation) 설정에 따라 대소문자를 구분하지 않는 경우가 많은데, BINARY를 적용하면 바이트 단위로 비교하여 정확히 일치하는 값만 반환합니다.기본 문법SELECT * FROM yourTableName WHERE BINARY yourColumnName = yourStringValue;예제 테이블 생성문법을 이해하기 위해 먼저 예제 테이블을 생성해 보겠습니다.mysql>
MySQL에서 테이블의 데이터 정렬(collation)을 변경하려면 ALTER 명령어를 사용해야 합니다. 단 한 줄의 쿼리만으로 기존 테이블의 정렬 방식을 손쉽게 바꿀 수 있습니다.데이터 정렬 변경 기본 문법ALTER TABLE yourTableName COLLATE utf8_general_ci;위 문법을 실제로 이해하기 위해 예제 테이블을 하나 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.예제 테이블 생성하기mysql> create table CollateDemo-> (-> Id int NOT NULL
MySQL에서 VARCHAR 타입의 컬럼 값에 백분율 기호(%)가 포함되어 있는지 확인하려면 LIKE 연산자와 함께 ESCAPE 절을 사용하면 됩니다. 일반적으로 LIKE 패턴에서 %는 와일드카드로 해석되기 때문에, 이스케이프 문자를 지정하여 리터럴한 % 기호 자체를 검색해야 합니다.기본 문법SELECT * FROM yourTableName WHERE yourColumnName like %|%% escape |;위 문법에서 |(파이프) 문자가 이스케이프 문자로 지정되었으며, |%는 와일드카드가 아닌 실제 % 문자를 의미합니다.예제
개요데이터베이스에 저장된 날짜는 기본적으로 yyyy-mm-dd 형식으로 저장되지만, 화면에 출력할 때는 상황에 따라 다른 형식이 필요할 수 있습니다. 이 글에서는 PHP와 MySQL에서 날짜 형식을 dd/mm/yyyy로 변경하는 방법을 예제와 함께 자세히 알아보겠습니다.PHP에서 date() 함수로 날짜 형식 변경하기PHP에서는 date() 함수를 사용하여 날짜 형식을 손쉽게 변경할 수 있습니다. 기본 문법은 다음과 같습니다.date(d/m/Y, yourDateTimeVariable);먼저 strtotime() 함수를 사용해 문자열
MySQL LIMIT로 단일 행 조회하기MySQL에서 WHERE 조건에 해당하는 행이 여러 개 있더라도 그중 하나의 행만 가져오고 싶은 경우가 있습니다. 이럴 때 LIMIT 절을 사용하면 간단하게 해결할 수 있습니다. 이 글에서는 테이블 생성부터 데이터 삽입, 그리고 LIMIT을 활용한 단일 행 조회까지 단계별로 살펴보겠습니다.1. 예제 테이블 생성하기먼저 기본 키(Primary Key)를 포함한 테이블을 생성합니다. 테이블 생성 쿼리는 다음과 같습니다.mysql> create table selectWithPrimaryKey
MySQL에서 dd/mm/yyyy 형식으로 저장된 날짜 문자열을 Unix 타임스탬프로 변환하려면 UNIX_TIMESTAMP() 함수와 STR_TO_DATE() 함수를 함께 사용하면 됩니다.기본 문법변환에 사용되는 기본 문법은 다음과 같습니다.SELECT UNIX_TIMESTAMP(STR_TO_DATE(yourColumnName,%d/%m/%Y)) as anyVariableName FROM yourTableName;여기서 STR_TO_DATE()가 일/월/년 형식의 문자열을 MySQL이 인식할 수 있는 날짜 값으로 바꾸고, UNIX_
MySQL에서는 MD5() 함수를 활용하면 테이블의 각 행에 대한 해시 값을 손쉽게 얻을 수 있습니다. 여러 컬럼의 값을 CONCAT()으로 하나의 문자열로 연결한 뒤 MD5 함수에 전달하면, 행 단위의 고유한 해시 값이 생성됩니다.기본 문법SELECT MD5(CONCAT(yourColumnName1,yourColumnName2,yourColumnName3,.......N)) as anyVariableName FROM yourTableName;위 문법을 실제로 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다.1. 테이블 생성다음
MySQL에서 SELECT 쿼리를 작성하다 보면 특정 필드의 저장된 값(예: 0 또는 1)을 사람이 읽기 쉬운 형태(예: ENABLED 또는 DISABLED)로 변환해 출력해야 하는 경우가 자주 있습니다. 이럴 때 CASE 문이나 IF() 함수를 사용하면 간단하게 해결할 수 있습니다.1. CASE 문을 사용한 키 매핑CASE 문을 활용하면 조건에 따라 필드 값을 원하는 문자열로 변환하여 조회할 수 있습니다. 기본 구문은 다음과 같습니다.SELECT yourColumnName1, yourColumnName2, yourColumnNam
MySQL에서 숫자가 포함된 문자열 정렬하기 MySQL에서 A10, A30, A12처럼 문자와 숫자가 섞인 문자열을 단순히 ORDER BY로 정렬하면 사전순(문자열 순)으로 정렬되어 의도와 다른 결과가 나올 수 있습니다. 이런 경우 SUBSTR() 함수와 CAST() 함수를 함께 사용하면 숫자 크기 기준으로 자연스럽게 정렬할 수 있습니다. 기본 문법 SELECT * FROM yourTableName ORDER BY SUBSTR(yourColumnName FROM 1 FOR 2), CAST(SUBSTR(yourCo
MySQL에서는 UPDATE 명령을 사용해 불리언(BOOLEAN) 값을 손쉽게 업데이트할 수 있습니다. 흥미로운 점은 BOOLEAN 데이터 타입을 사용하면 MySQL이 내부적으로 이를 tinyint(1)로 변환한다는 것입니다. 따라서 true 리터럴은 tinyint(1)의 1로, false 리터럴은 0으로 처리됩니다.기본 문법불리언 값을 업데이트할 때 사용하는 기본적인 UPDATE 문법은 다음과 같습니다.UPDATE yourTableName SET yourColumnName = yourValue WHERE yourCondition;
사용자 정의 함수로 연속 공백 제거하기MySQL에는 문자열 안에 포함된 두 칸 이상의 연속된 공백을 한 번에 정리하는 내장 함수가 없습니다. 따라서 직접 함수를 생성하는 것이 가장 효과적인 해결 방법입니다. 함수를 활용하면 앞뒤 공백 제거(TRIM)와 반복적인 공백 치환(REPLACE) 과정을 자동화할 수 있습니다.함수 생성 기본 문법먼저 함수를 만들기 위한 기본 문법은 다음과 같습니다.DELIMITER //CREATE FUNCTION yourFunctionName(parameter1,...N) RETURNS datatypeBEGI
MySQL 테이블에서 마지막 항목 조회하기MySQL 테이블에서 마지막에 저장된 항목(레코드)을 가져오려면 ORDER BY 절을 활용하면 됩니다. 대표적인 방법은 크게 두 가지가 있습니다.방법 1: ORDER BY ... DESC LIMIT 사용특정 컬럼을 기준으로 내림차순(DESC) 정렬한 뒤, 첫 번째 행만 가져오는 가장 간단한 방식입니다.SELECT * FROM yourTableName ORDER BY yourColumnName DESC LIMIT 1;방법 2: MAX() 함수 사용컬럼의 최댓값을 변수에 담은 후, 해당 값과 일
MySQL에서 고유 ID를 가진 전체 레코드 조회하기MySQL에서 중복된 ID 값이 존재할 때, 각 ID별로 하나의 레코드만 조회하고 싶다면 GROUP BY 절을 활용하면 됩니다. 기본 문법은 다음과 같습니다.SELECT * FROM 테이블명 GROUP BY 컬럼명;예제 테이블 생성문법을 실제로 이해하기 위해 간단한 테이블을 만들어 보겠습니다.mysql> create table DistinctIdDemo -> ( -> Id int, -> Name varchar(20), -> A
MySQL에서 통화 값에는 DECIMAL 데이터 유형이 가장 적합합니다MySQL에서 금액과 같은 통화 값을 저장할 때 가장 적합한 데이터 유형은 DECIMAL입니다. FLOAT나 DOUBLE은 부동 소수점 방식의 특성상 미세한 정밀도 오차가 발생할 수 있지만, DECIMAL은 정확한 십진수 값을 보장하기 때문에 금융·결제 데이터를 다룰 때 필수적인 선택입니다.DECIMAL 데이터 유형의 기본 문법은 다음과 같습니다.DECIMAL(총 자릿수, 소수점 이하 자릿수);예를 들어 DECIMAL(10,2)는 소수점을 포함해 총 10자리까지
MySQL BETWEEN에서 경계값(끝점) 제외하기 MySQL의 BETWEEN 연산자는 기본적으로 시작값과 끝값을 모두 포함하는 폐쇄 범위 조건입니다. 즉, WHERE age BETWEEN 20 AND 30이라고 작성하면 20과 30 역시 결과에 포함됩니다. 그렇다면 범위 조회는 하되 시작점이나 끝점은 결과에서 빼고 싶다면 어떻게 해야 할까요? 가장 간단한 방법은 BETWEEN과 NOT IN을 함께 사용하는 것입니다. 1. 기본 문법 끝값만 제외하고 싶은 경우에는 다음과 같은 형태로 쿼리를 작성합니다. SELECT * FROM yo
BETWEEN 연산자의 기본 동작과 한계 MySQL의 BETWEEN 연산자는 지정한 범위 내의 데이터를 조회할 때 매우 유용하지만, 기본적으로 시작값과 끝값을 모두 포함한다는 특징이 있습니다. 따라서 경계값을 제외한 범위 내부의 데이터만 조회하고 싶다면 별도의 처리가 필요합니다. 경계값을 제외하는 쿼리 문법 시작값과 끝값을 결과에서 제외하려면 BETWEEN과 NOT IN을 조합하여 아래와 같이 작성할 수 있습니다. SELECT * FROM yourTableName WHERE yourColumnName BETWEEN yourSta
MySQL에서 두 열의 고유한(distinct) 조합 선택하기MySQL에서 두 개의 열에 저장된 값들의 고유한 조합을 추출해야 하는 경우가 종종 있습니다. 예를 들어, s,t와 t,s처럼 순서만 다른 데이터를 하나의 조합으로 취급하고 싶다면 CASE 문을 활용하면 간단하게 해결할 수 있습니다.이 글에서는 실제 예제 테이블을 만들고, CASE 문을 사용하여 두 열의 고유한 조합을 선택하는 방법을 단계별로 살펴보겠습니다.1단계: 예제 테이블 생성먼저 두 개의 문자열 열을 가진 테이블을 생성합니다. 테이블 생성 쿼리는 다음과 같습니다.m
MySQL에서 날짜가 일(day), 월(month), 연도(year)로 분리되어 저장된 경우, 그중 가장 이른 날짜 즉 최솟값을 어떻게 구할 수 있을까요? 이 글에서는 CONCAT 함수와 MIN 함수를 조합하여 사용자 지정 형식의 날짜 중 최소 날짜를 조회하는 방법을 단계별로 살펴봅니다.1. 예제 테이블 생성하기먼저 실습에 사용할 테이블을 만들어 보겠습니다. 아래 쿼리는 날짜 정보를 세 개의 varchar 컬럼에 나누어 저장하는 구조입니다.mysql> create table FindMinimumDate-> (-> I
MySQL에서 테이블에 저장된 데이터 중 무작위(random)로 한 개 이상의 행을 조회하고 싶다면, RAND() 함수와 LIMIT 절을 함께 사용하면 됩니다. 이 방법은 각 행에 임의의 난수를 부여한 뒤 정렬하고, 상위 N개의 행만 가져오는 방식으로 동작합니다.기본 문법SELECT * FROM yourTableName ORDER BY RAND() LIMIT 1;위 쿼리는 지정한 테이블의 모든 행을 무작위 순서로 섞은 후, 그중 첫 번째 행 하나만 반환합니다. LIMIT 값을 조정하면 원하는 개수만큼의 임의 행을 가져올 수도 있습니
MySQL에서 날짜 열에 현재 날짜와 시간을 자동으로 채우려면 NOW() 함수를 기본값(DEFAULT)으로 지정하면 됩니다. 이후 DATE() 함수를 사용하면 저장된 값에서 날짜 부분만 추출할 수도 있습니다.기본값 설정 문법Case 1: DATE 타입에 고정 날짜 기본값 지정yourDateColumnName date default yourDateValue;Case 2: DATETIME 타입에 현재 날짜·시간 자동 입력yourDateColumnName datetime default now();참고: MySQL 5.6.5 이상 버전부터