MySQL에서 두 개의 열에 걸쳐 중복되지 않는(DISTINCT) 값을 선택하려면 least()와 greatest() 함수를 함께 사용하면 됩니다. 이 방법은 두 열의 값을 서로 비교하여 작은 값과 큰 값을 각각 정렬한 뒤, 그 결과를 기준으로 고유한 조합만 추출하는 방식입니다.1. 테스트용 테이블 생성하기먼저 두 개의 열을 가진 테이블을 생성해 보겠습니다.mysql> create table SelectDistinctTwoColumns -> ( &
INT(7)란 무엇인가?MySQL에서 INT(7)처럼 괄호 안에 숫자를 지정하면 이는 표시 너비(display width)를 의미합니다. 중요한 점은 이 숫자가 실제 저장 용량에는 아무런 영향을 주지 않는다는 것입니다. MySQL의 INT 타입은 항상 4바이트를 차지하며, 저장 가능한 값의 범위도 -2147483648부터 2147483647까지로 동일합니다.즉, INT(7)과 INT(11)은 저장 구조나 값의 범위 면에서 완전히 같습니다. 다만 괄호 안의 숫자는 주로 ZEROFILL 옵션과 함께 사용될 때 의미를 가집니다.ZEROF
MySQL에서 DATETIME 형식의 값에 하루를 더하고 싶다면 DATE_ADD() 함수를 사용하면 됩니다. 이 함수는 날짜 및 시간 값에 원하는 간격(interval)을 더하거나 뺄 때 가장 널리 쓰이는 방법입니다.DATE_ADD() 기본 문법select date_add(now(), interval 1 day) as anyVariableName;위 문법을 실제로 실행하여 DATETIME 값에 하루를 추가해 보겠습니다.현재 시간에 하루 더하기 – now() 함수 활용mysql> select date_add(now(), inte
MySQL에서 생년월일(Date of Birth) 데이터를 기반으로 현재 나이를 계산해야 하는 경우가 자주 있습니다. 이때 YEAR() 함수와 RIGHT() 함수를 조합하면 간단하게 나이를 구할 수 있습니다. 기본적인 문법은 다음과 같습니다.SELECT YEAR(CURRENT_TIMESTAMP) - YEAR(yourColumnName) - (RIGHT(CURRENT_TIMESTAMP, 5) < RIGHT(yourColumnName, 5)) as anyVariableName from yourTableName;이 쿼리의 핵심 원
MySQL 테이블 생성 날짜 확인하기MySQL에서 특정 테이블이 언제 생성되었는지 확인하고 싶다면, information_schema.tables 뷰의 create_time 컬럼을 조회하면 됩니다. 이 방법은 별도의 도구 없이 SQL 쿼리 한 줄로 테이블의 생성 시각을 정확하게 알아낼 수 있습니다.기본 문법테이블 생성 날짜를 조회하는 기본적인 쿼리 문법은 다음과 같습니다.SELECT create_timeFROM INFORMATION_SCHEMA.TABLESWHERE table_schema = 데이터베이스명AND table_name
MySQL에서 누적 합계(cumulative sum) 열을 만들려면 먼저 사용자 정의 변수를 생성하고 0으로 초기화해야 합니다. 누적 합계란 이전 행까지의 값을 차례대로 더해 나가면서 각 행마다 합계를 기록하는 방식입니다.1단계: 변수 초기화먼저 SET 명령어를 사용해 변수를 선언하고 0으로 초기화합니다. 기본 문법은 다음과 같습니다.set @anyVariableName := 0;2단계: 누적 합계 쿼리 작성누적 합계 열을 만드는 기본 문법은 다음과 같습니다.select yourColumnName1, yourColumnName2,
MySQL에서 테이블 컬럼의 기본값을 변경하려면 ALTER TABLE 문과 함께 CHANGE 명령어를 사용할 수 있습니다. 기본 문법은 다음과 같습니다.ALTER TABLE 테이블명 CHANGE 컬럼명 컬럼명 데이터타입 NOT NULL DEFAULT 기본값;예제 테이블 생성하기위 문법을 실제로 이해하기 위해 먼저 예제 테이블을 생성해 보겠습니다. 아래 쿼리를 실행합니다.mysql> create table DefaultDemo -> ( -> ArrivalTime timestamp -> ); Que
MySQL에서 ALTER TABLE 명령어를 사용하면 한 번의 실행으로 두 개 이상의 열 데이터 타입을 동시에 변경할 수 있습니다. 이때 MODIFY COLUMN 절을 활용하며, 기본 문법은 다음과 같습니다.ALTER TABLE 테이블명MODIFY COLUMN 컬럼명1 데이터타입,MODIFY COLUMN 컬럼명2 데이터타입,...MODIFY COLUMN 컬럼명N 데이터타입;예제 테이블 생성문법을 실제로 이해하기 위해 먼저 예제 테이블을 만들어 보겠습니다. 다음 쿼리를 실행합니다.mysql> CREATE TABLE AddColu
MySQL에서 테이블의 열(Column) 순서를 변경하고 싶다면 ALTER TABLE 문과 FIRST, AFTER 키워드를 활용하면 됩니다. 이 글에서는 열 순서를 확인하는 방법부터 실제 재정렬 과정까지 단계별로 살펴보겠습니다. 1단계: 현재 열 배치 확인하기 열을 재정렬하기 전에 먼저 SHOW CREATE TABLE 명령어로 해당 테이블의 현재 구조를 확인하는 것이 좋습니다. 기본 문법은 다음과 같습니다. show create table yourTableName; 2단계: 열 재정렬 기본 문법 특정 열을 테이블의 맨 앞으로 이
MySQL에서 열의 마지막 두 문자 제거하기MySQL에서 열에 저장된 값의 마지막 두 문자를 제거하려면 SUBSTRING() 함수와 CHAR_LENGTH() 함수를 함께 사용하면 됩니다. CHAR_LENGTH()로 문자열의 전체 길이를 구한 뒤, SUBSTRING()으로 처음부터 전체 길이 - 2번째 문자까지만 잘라내는 방식입니다.기본 문법은 다음과 같습니다.SELECT yourColumnName,SUBSTRING(yourColumnName, 1, CHAR_LENGTH(yourColumnName) - 2) AS anyVariable
MySQL 계산식에서 별칭(Alias) 활용하기MySQL에서는 별칭(alias)을 사용하면 복잡한 계산식의 결과에 의미 있는 이름을 붙일 수 있어 쿼리의 가독성이 크게 향상됩니다. 특히 SELECT 절에서 상수나 연산 결과에 별칭을 지정한 뒤, 이를 서브쿼리 형태로 다시 참조하면 하나의 쿼리 안에서 값을 재사용할 수 있습니다. 이 글에서는 예제 테이블을 만들고, 계산 과정에서 별칭을 정의하고 활용하는 방법을 단계별로 살펴보겠습니다.1단계: 테이블 생성먼저 예제로 사용할 테이블을 생성합니다. 테이블 생성 쿼리는 다음과 같습니다.mys
가격 컬럼에는 DECIMAL 타입이 가장 적합합니다MySQL에서 가격과 같은 금액 데이터를 저장할 때 가장 적합한 데이터 타입은 DECIMAL입니다. DECIMAL은 부동소수점 방식(FLOAT, DOUBLE)과 달리 값을 정확하게 그대로 저장하기 때문에, 금전 계산에서 발생할 수 있는 오차를 원천적으로 방지할 수 있습니다.DECIMAL(10,2)의 의미예를 들어 DECIMAL(10,2)는 가격 값을 저장하는 데 널리 사용되는 형식입니다. 여기서 첫 번째 숫자인 10은 소수점을 포함한 전체 자릿수를, 두 번째 숫자인 2는 소수점 이하
MySQL에서 외래 키 제약 조건 목록 조회하기데이터베이스를 운영하다 보면 특정 스키마에 어떤 외래 키(Foreign Key) 제약 조건이 설정되어 있는지 확인해야 할 때가 있습니다. 예를 들어 여러 개의 테이블을 가진 business라는 데이터베이스가 있다고 가정해 보겠습니다. 이 데이터베이스에 정의된 외래 키 제약 조건만 골라서 확인하려면 MySQL의 information_schema.referential_constraints 테이블을 조회하면 됩니다.외래 키 제약 조건 조회 쿼리아래 쿼리는 constraint_schema 조건
MySQL에서 날짜 데이터를 월(month)과 연도(year) 단위로 그룹화하려면 DATE_FORMAT() 함수와 GROUP BY 절을 함께 사용하면 됩니다. 이 조합은 매출 집계, 통계 리포트 등 날짜별 데이터를 정리할 때 매우 유용하게 활용됩니다.기본 문법월과 연도를 그룹화하는 기본적인 쿼리 구조는 다음과 같습니다.SELECT DATE_FORMAT(yourColumnName, %m-%Y) FROM yourTableNameGROUP BY MONTH(yourColumnName), YEAR(yourColumnName) DESC;DAT
MySQL 안전 모드란? MySQL에는 실수로 인한 대량 데이터 변경·삭제를 방지해 주는 안전 업데이트 모드(SQL Safe Updates) 기능이 있습니다. 이 모드가 활성화되어 있으면 WHERE 절에 키(Key) 컬럼 조건이나 LIMIT이 없는 UPDATE, DELETE 문은 실행되지 않습니다. 따라서 안전 모드 상태에서 일괄 삭제 작업을 수행하려면 먼저 SQL_SAFE_UPDATES 변수를 0으로 설정해야 합니다. 사용하는 쿼리는 다음과 같습니다. SET SQL_SAFE_UPDATES = 0; 예제 테이블 생성 위 쿼리의 동작
MySQL의 LIKE 연산자는 기본적으로 대소문자를 구분하지 않습니다. 하지만 LIKE BINARY를 사용하면 대소문자를 엄격하게 구분하도록 강제할 수 있습니다.LIKE BINARY 기본 문법다음은 LIKE BINARY를 사용하여 MySQL LIKE를 대소문자 구분 방식으로 동작하게 만드는 기본 문법입니다.SELECT yourColumnName LIKE BINARY anyStringValue FROM yourTableName;예제 테이블 생성하기개념을 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 아래는 테이블을 만드는 쿼리입니다
MySQL에서 테이블에 저장된 데이터의 고유한(중복되지 않은) 값이 몇 개인지 확인하고 싶다면, 집계 함수인 COUNT() 안에 DISTINCT 키워드를 함께 사용하면 됩니다.기본 문법SELECT COUNT(DISTINCT yourColumnName) AS anyVariableName FROM yourTableName;위 문법에서 yourColumnName에는 중복 여부를 검사할 열 이름을, yourTableName에는 대상 테이블 이름을 입력합니다. 결과는 별칭(AS)으로 지정한 이름의 열로 출력됩니다.예제 테이블 생성하기개념을
MySQL에서 두 개의 필드로 그룹화 후 개수 계산하기데이터베이스 작업을 하다 보면 두 개 이상의 컬럼을 기준으로 데이터를 그룹화하고, 각 그룹별 건수를 집계해야 하는 경우가 자주 발생합니다. 이 글에서는 MySQL에서 두 개의 필드에 GROUP BY를 적용하고 COUNT 함수로 개수를 구하는 방법을 예제와 함께 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 실습에 사용할 테이블을 생성합니다. 아래 쿼리는 Id와 Name 두 개의 컬럼을 가진 테이블을 만듭니다.mysql> create table GroupByTwoField
MySQL에서 1주일보다 오래된 레코드 조회하기데이터베이스 작업을 하다 보면 특정 기간보다 오래된 데이터만 추출해야 하는 경우가 자주 발생합니다. 예를 들어 일주일 이전에 저장된 로그를 정리하거나 오래된 게시글을 관리할 때 유용합니다. MySQL에서는 now() - interval 1 week 구문을 활용하면 간단하게 처리할 수 있습니다.기본 문법날짜가 1주일보다 오래된 레코드를 조회하려면 다음과 같은 문법을 사용합니다.select * from yourTableName where yourColumnName < now() - i
MySQL에서 다른 테이블과 동일한 테이블 생성하기MySQL에서 기존 테이블과 동일한 구조를 가진 새 테이블을 만들려면 CREATE TABLE 명령어와 LIKE 연산자를 함께 사용하면 됩니다. 기본 문법은 다음과 같습니다.create table yourNewTableName like yourOldTableName;위 문법은 원본 테이블의 구조(컬럼 정의, 인덱스 등)만 복제합니다. 데이터까지 함께 복사하고 싶다면 INSERT INTO ... SELECT 명령어를 추가로 사용해야 합니다.insert into yourNewTableNa