데이터베이스 작업을 하다 보면 중복된 값이 존재하는 행들 중에서 가장 최근(최대) 날짜만 조회해야 하는 경우가 자주 있습니다. 이럴 때는 SQL의 GROUP BY 절과 HAVING 절을 함께 사용하면 간단하게 해결할 수 있습니다.이번 글에서는 실제 예제를 통해 학생 이름별로 중복된 데이터를 찾고, 각 이름에 해당하는 마감일(DueDate) 중 가장 늦은 날짜를 출력하는 방법을 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 실습에 사용할 테이블을 생성합니다. 학생 이름(StudentName)과 마감일(DueDate) 두 개의 컬럼
MySQL에서 특정 숫자가 포함된 값을 검색하고 싶다면 SUBSTRING_INDEX() 함수를 활용할 수 있습니다. 이 함수는 LIKE 연산자와 함께 사용하면 원하는 숫자의 위치를 기준으로 결과를 정렬하는 것도 가능합니다.실제 동작 과정을 예제를 통해 단계별로 살펴보겠습니다.1. 테이블 생성먼저 숫자 데이터를 저장할 테이블을 생성합니다.mysql> create table DemoTable (Number varchar(100));Query OK, 0 rows affected (0.60 sec)2. 샘플 데이터 삽입INSERT 명
개요 MySQL에서 이름의 단어 순서와 상관없이 Jone Deo 또는 Deo Jone 같은 레코드를 한 번의 쿼리로 조회해야 할 때가 있습니다. 이런 경우 LIKE 절과 SUBSTRING_INDEX() 함수를 조합하면 손쉽게 해결할 수 있습니다. 1단계: 테이블 생성 먼저 예제에 사용할 테이블을 만들어 보겠습니다. mysql> create table DemoTable -> ( -> ClientName varchar(100) -> ); Query OK, 0 rows affected (0.8
MySQL에서 기존 테이블에 새로운 컬럼과 해당 컬럼의 인덱스를 한 번의 쿼리로 동시에 추가하려면 ALTER TABLE 문과 ADD 절을 활용하면 됩니다.기본 문법ALTER TABLE yourTableNameADD yourColumnName DATETIME DEFAULT NOW(),ADD INDEX(yourColumnName);위 문법처럼 ADD 절을 여러 번 사용해 컬럼 추가와 인덱스 생성 작업을 하나의 쿼리로 처리할 수 있습니다.예제 테이블 생성먼저 실습용 테이블을 만들어 보겠습니다.mysql> CREATE TABLE De
varchar 타입의 열에 저장된 값이 숫자와 특수문자가 섞여 있을 때, 숫자만 가지고도 해당 값을 검색할 수 있습니다. 이때 MySQL의 INSERT() 함수를 활용하면 되는데, 이 함수는 다음과 같은 매개변수를 가집니다.매개변수설명str수정 대상이 되는 문자열positionstr2를 삽입할 위치number대체할 문자 수str2str에 삽입할 문자열예제 테이블 생성먼저 테이블을 생성해 보겠습니다.mysql> create table DemoTable -> ( -> Code varchar(100) -&
MySQL에서 데이터를 내림차순으로 정렬하려면 ORDER BY 절과 DESC 키워드를 사용합니다. 그런데 만약 특정 값 하나만 제외한 나머지 모든 값을 정렬하고 싶다면 어떻게 해야 할까요? 이 경우 비교 연산자(<>, 같지 않음)를 활용하면 간단하게 해결할 수 있습니다.이 글에서는 Adam이라는 이름 하나만 맨 뒤로 보내고, 나머지 이름들은 알파벳 순으로 정렬하는 방법을 단계별로 알아보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable -&
개요MySQL에서 데이터를 정렬할 때 일반적인 ORDER BY 절만으로는 음수 값은 내림차순으로, 양수 값은 오름차순으로 정렬하는 것이 불가능합니다. 이런 경우 UNION 연산자를 활용하면 원하는 정렬 순서를 손쉽게 구현할 수 있습니다.기본 아이디어는 다음과 같습니다.먼저 0인 값을 표시합니다.그다음 음수 값을 내림차순(큰 값부터)으로 정렬합니다.마지막으로 양수 값을 오름차순(작은 값부터)으로 정렬합니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable-> (
MySQL에서는 UPDATE 문과 산술 연산자를 활용하면 특정 행의 열 값을 손쉽게 증가시킬 수 있습니다. 이 글에서는 실제 예제를 통해 테이블 생성부터 데이터 삽입, 값 증가까지 전 과정을 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable-> (-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,-> Name varchar(100),-> Score int-> );Query OK, 0
MySQL에서 두 열 사이의 데이터를 서로 맞바꾸려면 사용자 정의 변수(user-defined variable) 개념을 활용하면 됩니다. 이 글에서는 예제 테이블을 만들고, Name1 열과 Name2 열의 값을 실제로 교환하는 과정을 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 두 개의 문자열 열을 가진 테이블을 생성합니다.mysql> create table DemoTable-> (-> Name1 varchar(100),-> Name2 varchar(100)-> );Query OK, 0 rows af
MySQL에서 저장 프로시저(Stored Procedure)는 OUT 매개변수를 활용하면 조회한 열 값을 외부 변수로 반환할 수 있습니다. 이 글에서는 테이블 생성부터 프로시저 작성, 호출, 결과 확인까지 전 과정을 단계별로 살펴보겠습니다. 1. 테이블 생성하기 먼저 예제에 사용할 테이블을 생성합니다. mysql> create table DemoTable -> ( -> Id int, -> Score int -> ); Query OK, 0 rows affected (0.69 s
문자열이 10개 이상의 단어를 포함하고 있을 때 뒤에 점(......)을 추가하려면 CASE 문과 SUBSTRING_INDEX() 함수를 함께 활용하면 됩니다. 이번 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable -> ( -> Title text -> ); Query OK, 0 rows affected (0.61 sec)2. 데이터 삽입하기INSERT 명령을 사용하여 테이블에 샘플 데이
MySQL에서는 사용자 정의 변수(user-defined variable)를 활용하면 테이블의 특정 필드 값을 지정한 백분율만큼 손쉽게 증가시킬 수 있습니다. 예를 들어 금액(Amount) 필드의 모든 값을 10%씩 인상하고 싶다면, 변수에 비율을 저장한 뒤 UPDATE 문에서 활용하면 됩니다.1. 샘플 테이블 생성먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable-> (-> Amount int-> );Query OK, 0 rows affected (0.99 sec)2.
MySQL에서 MONTH() 함수를 사용하면 날짜 데이터를 특정 월을 기준으로 손쉽게 조회할 수 있습니다. 이 글에서는 예제 테이블을 만들고, MONTH() 함수를 활용해 원하는 월의 데이터만 추출하는 방법을 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 사용자 게시글 정보를 저장할 테이블을 생성합니다. 테이블에는 아이디, 사용자 이름, 게시일, 좋아요 수 컬럼이 포함됩니다.mysql> create table DemoTable -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY K
MySQL에서는 LIKE 연산자와 OR 연산자를 조합하면, 하나의 쿼리에서 여러 개의 패턴 조건을 동시에 검색할 수 있습니다. 이는 IN 절처럼 여러 값을 나열하면서 부분 일치(패턴 매칭)까지 처리해야 할 때 유용하게 활용됩니다.먼저 실습용 테이블을 생성해 보겠습니다.mysql> create table DemoTable-> (-> SubjectTitle text-> );Query OK, 0 rows affected (0.68 sec)INSERT 명령을 사용해 몇 개의 레코드를 삽입합니다.mysql> ins
MySQL 테이블에서 특정 문자열과 정확히 일치하는 데이터를 찾으려면 WHERE 절과 함께 등호(=) 연산자를 사용하면 됩니다. 기본 문법은 다음과 같습니다.select *from yourTableName where yourColumnName=yourValue;예제 테이블 생성하기먼저 실습에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable-> (-> FirstName varchar(100),-> LastName varchar(100)-> );Query OK, 0 ro
MySQL에서 LPAD() 함수를 사용하면 값의 왼쪽에 특정 문자를 채워 원하는 길이로 맞출 수 있습니다. 이 글에서는 조건에 맞는 여러 행을 한 번에 업데이트하면서 왼쪽 패딩을 적용하는 방법을 예제와 함께 살펴보겠습니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable -> ( -> Number int -> );Query OK, 0 rows affected (2.26 sec)2. 데이터 삽입insert 명령을 사용하여 테이블에 샘플 레
MySQL에서 특정 열이 포함된 테이블 찾기여러 개의 데이터베이스와 테이블이 운영되는 환경에서는 특정 열(Column)이 어느 테이블에 들어 있는지 확인해야 하는 경우가 종종 발생합니다. 이럴 때 테이블을 하나씩 열어볼 필요 없이, information_schema.columns 뷰를 조회하고 COLUMN_NAME 조건을 활용하면 단 한 번의 쿼리로 원하는 열의 위치를 파악할 수 있습니다.먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable -> ( -> Cu
MySQL에서 여러 열을 기준으로 행 정렬하기MySQL에서 ORDER BY 절에 여러 개의 열을 쉼표(,)로 구분하여 지정하면, 첫 번째 열을 기준으로 먼저 정렬한 후, 값이 중복되는 경우 두 번째 열을 기준으로 추가 정렬합니다. 아래 예제를 통해 단계별로 살펴보겠습니다.1단계: 테이블 생성먼저 테이블을 생성합니다.mysql> create table DemoTable -> ( -> FirstName varchar(20), &n
개요데이터베이스 작업을 하다 보면 특정 접두사나 불필요한 단어가 포함된 문자열을 정렬해야 하는 경우가 있습니다. 이 글에서는 MySQL에서 TRIM, REPLACE, LOWER 함수를 조합하여 특정 단어를 무시하고 열을 정렬하는 방법을 예제와 함께 알아보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable-> (-> Name text-> );Query OK, 0 rows affected (1.31 sec)2. 레코드 삽입하기insert 명령을
데이터베이스 내 여러 테이블 중 어느 테이블에 특정 컬럼이 존재하는지 확인해야 할 때가 있습니다. 이럴 때 INFORMATION_SCHEMA.COLUMNS 뷰를 활용하면 손쉽게 해결할 수 있습니다. 핵심은 COLUMN_NAME 조건에 LIKE 연산자를 사용해 원하는 컬럼명을 지정하는 것입니다.기본 쿼리 구문아래 예시는 web이라는 스키마(데이터베이스) 안에서 StudentName이라는 이름을 가진 컬럼이 포함된 모든 테이블을 조회하는 방법입니다.mysql> SELECT TABLE_NAME, COLUMN_NAME, DATA_TY