MySQL 테이블의 datetime 열에서 중복 없이 고유한 날짜만 추출하려면 DISTINCT 키워드를 사용하면 됩니다. 특히 날짜와 시간이 함께 저장되어 있기 때문에, YEAR()나 MONTH() 같은 함수와 함께 활용하면 원하는 형태로 데이터를 정리할 수 있습니다.예제 테이블 생성하기먼저 실습에 사용할 테이블을 만들어 보겠습니다. 아래 쿼리는 사용자 메시지와 게시 시간을 저장하는 테이블을 생성합니다.mysql> create table PostMesssageDemo - > ( - > UserId in
MySQL에서 현재 날짜 기준 지난 이틀간의 레코드 조회하기MySQL에서 현재 날짜를 기준으로 지난 이틀간의 레코드를 조회하려면 DATE_SUB() 함수를 사용하면 됩니다. 아울러 현재 날짜와 시간을 구하는 NOW() 함수도 함께 활용합니다. 기본 문법은 다음과 같습니다.SELECT *FROM yourTableNameWHERE yourDateTimeColumnName BETWEEN DATE_SUB(DATE(NOW()), INTERVAL 2 DAY)AND DATE_SUB(DATE(NOW()), INTERVAL 1 DAY);여기서 BE
MySQL에서 날짜 데이터가 저장된 컬럼에서 특정 월에 해당하는 레코드만 조회하고 싶다면 MONTH() 함수를 활용하면 됩니다. MONTH() 함수는 날짜 값에서 월에 해당하는 숫자(1~12)를 추출해 주기 때문에, WHERE 절과 함께 사용하면 원하는 월의 데이터를 손쉽게 필터링할 수 있습니다.기본 문법SELECT yourColumnName FROM yourTableName WHERE MONTH(yourColumnName) = yourValue;예제 테이블 생성문법을 실제로 이해하기 위해 사용자 로그인 시간 정보를 저장하는 테이블
MySQL에서 MIN() 함수와 MAX() 함수를 활용하면 결과 집합의 첫 번째 행과 마지막 행을 손쉽게 조회할 수 있습니다. 기본 문법은 다음과 같습니다.SELECT *FROM yourTableNameWHERE yourColumnName = (SELECT MIN(yourColumnName) FROM yourTableName)UNIONSELECT *FROM yourTableNameWHERE yourColumnName = (SELECT MAX(yourColumnName) FROM yourTableName);이 쿼리는 UNION 연산자
MySQL에서 SELECT 쿼리 결과에 실제 테이블에는 존재하지 않는 열(컬럼)을 추가하고 싶다면 AS 키워드를 활용하면 됩니다. 이 방법은 특정 고정값이나 계산된 값을 새로운 컬럼 이름으로 출력할 때 매우 유용합니다.기본 문법SELECT yourColumnName1, yourColumnName2, ....N, yourValue AS yourColumnName, ....N FROM yourTableName;위 문법에서 yourValue AS yourColumnName 부분이 핵심입니다. 원하는 값을 지정하고 AS 뒤에 새로운 컬럼
MySQL에서 실제 테이블에는 존재하지 않는 열을 SELECT 쿼리 결과에 추가해야 하는 경우가 종종 있습니다. 이때 AS 키워드(별칭)를 활용하면 별도의 테이블 구조 변경 없이 가상의 열을 손쉽게 만들 수 있으며, 여러 개의 열도 동시에 추가할 수 있습니다.테이블 생성하기먼저 예제에 사용할 테이블을 생성하겠습니다. 아래 쿼리로 ColumnDoesNotExists라는 이름의 테이블을 만듭니다.mysql> create table ColumnDoesNotExists-> (-> UserId int,-> UserNam
MySQL에서 데이터베이스가 비어 있는지 확인하는 방법데이터베이스 안에 테이블이 하나도 없는지, 즉 데이터베이스가 비어 있는지 확인해야 할 때가 있습니다. MySQL에서는 INFORMATION_SCHEMA.COLUMNS를 사용하면 간단하게 확인할 수 있습니다.기본 문법SELECT COUNT(DISTINCT `TABLE_NAME`) AS anyAliasName FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `table_schema` = yourDatabaseName;위 쿼리는 지정한 데이터베이스에 테이블이
MySQL에서 특정 필드(컬럼)의 값 길이가 5자 미만인 행을 조회하려면 LENGTH() 함수를 사용하면 됩니다. LENGTH() 함수는 문자열의 바이트 길이를 반환하며, WHERE 절과 함께 사용하면 원하는 조건의 데이터만 손쉽게 추출할 수 있습니다.기본 문법필드 값이 5자 미만인 행을 가져오는 기본 문법은 다음과 같습니다.SELECT * FROM yourTableNameWHERE LENGTH(yourColumnName) < 5;예제 테이블 생성실제 동작을 이해하기 위해 예제 테이블을 먼저 생성해 보겠습니다. 아래 쿼리로 우
MySQL에서 조회 결과의 마지막 행에 전체 합계를 표시하고 싶다면 UNION을 활용하면 됩니다. 원본 데이터를 조회하는 SELECT 문과 SUM() 함수로 집계한 SELECT 문을 UNION으로 연결하면, 결과 맨 아래에 합계 행이 자연스럽게 추가됩니다.기본 문법( SELECT 컬럼명1, 컬럼명2, 컬럼명3, ... FROM 테이블명 ) UNION ( SELECT 표시할메시지 AS 별칭1, SUM(컬럼명1) AS 별칭2, SUM(컬럼명2) AS 별칭3, ...
MySQL에서는 날짜(date) 열과 시간(time) 열이 분리되어 저장되어 있는 경우가 많습니다. 이럴 때 CONCAT() 함수를 사용하면 두 열의 값을 하나의 날짜시간(DateTime) 형태로 결합하여 특정 날짜시간 값과 비교할 수 있습니다.기본 문법 yourDateTimeValue;CONCAT() 함수로 날짜 열과 시간 열을 하나의 문자열로 연결한 뒤, WHERE 절에서 원하는 날짜시간 값과 비교하는 방식입니다.예제 테이블 생성먼저 실습에 사용할 테이블을 만들어 보겠습니다. 날짜를 저장하는 ArrivalDate 열과 시간을 저
MySQL에서 order는 테이블을 정렬하는 데 사용되는 예약어(키워드)입니다. 따라서 테이블 이름을 그냥 order로 지정하면 SQL 문법 오류가 발생합니다. 이 문제를 해결하려면 테이블 이름 앞뒤에 백틱(`)을 붙여야 합니다. 백틱으로 감싸면 MySQL이 해당 단어를 예약어가 아닌 일반적인 테이블 또는 컬럼 이름으로 인식하게 됩니다.기본 문법백틱을 사용해 order 테이블을 생성하는 기본 문법은 다음과 같습니다.CREATE TABLE `order` ( yourColumnName1 dataType, yourColum
네, 두 방법 모도 각도(degree) 값을 라디안(radian) 값으로 변환하는 기능을 수행합니다. 이 글에서는 예제 테이블을 만들어 MySQL의 RADIANS() 함수와 PHP의 deg2rad() 함수가 실제로 동일한 결과를 반환하는지 확인해 보겠습니다.1. 테스트용 테이블 생성먼저 MySQL에서 각도 값을 저장할 테이블을 생성합니다. 테이블 생성 쿼리는 다음과 같습니다.mysql> create table RadiansDemo -> (
MySQL에서 EXISTS로 테이블 비어 있음 확인하기MySQL에서 특정 테이블에 데이터가 존재하는지, 즉 테이블이 비어 있는지 확인하려면 EXISTS 연산자를 활용하면 됩니다. EXISTS는 서브쿼리의 결과 행이 하나라도 존재하면 1(참)을, 존재하지 않으면 0(거짓)을 반환하기 때문에 테이블의 데이터 존재 여부를 빠르고 간단하게 판단할 수 있습니다.기본 문법은 다음과 같습니다.SELECT EXISTS(SELECT 1 FROM yourTableName);여기서 SELECT 1은 실제 컬럼 값을 읽어오는 것이 아니라 행의 존재 여부
MySQL에서는 대소문자를 구분하는 고유성(Unique) 제약과 대소문자를 구분하지 않는 검색을 동시에 만족시켜야 하는 경우가 종종 있습니다. 예를 들어 John과 john은 서로 다른 사용자로 저장하되, 검색 시에는 같은 결과로 조회하고 싶은 상황입니다.이러한 요구사항은 다음 두 가지 방법으로 해결할 수 있습니다.VARBINARY 데이터 타입 사용_bin 콜레이션(Collation) 사용방법 1: VARBINARY 데이터 타입VARBINARY는 바이트 단위로 값을 비교하기 때문에 자동으로 대소문자를 구분하여 저장합니다. 먼저 테이
MySQL에서 NULL 값 처리하기: IS NULL과 IS NOT NULLMySQL에서 NULL 값을 조회하거나 필터링할 때는 두 가지 전용 연산자를 사용합니다.IS NULL — 값이 NULL인 행을 찾을 때 사용IS NOT NULL — 값이 NULL이 아닌 행을 찾을 때 사용NULL은 값이 없음 또는 알 수 없음을 의미하는 특수한 상태입니다. 따라서 일반적인 비교 연산자(=, !=)로는 NULL을 판별할 수 없으며, 반드시 위 연산자를 사용해야 합니다.개념을 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음
MySQL의 CROSS JOIN은 조인되는 두 테이블의 행들에 대한 카티션 곱(Cartesian Product)을 반환합니다. 즉, 첫 번째 테이블의 각 행이 두 번째 테이블의 모든 행과 한 번씩 결합된 결과를 만들어냅니다.이번 글에서는 실제 테이블을 생성하고 데이터를 삽입한 뒤, CROSS JOIN을 활용해 두 컬럼 값의 모든 조합 중 아직 존재하지 않는 조합만 추출하는 실전 예제를 살펴보겠습니다.1. 예제 테이블 생성하기먼저 사용자 이름과 관계자 이름을 저장할 테이블을 생성합니다. 다음 쿼리를 실행하세요.mysql> cre
MySQL에서 특정 저장 프로시저가 실제로 생성되어 있는지 확인해야 하는 경우가 자주 있습니다. 이 글에서는 예제 저장 프로시저를 직접 만들어 보고, SHOW CREATE PROCEDURE 명령과 information_schema를 활용해 존재 여부를 확인하는 방법을 단계별로 살펴보겠습니다.1. 테스트용 저장 프로시저 생성하기먼저 확인 작업에 사용할 간단한 저장 프로시저를 생성합니다. 아래 프로시저는 입력받은 날짜에 지정한 개월 수를 더한 결과를 반환합니다.mysql> DELIMITER //mysql> CREATE PRO
MySQL에서 테이블과 열 개수 정확히 세기MySQL 데이터베이스에 존재하는 테이블과 열(컬럼)의 정확한 개수를 확인하려면 COUNT() 함수 안에 DISTINCT를 함께 사용하면 됩니다. 이 방법은 중복 없이 실제 테이블 수를 집계하고, 전체 열의 개수도 동시에 구할 수 있어 매우 유용합니다.기본 원리MySQL은 INFORMATION_SCHEMA.COLUMNS라는 시스템 뷰를 통해 모든 데이터베이스의 테이블과 열 정보를 메타데이터 형태로 제공합니다. 이 뷰를 조회하면 별도의 관리 명령 없이 SQL 쿼리만으로 원하는 통계를 얻을 수
명령줄에서 MySQL 서버 업그레이드하기MySQL 서버를 안정적으로 운영하려면 주기적인 업그레이드가 필요합니다. 이 글에서는 Windows 환경의 명령 프롬프트(CMD)를 사용해 MySQL 서버를 업그레이드하는 전체 과정을 단계별로 살펴봅니다.1단계: 명령 프롬프트 실행먼저 Windows + R 단축키를 눌러 실행 창을 엽니다. cmd를 입력한 후 확인 버튼을 클릭하면 명령 프롬프트가 실행됩니다.2단계: MySQL 설치 경로 확인업그레이드 작업을 진행하기 전에 MySQL이 설치된 데이터 디렉터리 경로를 먼저 확인하는 것이 좋습니다.
네, MySQL에서는 한 테이블에 열을 추가하면서 다른 테이블의 데이터를 참조할 수 있습니다. 이 글에서는 ALTER TABLE로 새 열을 추가한 뒤, UPDATE ... INNER JOIN 구문을 사용해 다른 테이블의 값을 그대로 가져오는 방법을 단계별로 살펴보겠습니다.1. 예제용 테이블 두 개 만들기먼저 실습에 사용할 테이블 두 개를 생성합니다. 첫 번째 테이블은 사용자 ID와 이름을, 두 번째 테이블은 사용자 ID와 나이를 저장합니다.첫 번째 테이블(FirstTable) 생성mysql> create table FirstT