MySQL에서 특정 열의 값이 0일 경우, 같은 행에 있는 다른 열의 값을 대신 가져와야 하는 경우가 종종 있습니다. 이럴 때 IF() 함수를 사용하면 간단하게 해결할 수 있습니다.IF() 함수 기본 문법IF() 함수는 첫 번째 인자로 주어진 조건을 평가합니다. 조건이 참(true)이면 두 번째 인자를 반환하고, 거짓(false)이면 세 번째 인자를 반환합니다. 즉, 첫 번째 열의 값이 0이면 두 번째 열의 값을, 그렇지 않으면 첫 번째 열의 값을 그대로 출력하게 됩니다.select IF(yourColumnName1=0,yourCo
현재 데이터베이스 확인하기MySQL에서 현재 사용 중인 데이터베이스의 이름을 확인하려면 SELECT DATABASE() 함수를 사용하면 됩니다.select database();동적 삭제를 위한 기본 문법현재 데이터베이스 이름을 변수에 저장한 뒤, DROP DATABASE 문을 동적으로 생성하고 실행하는 방식입니다. 전체 문법은 다음과 같습니다.set @anyVariableName = database();select @anyVariableName;set @anyVariableName2 = concat(drop database , @y
MySQL AVG() 함수로 평균값 계산하기MySQL에서 테이블의 각 컬럼에 대한 평균값을 계산하려면 내장 집계 함수인 AVG()를 사용하면 됩니다. AVG() 함수는 지정한 컬럼의 모든 행 값을 합산한 뒤, NULL이 아닌 값의 개수로 나누어 평균을 반환합니다.기본 문법SELECT avg(컬럼명1) AS 별칭1, avg(컬럼명2) AS 별칭2, avg(컬럼명3) AS 별칭3FROM 테이블명;AS 키워드를 사용해 별칭(alias)을 지정하면 결과 집합의 컬럼 이름을 원하는 대로 표시할 수 있어 가독성이 좋아집니
MySQL에서는 생성 컬럼(Generated Column)을 활용하면 데이터를 직접 INSERT하거나 UPDATE하지 않아도, 전체 테이블을 조회할 때 자동으로 계산된 값이 화면에 나타나도록 테이블 구조를 만들 수 있습니다. 이번 글에서는 두 개의 점수 컬럼 값을 더해 평균을 내는 Average Score 필드를 추가하는 과정을 단계별로 살펴보겠습니다.기본 문법기존 테이블에 생성 컬럼을 추가하는 기본 문법은 다음과 같습니다.ALTER TABLE yourTableNameADD COLUMN yourColumnName yourDataTy
MySQL에서 테이블을 생성할 때 특정 컬럼에 기본값을 지정하고 싶다면, 컬럼 데이터 타입 뒤에 DEFAULT 키워드를 사용하면 됩니다. 이렇게 하면 데이터 삽입 시 해당 컬럼의 값을 생략해도 자동으로 기본값이 저장됩니다.테이블 생성하기DEFAULT 키워드를 활용하여 다양한 유형의 기본값(현재 날짜, NULL, 열거형 값 등)을 설정한 테이블을 만들어 보겠습니다.mysql> create table demo33 -> ( -> id int not null auto_increment primary key, -> na
MySQL 날짜 형식에서 숫자형 날짜 값 추출하기31-Jan-19처럼 문자열로 저장된 날짜 데이터에서 숫자형(UNIX 타임스탬프) 값을 추출하려면 UNIX_TIMESTAMP() 함수와 STR_TO_DATE() 함수를 함께 사용하면 됩니다. STR_TO_DATE()는 문자열을 DATE 타입으로 변환하고, UNIX_TIMESTAMP()는 해당 날짜를 초 단위의 숫자 값으로 변환해 줍니다.기본 문법select UNIX_TIMESTAMP(STR_TO_DATE(yourColumnName, %d-%b-%y)) as anyAliasName fr
MySQL 테이블에서 중복 데이터 삭제하기MySQL 테이블에 동일한 데이터가 여러 번 저장되어 있다면, DELETE 문과 INNER JOIN을 조합하여 중복 행을 손쉽게 제거할 수 있습니다. 이 방식은 같은 테이블을 두 개의 별칭(alias)으로 조인한 뒤, 조건에 맞는 중복 행만 골라 삭제하는 원리로 동작합니다.기본 문법delete tbl1 from yourTableName anyAliasName1 inner join yourTableName anyAliasName2 where yourCondition1 and yourCondit
MySQL에서 시간(TIME) 값에서 분(Minute) 부분만 추출하고 싶다면, EXTRACT() 함수와 CAST() 함수를 함께 사용하면 됩니다. EXTRACT() 함수는 날짜 및 시간 값에서 원하는 단위(년, 월, 일, 시, 분, 초 등)를 손쉽게 가져올 수 있는 강력한 도구입니다.기본 문법시간 값에서 분을 추출하는 기본 문법은 다음과 같습니다.SELECT EXTRACT(MINUTE FROM CAST(yourColumnName AS TIME)) AS anyAliasName FROM yourTableName;여기서 CAST() 함
쉼표로 구분된 목록에서 문자열 검색하기MySQL에서 쉼표로 구분된 목록(comma separated list) 안에 특정 값이 포함되어 있는지 확인하려면 FIND_IN_SET() 함수를 사용하는 것이 가장 좋습니다. 이 경우 정규식(Regex)을 사용할 필요가 없습니다. FIND_IN_SET()은 목록 내에서 정확한 일치 항목을 찾아주기 때문에 더 안전하고 효율적인 방법입니다.기본 문법은 다음과 같습니다.select * from yourTableName where find_in_set(anyValue, yourColumnName);
MySQL에서 SELECT 및 SHOW 명령 결과 결합하기MySQL에서는 사용자 정의 변수를 활용하면 SELECT 문과 SHOW 명령의 결과를 하나의 결과 집합으로 손쉽게 결합할 수 있습니다. 기본적인 쿼리 형식은 다음과 같습니다.SELECT @변수명1 AS 별칭1, @변수명2 AS 별칭2, ...N;1단계: 첫 번째 변수 생성 및 초기화먼저 SET 명령을 사용하여 첫 번째 변수를 선언하고 값을 할당합니다.mysql> SET @first_name=John;Query OK, 0 rows affected (0.00 sec)2단계:
문자열과 숫자가 섞여 있는 데이터를 사람이 읽는 순서대로 정렬하려면 ORDER BY 절에 여러 조건을 조합해 사용하면 됩니다. 이 글에서는 예제 테이블을 만들고 단계별로 정렬 방법을 살펴보겠습니다. 1. 예제 테이블 생성 먼저 value라는 TEXT 타입 컬럼 하나를 가진 테이블을 생성합니다. mysql> create table demo18-> (-> value text-> );Query OK, 0 rows affected (1.18 sec) 2. 샘플 데이터 삽입 INSERT 명령으로 몇 개의 레코드를 추
Java에서 MySQL 데이터베이스를 검색할 때 LIKE 절과 함께 검색 변수를 사용하려면 문자열을 연결하는 과정에서 작은따옴표()를 정확한 위치에 배치해야 합니다. 아래는 검색 변수와 함께 LIKE를 사용하는 올바른 문법입니다.String sqlQuery; sqlQuery = select *from yourTableName where yourColumnName like % + yourSearchVariableName + %;테이블 생성하기먼저 실습에 사용할 테이블을 생성해 보겠습니다.mysql> create table dem
테이블 A의 데이터 중 테이블 B에는 존재하지 않는 레코드만 골라내어 테이블 C에 삽입하고 싶다면 LEFT JOIN과 IS NULL 조건을 함께 사용하면 됩니다. 이 글에서는 세 개의 예제 테이블을 만들고, 실제 쿼리가 어떻게 동작하는지 단계별로 살펴보겠습니다.1단계: 첫 번째 테이블 생성 (테이블 A 역할)먼저 demo20이라는 이름의 테이블을 생성합니다.mysql> create table demo20 -> ( -> id int, -> name varchar(20) -> ); Query OK, 0 row
MySQL에서 두 컬럼의 곱으로 계산되는 누적 값 중 가장 큰 값과 그 값이 나타난 횟수를 함께 조회하려면, 집계 함수인 COUNT(*)와 서브쿼리(subquery)를 함께 사용하면 됩니다. 여기에 GROUP BY를 조합하여 동일한 계산 결과를 하나의 그룹으로 묶고, ORDER BY와 LIMIT을 활용해 최댓값만 손쉽게 추출할 수 있습니다.예제 테이블 생성하기먼저 실습에 사용할 테이블을 생성해 보겠습니다.mysql> create table demo23 -> ( -> id int not null auto_increme
MySQL 8.0.13 버전부터는 TEXT, BLOB, GEOMETRY와 마찬가지로 JSON 타입 컬럼에도 표현식(expression) 형태의 기본값을 설정할 수 있습니다. 이 글에서는 ALTER TABLE 문과 JSON_OBJECT() 함수를 활용해 JSON 컬럼에 기본값을 지정하는 방법을 단계별로 살펴봅니다. 기본값 설정 문법 JSON 컬럼에 기본값을 설정하려면 아래와 같이 DEFAULT 제약조건을 사용합니다. ALTER TABLE yourTableName MODIFY COLUMN yourColumnName JSON NOT N
Spring Boot에서 DataSource 구성 오류란?Spring Boot 애플리케이션 실행 시 Failed to configure a DataSource(DataSource를 구성하지 못했습니다) 오류가 발생하는 경우가 있습니다. 이는 주로 데이터베이스 연결 정보가 올바르게 설정되지 않았거나 JDBC 드라이버가 누락되었을 때 나타나는 문제입니다. Spring Boot에서 DataSource를 구성하는 가장 기본적인 방법은 application.properties 파일에 데이터베이스 연결 정보를 정의하는 것입니다.applicat
MySQL에서 숫자의 소수점 앞 두 번째 자리(십의 자리)에 해당하는 값을 추출하려면 DIV 연산자와 %(나머지) 연산자를 함께 활용하면 됩니다.예제 테이블 생성하기먼저 실습에 사용할 테이블을 생성합니다.mysql> create table demo1 -> ( -> value float -> ); Query OK, 0 rows affected (2.20 sec)데이터 삽입하기INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.mysql> insert into demo1 values(456.54); Qu
MySQL에서는 ORDER BY 절과 함께 여러 개의 LIKE 연산자를 조합하여, 특정 키워드에 더 많이 일치하는 레코드를 우선적으로 정렬할 수 있습니다. 이 기법은 검색 결과의 관련도 순으로 데이터를 정렬하고 싶을 때 특히 유용합니다.기본 문법여러 LIKE 연산자를 ORDER BY와 함께 구현하는 기본 문법은 다음과 같습니다.SELECT * FROM yourTableName ORDER BY ( yourColumnName LIKE %yourValue1% ) + ( yourColumnName LIKE %yourValue
MySQL에서 여러 테이블을 조회할 때 전체 결과 수를 제한하려면 UNION ALL과 LIMIT 절을 함께 사용하면 됩니다. 이 글에서는 세 개의 테이블을 만들고, 각 테이블에서 상위 2개씩 데이터를 가져온 뒤 최종적으로 2개의 행만 출력하는 방법을 단계별로 살펴봅니다. 1. 첫 번째 테이블 생성 (demo3) 먼저 정수 값을 저장할 첫 번째 테이블을 생성합니다. mysql> create table demo3 -> ( -> value int -> ); Query OK, 0 rows affected (1.39
MySQL에서 LOCK TABLES 명령으로 테이블에 READ 잠금을 설정한 상태에서는 해당 테이블에 데이터를 삽입하거나 수정할 수 없습니다. 이때 발생하는 것이 바로 오류 1099(HY000)입니다.이 오류를 해결하는 방법은 간단합니다. UNLOCK TABLES 명령을 실행하여 잠금을 해제하면 됩니다. 아래 예제를 통해 전체 과정을 단계별로 살펴보겠습니다.1. 테스트용 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table demo6 -> ( -> country_name varch