날짜(date) 값과 마찬가지로 MySQL은 시간(time) 값에 대해서도 유연한(완화된) 형식을 허용합니다. 즉, 시간의 각 구성 요소(시, 분, 초) 사이에 표준 콜론(:)뿐만 아니라 어떠한 구두점 문자든 구분 기호(delimiter)로 사용할 수 있습니다.구두점 문자를 구분 기호로 활용하는 예제아래 예제들은 TIMESTAMP() 함수를 사용하여 다양한 구두점 문자가 실제로 구분 기호로 인식되는 것을 보여줍니다.1. 더하기 기호(+) 사용mysql> Select timestamp(2017-10-20 04+05+36); +-
MySQL TIMESTAMP에서 공백 대신 T 문자 사용하기MySQL에서 TIMESTAMP 값을 표현할 때, 날짜 부분과 시간 부분 사이의 공백 대신 대문자 T 문자 하나만 사용할 수 있습니다. 이는 ISO 8601 날짜·시간 형식과 호환되는 표기법으로, MySQL이 이를 정상적으로 인식하여 처리해 줍니다.다음 예제를 통해 쉽게 확인할 수 있습니다.mysql> Select TIMESTAMP(2017-10-20T06:10:36); +----------------------------------+ | TIMESTAMP(2017-1
날짜와 시간 구분자로 다른 문자를 사용한 경우의 MySQL 동작MySQL에서 TIMESTAMP() 함수를 사용할 때, 날짜 부분과 시간 부분 사이에는 일반적으로 T 또는 공백( )이 구분자로 사용됩니다. 그런데 만약 이 자리에 T나 공백이 아닌 다른 문자를 사용하면 어떻게 될까요?이 경우 MySQL은 날짜 부분은 정확하게 인식하여 반환하지만, 시간 부분은 모두 0으로 채워서 반환합니다. 즉, 시간 정보는 무시되고 00:00:00이 반환됩니다.예제아래 예제에서는 날짜와 시간 사이에 T 또는 공백 대신 문자 W를 사용했습니다.mysql
MySQL에서 DUAL 테이블 없이 SELECT로 값 출력하기Oracle 같은 데이터베이스에서는 산술 연산이나 단순 값을 조회할 때 반드시 DUAL이라는 더미(dummy) 테이블을 지정해야 합니다. 하지만 MySQL은 FROM 절 자체가 필요 없습니다. 즉, SELECT 뒤에 원하는 식이나 값을 그대로 작성하기만 하면 별도의 테이블 참조 없이 결과를 얻을 수 있습니다.아래 예제를 통해 확인해 보겠습니다.mysql> Select 1+1;+-----+| 1+1 |+-----+| 2 |+-----+1 row in set (0.0
MySQL에서는 INSERT INTO 명령에 WHERE 절을 결합하여 조건부 삽입(Conditional Insert)을 수행할 수 있습니다. 이 기법은 새로운 행을 삽입할 때 특정 조건이 참인 경우에만 데이터가 저장되도록 제어하고 싶을 때 유용합니다. 주로 다음 두 가지 방식으로 활용할 수 있습니다.1. 더미 테이블(DUAL)을 활용한 조건부 삽입첫 번째 방법은 MySQL의 내장 더미 테이블인 dual을 사용하는 것입니다. 직접 값을 지정하면서 동시에 WHERE 절로 조건을 걸어, 조건이 참일 때만 해당 값이 테이블에 삽입되도록 할
MySQL에서는 행에 데이터를 삽입할 때 단순한 고정값뿐만 아니라, 표현식이나 함수 등을 통해 자체적으로 계산된 결과값도 그대로 사용할 수 있습니다. 이 기능을 활용하면 별도의 사전 계산 없이 INSERT 문 안에서 직접 연산을 수행하고 그 결과를 저장할 수 있어 매우 편리합니다.기본 사용 예시아래 예제는 INSERT INTO ... SELECT 구문과 함께 산술 표현식(1+1)과 문자열 함수(CONCAT_WS())의 계산 결과를 employee 테이블에 삽입하는 과정을 보여줍니다.mysql> Insert into employ
CTAS(Create Table As Select)는 기존 테이블을 기반으로 새로운 테이블을 생성하는 MySQL의 강력한 SQL 구문입니다. 이 구문을 사용하면 원본 테이블의 구조(스키마)와 데이터를 한 번에 복사할 수 있어, 백업 테이블 생성이나 데이터 복제 작업에 매우 유용합니다. CTAS 기본 문법 CREATE TABLE 새_테이블명 AS SELECT * FROM 기존_테이블명; 예제로 살펴보기 다음 예제에서는 이미 존재하는 Employee 테이블로부터 EMP_BACKUP이라는 이름의 테이블을 생성해 보겠습니다. 먼저 원본
MySQL INTERVAL 키워드와 EXTRACT() 함수 함께 사용하기MySQL에서는 INTERVAL 키워드를 EXTRACT() 함수와 함께 사용하면 날짜나 시간 값에 간격을 더한 후, 그 결과에서 원하는 부분(연도, 월, 일 등)을 손쉽게 추출할 수 있습니다.아래 예제를 통해 INTERVAL 키워드가 실제로 어떻게 활용되는지 살펴보겠습니다.1. 테이블 컬럼에 INTERVAL 적용하기mysql> Select StudentName, RegDate, EXTRACT(YEAR from RegDate+INTERVAL 2 year) A
MySQL DATEDIFF() 함수란?MySQL의 DATEDIFF() 함수는 두 날짜 사이의 일수 차이를 계산하여 반환하는 함수입니다. 데이터베이스에서 기간을 계산해야 하는 다양한 상황에서 유용하게 활용됩니다.기본 문법DATEDIFF(date1, date2)이 함수는 date1에서 date2를 뺀 값, 즉 두 날짜 사이의 일수를 반환합니다. 결과가 양수이면 date1이 더 늦은 날짜이고, 음수이면 date2가 더 늦은 날짜라는 의미입니다.사용 예시예를 들어, 2017-10-22와 2017-09-21 두 날짜 사이의 일수를 알고 싶다
CTAS와 WHERE 조건절CTAS(Create Table As Select) 스크립트를 사용하면 기존 테이블의 데이터와 구조를 그대로 복사하여 새 테이블을 만들 수 있습니다. 여기에 WHERE 절을 함께 사용하면 특정 조건에 맞는 행만 선택적으로 복사할 수 있습니다.WHERE 절 사용 예제mysql> Create table EMP_BACKUP2 AS SELECT * from EMPLOYEE WHERE id = 300 AND Name = 'Mohan'; Query OK, 1 row affected (0.14 se
MySQL DATEDIFF() 함수의 음수 값 문제MySQL의 DATEDIFF() 함수는 두 날짜 사이의 일수 차이를 계산하는 데 사용됩니다. 이 함수는 첫 번째 날짜에서 두 번째 날짜를 뺀 값을 반환하기 때문에, 인자의 순서에 따라 음수 값이 반환될 수 있습니다.예를 들어 다음과 같은 differ 테이블이 있다고 가정해 보겠습니다.mysql> select * from differ;+------------+-------------+| OrderDate | WorkingDate |+------------+------------
프롬프트에서 직접 실행할 수 있을 뿐만 아니라, PHP와 같은 스크립트 언어 내에서도 활용할 수 있습니다. SELECT 문의 기본 문법 MySQL 테이블에서 데이터를 조회할 때 사용하는 SELECT 명령어의 일반적인 문법은 다음과 같습니다. SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE 절] [OFFSET M ][LIMIT N] SELECT 문의 주요 특징 쉼표(,)로 구분하여 하나 이상의 테이블을 지정할 수 있으며, WHERE 절을 통해 다양한 조
날짜 값을 인수로 받아 두 날짜 사이의 년, 월, 일 차이를 반환하는 사용자 정의 함수를 직접 만들 수 있습니다. 아래 예제는 MySQL에서 TIMESTAMPDIFF 함수와 사용자 변수를 조합하여 이를 구현하는 방법을 보여줍니다.mysql> CREATE FUNCTION date_difference(Date1 DATE, date2 DATE) RETURNS VARCHAR(30) -> RETURN CONCAT( -> @years := T
MySQL에서 기존 테이블과 동일한 구조를 가진 새 테이블을 만들고, 여기에 데이터뿐만 아니라 트리거와 인덱스까지 함께 복제하려면 다음 두 개의 쿼리를 실행하면 됩니다.CREATE TABLE new_table LIKE old_table;INSERT new_table SELECT * from old_table;첫 번째 쿼리는 원본 테이블의 구조(컬럼 정의, 인덱스, 트리거 등)를 그대로 복사하여 새 테이블을 생성하고, 두 번째 쿼리는 원본 테이블의 모든 데이터를 새 테이블로 삽입합니다.실전 예제1단계: 원본 테이블 생성 및 데이터 입
MySQL에서 기존 테이블과 똑같은 구조를 가진 새 테이블을 만들고 싶다면 CREATE TABLE 명령어에 LIKE 키워드를 함께 사용하면 됩니다. 이 방법을 사용하면 컬럼 정의를 일일이 복사하지 않아도 원본 테이블의 구조(컬럼명, 데이터 타입, 키, auto_increment 설정 등)를 그대로 복제할 수 있습니다.기본 문법CREATE TABLE new_table LIKE old_table;위 문법에서 new_table은 새로 생성할 테이블 이름, old_table은 구조를 복사할 원본 테이블 이름입니다.예제먼저 예제로 사용할 e
MySQL DATETIME을 초 단위로 변환하는 방법MySQL에서 DATETIME 타입의 값을 총 초 단위로 변환해야 하는 경우가 종종 있습니다. 예를 들어, 시간 차이를 계산하거나 날짜 데이터를 정수 형태로 저장·비교할 때 유용합니다. 이럴 때 UNIX_TIMESTAMP() 함수를 사용하면 간단하게 해결할 수 있습니다.UNIX_TIMESTAMP() 함수는 주어진 DATETIME 값을 1970년 1월 1일 00:00:00 UTC(유닉스 에포크)부터 경과한 시간을 초 단위의 정수로 반환합니다.1. 특정 DATETIME 값을 초로 변환
MySQL에서 테이블의 특정 열에 주석(Comment)을 추가하려면 ALTER TABLE 명령과 함께 COMMENT 키워드를 사용하면 됩니다. 열의 정의를 수정(MODIFY)하는 과정에서 주석을 함께 지정할 수 있어, 별도의 도구 없이 SQL 쿼리만으로 컬럼 설명을 관리할 수 있습니다.ALTER TABLE로 열에 주석 추가하기예를 들어, testing 테이블의 id 열에 직원 ID라는 의미의 주석을 추가하고 싶다면 다음과 같은 쿼리를 실행합니다.mysql> ALTER TABLE testing MODIFY id INT COMME
MySQL에서 특정 날짜가 속한 분기를 확인하려면 EXTRACT() 함수에 단위 값으로 quarter를 지정하면 됩니다. 이 함수는 날짜에서 원하는 부분(연, 월, 일, 분기 등)을 추출해 반환합니다.1. 특정 날짜의 분기 구하기아래 예시는 주어진 날짜 2017-07-29가 몇 번째 분기에 해당하는지 확인하는 쿼리입니다.mysql> Select EXTRACT(Quarter from 2017-07-29); +------------------------------------+ | EXTRACT(Quarter from 2017-07
MySQL EXTRACT() 함수에 날짜 값만 제공하면 어떻게 될까? MySQL의 EXTRACT() 함수는 날짜·시간 값에서 연도, 월, 일, 시, 분, 초 등 원하는 단위를 추출하는 데 사용됩니다. 그렇다면 시간 정보가 전혀 없는 순수한 날짜 값(예: 2017-10-20)에 대해 시간 단위인 HOUR, MINUTE, SECOND를 추출하면 어떤 결과가 나올까요? 결론부터 말씀드리면, MySQL은 에러를 반환하지 않습니다. 대신 경고(Warning)와 함께 예상과 다른 값을 돌려줍니다. 아래 예제를 통해 하나씩 확인해 보겠습니다.
MySQL EXTRACT() 함수의 복합 단위란?MySQL의 EXTRACT() 함수는 날짜 및 시간 값에서 특정 부분을 추출하는 데 사용됩니다. 이 함수는 단일 단위뿐만 아니라 다음과 같은 복합 단위(compound units)도 지원합니다.SECOND_MICROSECONDMINUTE_MICROSECONDHOUR_MICROSECONDDAY_MICROSECONDMINUTE_SECONDHOUR_SECONDHOUR_MINUTEDAY_SECONDDAY_MINUTEDAY_HOURYEAR_MONTH복합 단위 사용 예제EXTRACT() 함수에서