MySQL에서 날짜(datetime) 열에 저장된 모든 레코드에 1년을 더하려면 DATE_ADD() 함수를 사용하면 됩니다. 이 함수는 지정한 날짜에 원하는 시간 간격(interval)을 더한 값을 반환합니다.1. 테이블 생성하기먼저 datetime 타입의 열을 가진 테이블을 생성합니다.mysql> create table DemoTable -> ( -> JoiningDate datetime -&
MySQL에서 하나의 열에 저장된 값을 여러 부분으로 나누려면 SUBSTRING_INDEX() 함수를 사용하면 됩니다. 이 함수는 지정한 구분자를 기준으로 문자열을 잘라내어 원하는 부분만 반환합니다. 이번 글에서는 실제 예제를 통해 열을 분할하는 과정을 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 이름 데이터를 저장할 테이블을 생성합니다.mysql> create table DemoTable -> ( -> Name varchar(40
MySQL에서 문자열 길이가 특정 값(X자)보다 짧은 레코드만 조회하고 싶다면 CHAR_LENGTH() 함수를 WHERE 절과 함께 사용하면 됩니다. CHAR_LENGTH()는 문자열의 글자 수를 반환하는 함수로, 이를 조건으로 활용해 원하는 길이의 데이터만 손쉽게 필터링할 수 있습니다.1. 예제 테이블 생성먼저 실습에 사용할 테이블을 만들어 보겠습니다.mysql> create table DemoTable-> (-> FullName varchar(50)-> );Query OK, 0 rows affected (1
MySQL에서 UPDATE와 SELECT를 동시에 사용하는 방법MySQL에서 UPDATE 문을 실행하면서 동시에 SELECT 문을 활용해야 하는 경우가 종종 있습니다. 예를 들어, 같은 테이블 내의 다른 행 값을 기준으로 특정 행을 수정하고 싶을 때가 그렇습니다. 이럴 때는 WHERE 절과 함께 서브쿼리(subquery)를 사용하면 됩니다.다만 한 가지 주의할 점이 있습니다. MySQL에서는 UPDATE의 대상 테이블을 서브쿼리의 FROM 절에서 직접 참조할 수 없으며, 이 경우 오류 1093이 발생합니다. 따라서 서브쿼리를 한 번
MySQL에서는 FORMAT() 함수를 활용하면 금액 데이터를 천 단위 구분 기호가 포함된 올바른 통화 형식으로 손쉽게 표시할 수 있습니다. 이번 글에서는 실제 예제를 통해 통화 기록을 설정하고 출력하는 전체 과정을 단계별로 살펴보겠습니다.1. 샘플 테이블 생성하기먼저 금액을 저장할 DECIMAL 타입의 컬럼을 가진 테이블을 생성합니다.mysql> create table DemoTable-> (-> Amount DECIMAL(15,4)-> );Query OK, 0 rows affected (0.75 sec)2.
데이터베이스 작업을 하다 보면 버전 정보처럼 마침표(.)와 숫자로 구성된 문자열만 골라내야 하는 경우가 있습니다. 이럴 때 MySQL의 REGEXP 연산자와 정규식 패턴을 활용하면 손쉽게 원하는 레코드만 필터링할 수 있습니다.1. 샘플 테이블 생성먼저 실습에 사용할 테이블을 생성하겠습니다. 버전 문자열을 저장할 Version 컬럼 하나로 구성된 간단한 테이블입니다.mysql> create table DemoTable-> (-> Version varchar(20)-> );Query OK, 0 rows affect
MySQL에서 문자열 형태로 저장된 날짜 데이터를 실제 날짜 값으로 변환하여 다루고 싶다면 STR_TO_DATE() 함수를 사용하는 것이 가장 간단한 방법입니다. 이 함수는 지정한 형식 문자열에 따라 텍스트를 날짜(DATE) 값으로 변환해 줍니다.STR_TO_DATE() 기본 문법SELECT STR_TO_DATE(yourColumnName, %b %Y) FROM yourTableName;위 문법에서 %b는 축약된 월 이름(예: Jan, Feb)을, %Y는 4자리 연도를 의미합니다. 즉, Jan 2018과 같은 문자열을 2018-01
MySQL에서 숫자가 VARCHAR 타입의 컬럼에 저장되어 있으면, 단순히 ORDER BY를 사용할 경우 값이 문자열로 취급되어 의도하지 않은 순서로 정렬될 수 있습니다. 예를 들어 9가 10보다 뒤에 오는 현상이 발생하죠. 이 문제를 해결하려면 CAST() 함수를 사용해 값을 DECIMAL 타입으로 변환한 뒤 정렬하면 됩니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable-> (-> Value varchar(20)-> );Query OK, 0 r
INSERT 문에서 해당 컬럼에 아무 값도 지정하지 않으면, TIMESTAMP 타입 컬럼에는 현재 날짜와 시간이 자동으로 삽입됩니다. 이는 컬럼 정의 시 DEFAULT CURRENT_TIMESTAMP 옵션이 설정되어 있기 때문입니다.테이블 생성하기먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable -> ( -> UserId int NOT NULL AUTO_INCREMENT PRIMARY
MySQL 저장 프로시저로 특정 조건의 레코드 업데이트하기저장 프로시저(Stored Procedure) 안에서 UPDATE 명령과 WHERE 절을 조합하면, 원하는 조건에 해당하는 레코드만 골라서 수정할 수 있습니다. 이 글에서는 테이블 생성부터 저장 프로시저 작성, 호출, 결과 확인까지 전 과정을 단계별로 살펴보겠습니다.1단계: 테이블 생성먼저 예제에 사용할 테이블을 만듭니다.mysql> create table DemoTable -> ( -> Id int, -> FirstName varchar
MySQL에서 인덱스(index)가 포함된 테이블을 생성하면 대용량 데이터를 조회할 때 검색 성능을 크게 향상시킬 수 있습니다. 인덱스는 책의 목차와 같은 역할을 하여, 전체 테이블을 스캔하지 않고도 원하는 데이터를 빠르게 찾도록 도와줍니다.기본 문법먼저 테이블을 생성한 후, CREATE INDEX 구문을 사용해 각 컬럼에 인덱스를 추가하는 방식입니다.create table yourTableName(yourColumnName1 dataType,yourColumnName2 dataType...N);create index yourInd
MySQL에서 IFNULL()로 조건부 정렬 구현하기 MySQL에서 특정 컬럼의 값이 NULL이 아닐 경우에는 해당 컬럼을 기준으로 정렬하고, NULL일 경우에는 다른 컬럼을 기준으로 정렬해야 하는 경우가 있습니다. 이런 조건부 정렬은 ORDER BY IFNULL() 함수를 사용하면 간단하게 구현할 수 있습니다. IFNULL(값1, 값2)는 첫 번째 인자가 NULL이 아니면 그 값을 그대로 반환하고, NULL이면 두 번째 인자를 반환하는 함수입니다. 이 특성을 활용하면 원하는 정렬 로직을 손쉽게 만들 수 있습니다. 1. 테이블 생
MySQL에서 테이블에 저장된 데이터의 특정 문자를 교체하고 싶다면 REPLACE() 함수를 사용하면 됩니다. REPLACE()는 문자열 안에서 지정한 문자나 부분 문자열을 찾아 다른 값으로 바꿔주는 아주 유용한 함수입니다. 이 글에서는 실제 예제를 통해 단일 문자를 교체하는 방법을 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable -> ( -> Name varchar(20) -> );Query OK, 0 r
Java에서 MySQL 데이터베이스에 연결할 때 연결 오류(connection error)가 발생한다면, 가장 흔한 원인은 MySQL 커넥터가 자바 클래스패스(classpath)에 설정되어 있지 않기 때문입니다. 이 문제를 해결하려면 MySQL Connector/J의 JAR 파일을 반드시 클래스패스에 추가해야 합니다.MySQL 커넥터를 클래스패스에 추가하는 방법사용 중인 IDE(Eclipse, IntelliJ IDEA 등)에서 프로젝트 폴더로 이동한 후, MySQL 커넥터의 JAR 파일을 임포트하면 됩니다. 예를 들어 Eclipse
MySQL에서 특정 컬럼 기준으로 가장 큰 값을 가진 상위 N개의 레코드를 조회하려면 ORDER BY ... DESC와 함께 LIMIT 절을 사용하면 됩니다. 이 글에서는 학생 점수 테이블을 예로 들어, 점수가 가장 높은 3명의 학생 데이터를 가져오는 과정을 단계별로 살펴보겠습니다. 1. 예제 테이블 생성하기 먼저 학생 이름과 점수를 저장할 테이블을 생성합니다. mysql> create table DemoTable1614 -> ( -> StudentName varchar(20), -> St
MySQL SUBSTRING_INDEX()로 쉼표 구분 문자열의 원하는 위치 값 가져오기쉼표(,)로 구분된 문자열이 저장된 컬럼에서 특정 순번에 해당하는 단일 값을 추출해야 하는 경우가 종종 있습니다. 이럴 때 MySQL의 SUBSTRING_INDEX() 함수를 중첩하여 사용하면 간단하게 해결할 수 있습니다.SUBSTRING_INDEX() 함수는 지정한 구분자를 기준으로 문자열을 나눈 뒤, 구분자가 N번째 등장하기 전까지의 부분 문자열을 반환합니다. 음수를 사용하면 뒤에서부터 N번째까지의 부분 문자열을 반환합니다. 이 두 가지 특성
MySQL에서 여러 조건을 동시에 만족하는 행만 업데이트하려면 WHERE 절과 함께 논리 AND 연산자를 사용하면 됩니다. AND 연산자는 두 조건이 모두 참일 때만 해당 행을 대상으로 삼기 때문에, 보다 정밀한 조건의 데이터 수정이 가능합니다.실제 예제를 통해 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 학생 정보를 저장할 테이블을 생성합니다.mysql> create table DemoTable1616-> (-> StudentId int,-> StudentName varchar(20),-> Stude
MySQL에서 ENUM 타입 컬럼은 정해진 값 목록 중 하나만 저장할 수 있는 편리한 데이터 타입입니다. 이 글에서는 ENUM 필드의 값을 기준으로 특정 행을 선택하는 방법을 예제와 함께 살펴보겠습니다.1. 테이블 생성하기먼저 ENUM 타입 컬럼을 포함한 테이블을 생성합니다. 아래 예제에서는 직원 상태를 나타내는 EmployeeStatus 컬럼을 만들고, 값 목록으로 FULLTIME과 Intern 두 가지를 지정했습니다.mysql> create table DemoTable-> (-> EmployeeStatus ENU
MySQL로 연도별 출석·결석 학생 수 집계하기MySQL에서 특정 연도의 출석(Present) 학생과 결석(Absent) 학생 수를 각각 계산하려면 IF() 함수와 SUM() 집계 함수를 함께 사용하면 됩니다. IF() 함수는 조건을 만족하면 1, 그렇지 않으면 0을 반환하므로, 이 값을 SUM()으로 합산하면 원하는 개수를 손쉽게 구할 수 있습니다.먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable1617-> (-> Attendance varchar(20),->
Java에서 IP 주소를 통해 MySQL 데이터베이스에 연결하려면 DriverManager.getConnection() 메서드에 JDBC MySQL URL을 설정하면 됩니다. localhost 대신 접속하려는 서버의 IP 주소를 URL에 지정하는 것이 핵심입니다.JDBC URL 구조 이해하기본 예제에서 사용되는 JDBC URL의 구조는 다음과 같습니다.jdbc:mysql://192.168.43.144:3306/web?useSSL=false192.168.43.144 : 연결할 MySQL 서버의 IP 주소3306 : MySQL 기본 포