MySQL에서 특정 행의 값을 해당 열의 기본값으로 되돌려야 하는 경우가 종종 있습니다. 이럴 때 UPDATE 문과 함께 DEFAULT 키워드를 사용하면 아주 간단하게 처리할 수 있습니다. 이 글에서는 실제 예제를 통해 그 방법을 단계별로 자세히 살펴보겠습니다. 1. 데모 테이블 생성하기 먼저 연습용 데모 테이블을 생성합니다. mysql> create table defaultDemo -> ( -> Id int -> ); Query OK, 0 rows affected (0.48 sec) 2.
오류 발생 원인MySQL에서 ERROR 1136 (21S01): Column count doesnt match value count at row 1 오류는 테이블에 레코드를 삽입할 때 INSERT 문의 값 개수가 테이블의 열(컬럼) 개수와 일치하지 않을 경우 발생합니다. 이 오류는 특히 AUTO_INCREMENT 컬럼이 있는 테이블에 값을 잘못 지정했을 때 자주 나타납니다.오류 재현 예제먼저 데모용 테이블을 생성해 보겠습니다.mysql> create table errorDemo -> ( -> User_Id
MySQL 데이터베이스에서 문자열을 찾아 다른 값으로 교체하려면 replace() 함수를 사용하면 됩니다. 이 함수는 지정한 조건에 해당하는 행의 특정 문자열만 안전하게 치환해 주기 때문에, 대량의 데이터를 수정할 때 특히 유용합니다.기본 문법UPDATE 문과 함께 replace() 함수를 사용하는 기본 문법은 다음과 같습니다.UPDATE yourTableName SET yourColumnName = replace(yourColumnName, yourExistingValue, yourNewValue) WHERE <yourCon
두 개 이상의 값을 비교하거나 고정된 개수의 조건에 따라 다른 결과를 출력해야 할 때는 MySQL의 CASE 문을 사용하는 것이 가장 효과적입니다. CASE 문은 조건을 평가한 뒤 해당 조건이 참일 때 지정한 값을 반환하므로, 쿼리 결과를 훨씬 직관적이고 가독성 좋게 만들어 줍니다.MySQL CASE 문 기본 문법CASE 문의 기본적인 사용 형식은 다음과 같습니다.SELECT *, CASE WHEN 컬럼명1 > 컬럼명2 THEN 메시지1 ELSE 메시지2 END AS 별칭
MySQL에서 정렬 순서대로 열에 순번(INT) 값을 업데이트하기MySQL에서는 사용자 변수(user variable)를 활용하면 특정 열을 기준으로 정렬한 순서대로 다른 열에 1, 2, 3처럼 증가하는 INT 값을 채워 넣을 수 있습니다. 예를 들어, 주문 금액(OrderAmount)이 비어 있는 테이블에 국가명 순서대로 순번을 자동으로 부여하고 싶을 때 유용합니다.기본 문법먼저 변수를 0으로 초기화한 뒤, UPDATE 문에서 변수를 1씩 증가시키며 열에 대입합니다. ORDER BY 절로 정렬 기준을 지정하면 해당 순서대로 번호가
MySQL에서 특정 테이블의 어제(전날) 데이터만 조회해야 하는 경우가 자주 있습니다. 예를 들어 일일 리포트를 생성하거나, 하루 동안 쌓인 로그를 확인할 때 유용하게 사용됩니다. 이 글에서는 NOW() 함수와 INTERVAL을 활용해 전날의 모든 레코드를 손쉽게 가져오는 방법을 단계별로 알아보겠습니다.기본 문법전날의 레코드를 조회하려면 아래와 같은 문법을 사용합니다. 핵심은 컬럼에 DATE() 함수를 적용해 날짜 부분만 추출한 뒤, 현재 시각에서 하루를 뺀 날짜와 비교하는 것입니다.select *from yourTableName
MySQL에서 날짜(DATE) 타입 컬럼을 비교할 때 연도는 제외하고 월과 일만 비교해야 하는 경우가 종종 있습니다. 예를 들어 생일이 몇 월 며칠인지 확인하거나 매년 반복되는 기념일을 조회하는 상황이 대표적입니다. 이럴 때 DATE_FORMAT() 함수를 사용하면 간단하게 해결할 수 있습니다.DATE_FORMAT()을 이용한 월·일 비교 문법기본적인 문법은 다음과 같습니다. 날짜 값을 %m-%d 형식(월-일)으로 변환한 뒤 서로 비교합니다.SELECT * FROM yourTableName WHERE DATE_FORMAT(yourC
MySQL에서 INSERT 문에는 WHERE 절을 직접 사용할 수 없습니다. 이미 저장된 데이터를 특정 조건에 따라 수정하려면 UPDATE 문을 사용해야 합니다.UPDATE 문 기본 문법WHERE 절과 함께 데이터를 수정하는 기본 문법은 다음과 같습니다.update yourTableName set yourColumnName1=yourValue1, yourColumnName2=yourValue2, ....N where yourCondition;예제 테이블 생성먼저 실습에 사용할 테이블을 생성하겠습니다.mysql> create t
MySQL에서 특정 컬럼(필드)의 값 중 공백 이후에 오는 모든 문자열을 제거하고 싶다면 SUBSTRING_INDEX() 함수를 사용하면 됩니다. 이 함수는 구분자를 기준으로 문자열을 잘라내어 원하는 부분만 손쉽게 추출할 수 있게 해줍니다.SUBSTRING_INDEX() 기본 문법SELECT SUBSTRING_INDEX(yourColumnName, , 1) AS anyAliasName FROM yourTableName;위 문법에서 세 번째 인자인 1은 공백을 기준으로 첫 번째 부분까지만 반환하라는 의미입니다. 즉, 공백 뒤의 모든
SQL Server의 DATEADD() 함수와 달리, MySQL에서는 DATE_ADD() 함수를 사용해야 합니다. 두 함수는 이름이 비슷하지만 문법이 다르므로 주의가 필요합니다.DATE_ADD() 기본 문법MySQL에서 특정 시간 간격을 더하는 기본 문법은 다음과 같습니다.DATE_ADD(NOW(), INTERVAL yourValue MINUTE);산술 연산자로 대체하기함수를 사용하지 않고 산술 연산자(+)를 활용할 수도 있습니다. 결과는 동일합니다.NOW() + INTERVAL 30 MINUTEDATE_ADD() 함수 실습 예제현
UNION ALL로 여러 테이블의 레코드 수 합산하기MySQL에서 두 개 이상의 테이블에 저장된 전체 레코드 수를 한 번의 쿼리로 구하고 싶다면 UNION ALL을 활용하면 됩니다. 각 테이블에서 count(*)를 조회한 뒤, 서브쿼리 결과를 sum()으로 묶어 합산하는 방식입니다.기본 문법select sum(variableName.aliasName) from ( select count(*) as yourAliasName from yourTableName1 UNION ALL select count(*)
MySQL DATETIME 필드 날짜 업데이트 개요MySQL에서 DATETIME 필드의 날짜 부분만 수정하고 싶다면, 산술 연산자인 빼기(-)와 INTERVAL 키워드를 함께 사용하면 됩니다. 이 방법을 활용하면 특정 조건에 맞는 레코드의 날짜를 원하는 일수만큼 앞당기거나 미룰 수 있습니다.기본 문법UPDATE yourTableNameSET yourDateTimeColumnName = yourDateTimeColumnName - INTERVAL yourValue DAYWHERE DATE(yourDateTimeColumnName) =
MySQL에서 저장 프로시저나 함수를 작성할 때 구분 기호(Delimiter)는 매우 중요한 역할을 합니다. 기본 구분 기호는 세미콜론(;)이지만, 상황에 따라 이를 다른 문자로 변경해야 할 필요가 있습니다. 이 글에서는 현재 설정된 구분 기호를 확인하는 방법과 이를 변경하는 방법을 단계별로 알아보겠습니다.1. 현재 구분 기호 확인하기MySQL에서 현재 구분 기호를 포함한 서버 상태 정보를 확인하려면 \s 명령어(또는 status)를 사용합니다.mysql> \s위 명령어를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
MySQL에서는 SET 명령어를 사용하여 세션 내에서만 유효한 임시(사용자 정의) 변수에 값을 손쉽게 할당할 수 있습니다. 이 기능은 특정 조건에 맞는 값을 여러 쿼리에서 재사용하거나, 복잡한 로직을 단계별로 처리할 때 매우 유용합니다.임시 변수 할당 기본 문법SET 명령어와 서브쿼리를 함께 사용하는 기본 문법은 다음과 같습니다.SET @변수이름 = (SELECT 컬럼명 FROM 테이블명 WHERE 조건);예제용 테이블 생성하기문법을 실제로 이해하기 위해 먼저 예제 테이블을 생성해 보겠습니다.mysql> create table
오류 발생 원인MySQL에 접속할 때 ERROR 1045 (28000): Access denied for user root@localhost (using password: YES)라는 오류가 발생하는 가장 흔한 이유는 명령어 실행 시 비밀번호 입력 옵션(-p)을 지정하지 않았거나, 잘못된 비밀번호를 입력했기 때문입니다. 특히 -p 옵션 없이 사용자 이름만으로 접속을 시도하면 서버가 인증에 실패하여 액세스가 거부됩니다.해결 방법이 오류를 해결하려면 MySQL 접속 명령어에 반드시 -p 옵션을 추가해야 합니다. 기본 문법은 다음과 같습
1단계: MySQL에 테이블 생성하기먼저 데이터베이스에 테이블을 하나 생성하겠습니다. 아래는 customerDetails 테이블을 만드는 CREATE TABLE 쿼리입니다.mysql> create table customerDetails-> (-> CustomerId int,-> CustomerName varchar(30)-> );Query OK, 0 rows affected (0.56 sec)테이블이 정상적으로 생성되었습니다. 이제 데이터베이스의 전체 테이블 목록을 조회하여 customerDetails 테
Java JDBC에서 MySQL COUNT 쿼리의 반환 타입MySQL에서 COUNT 함수의 반환 타입은 long입니다. 따라서 Java에서 결과값을 받을 때는 ResultSet의 getLong() 메서드를 사용해야 합니다.rs.next();long result = rs.getLong(anyAliasName);이제 실제 예제를 통해 확인해 보겠습니다. 먼저 샘플 데이터베이스 test3에 테이블을 생성하고 데이터를 삽입한 뒤, Java 코드로 COUNT 쿼리의 반환값을 조회하는 과정을 단계별로 살펴봅니다.1단계: 테이블 생성다음 쿼리로
빈 테이블에서 MAX() 함수의 NULL 결과를 피하는 방법MySQL에서 테이블이 비어 있거나 컬럼 값이 모두 NULL일 때 MAX() 같은 집계 함수를 사용하면 결과로 NULL이 반환됩니다. 이러한 NULL 결과를 원하지 않는 값(예: 0)으로 대체하려면 COALESCE() 함수를 집계 함수와 함께 사용하면 됩니다.COALESCE()는 인자로 전달된 값들 중 첫 번째로 NULL이 아닌 값을 반환하는 함수입니다. 따라서 MAX()의 결과가 NULL이면 그 다음 인자인 기본값이 대신 반환됩니다.기본 문법SELECT COALESCE(M
MySQL의 concat() 함수는 여러 문자열을 하나로 연결하는 데 사용되며, lower() 함수는 문자열의 대문자를 모두 소문자로 변환하는 역할을 합니다. 이 두 함수를 함께 사용하면 여러 컬럼의 값을 하나로 합치면서 동시에 소문자로 정규화할 수 있어 데이터 처리에 매우 유용합니다.예제용 테이블 생성하기먼저 실습을 위해 테이블을 생성하겠습니다. 테이블 생성 쿼리는 다음과 같습니다.mysql> create table concatAndLowerDemo -> ( &nbs
MySQL에서 하나의 행(row)에 있는 여러 컬럼 값의 평균을 구하려면 해당 컬럼들을 모두 더한 뒤 컬럼 수로 나누면 됩니다. 참고로 AVG() 함수는 열(세로) 방향의 평균을 구하는 집계 함수이므로, 행(가로) 방향의 평균은 산술 연산자를 사용해 직접 계산해야 합니다.기본 문법행의 값 평균을 계산하는 기본 문법은 다음과 같습니다.SELECT (yourTableName.yourColumnName1 + yourTableName.yourColumnName2 + yourTableName.yourColumnName3 + ... + you