MySQL에서 전체 날짜 값 대신 일(day) 부분만 추출하고 싶다면 DAYOFMONTH() 함수를 사용하면 됩니다. 이 함수는 DATETIME 또는 DATE 타입의 값에서 해당 월의 며칠인지를 숫자로 반환해 줍니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable747 (DueDate datetime);Query OK, 0 rows affected (0.53 sec)2. 샘플 데이터 삽입하기INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.mysql>
MySQL에서 중복된 값 쌍(duplicate value pairs)을 찾으려면 GROUP BY 절과 HAVING 절을 함께 사용하면 됩니다. 이 방법은 두 개 이상의 컬럼 조합이 동일하게 나타나는 행을 손쉽게 식별할 수 있어 데이터 정제 작업에 매우 유용합니다.1. 예제 테이블 생성하기먼저 실습용 테이블을 생성합니다.mysql> create table DemoTable748 (Id int, FirstName varchar(100)); Query OK, 0 rows affected (0.46 sec)2. 샘플 데이터 삽입하기I
MySQL에서 테이블에 저장된 레코드 중 가장 최신(가장 큰) ID를 가진 행만 조회하고 싶다면, ORDER BY ... DESC와 LIMIT 1을 조합하면 간단하게 해결할 수 있습니다. 아래에서 예제 테이블 생성부터 결과 확인까지 단계별로 살펴보겠습니다.1. 예제 테이블 생성하기먼저 자동 증가(AUTO_INCREMENT) 기본키를 가진 테이블을 생성합니다.mysql> create table DemoTable676( Id int NOT NULL AUTO_INCREMENT PRIMARY
개요MySQL에서 CONCAT() 함수는 모든 문자열에 MR. 접두사를 붙이는 데 사용되고, GROUP_CONCAT() 함수는 여러 행의 열 값들을 한 줄로 연결하는 데 사용됩니다. 이 두 함수를 조합하면 특정 기준(예: UserId)으로 그룹화된 이름 값들을 하나의 문자열로 합치면서 각 값마다 접두사를 자동으로 추가할 수 있습니다.1단계: 예제 테이블 생성먼저 예제 테이블을 생성해 보겠습니다.mysql> create table DemoTable799( UserId int, &
MySQL에서 특정 필드 값을 원하는 순서대로 정렬하려면 FIND_IN_SET() 함수를 사용하면 됩니다. 일반적인 오름차순(ASC)이나 내림차순(DESC) 정렬과 달리, 개발자가 직접 지정한 사용자 정의 순서대로 결과를 정렬할 수 있어 상태 값(status) 처리에 매우 유용합니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable677( UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, &nb
MySQL에서 날짜 데이터가 VARCHAR 타입의 컬럼에 문자열로 저장되어 있는 경우, 단순히 ORDER BY를 사용하면 사전순으로 정렬되어 원하는 결과를 얻을 수 없습니다. 이럴 때는 STR_TO_DATE() 함수를 활용하여 문자열을 날짜로 변환한 뒤 정렬하면 됩니다.기본 문법SELECT * FROM yourTableNameORDER BY STR_TO_DATE(yourColumnName, %M %Y) DESC;위 문법에서 %M %Y는 March 2019와 같은 형식의 날짜 문자열을 해석하기 위한 포맷 지정자입니다. DESC를 사용
MySQL에서 ORDER BY 절과 LIMIT 절을 함께 사용하면 테이블의 레코드를 특정 기준으로 정렬한 뒤, 그중 원하는 개수만큼만 조회할 수 있습니다. 이 글에서는 실제 예제를 통해 그 방법을 단계별로 살펴보겠습니다. 1. 예제 테이블 생성하기 먼저 데모용 테이블을 생성합니다. mysql> create table DemoTable679(FirstName varchar(100)); Query OK, 0 rows affected (0.44 sec) 2. 레코드 삽입하기 INSERT 명령을 사용해 테이블에 여러 개의 레코드를
MySQL에서 열의 값을 중복 없이 한 번씩만 조회하고 싶을 때가 있습니다. 이럴 때 DISTINCT 키워드를 사용하면 간단하게 해결할 수 있습니다. 실제 예제를 통해 단계별로 살펴보겠습니다.1. 예제 테이블 생성하기먼저 예제로 사용할 테이블을 생성합니다.mysql> create table DemoTable680(Status varchar(100)); Query OK, 0 rows affected (0.75 sec)2. 샘플 데이터 삽입하기INSERT 명령어를 사용해 의도적으로 중복된 값이 포함된 레코드를 여러 개 삽입합니다.
MySQL에서 특정 기간에 속하는 날짜 데이터를 조회해야 하는 경우가 자주 있습니다. 예를 들어 입학일(AdmissionDate)이 2019년 2월 1일부터 2019년 12월 1일 사이인 레코드만 추출하고 싶다면, BETWEEN 키워드를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 두 날짜 사이의 레코드를 선택하는 방법을 단계별로 살펴보겠습니다.1. 예제 테이블 생성하기먼저 날짜 데이터를 저장할 테이블을 생성합니다. 여기서는 DATETIME 타입의 컬럼을 하나 가진 간단한 테이블을 만들어 보겠습니다.mysql> create
```html MySQL에서 문자열과 숫자를 하나로 합쳐야 할 때는 CONCAT() 함수를 사용하면 됩니다. CONCAT()은 여러 개의 인수를 받아 이를 하나의 문자열로 연결해 주는 함수로, 숫자 타입의 값도 자동으로 문자열로 변환하여 처리해 줍니다.예제와 함께 단계별로 살펴보겠습니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable682( Name varchar(100), Age int);Query OK, 0 rows affected (0.49 sec)2
MySQL에서 특정 값을 제외하면서 NULL 값이 포함된 레코드까지 함께 조회해야 하는 경우가 종종 있습니다. 이때 NOT IN, OR, IS NULL 조건을 하나의 쿼리에 결합하면 원하는 결과를 얻을 수 있습니다.SQL에서는 NULL과의 비교 연산이 항상 UNKNOWN으로 평가되기 때문에, 단순히 NOT IN만 사용하면 NULL 레코드가 결과에서 누락됩니다. 따라서 OR StudentName IS NULL 조건을 추가해 주어야 합니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create
MySQL에서 처음 10개 레코드 선택하기테이블에서 처음 10개의 레코드를 선택하려면 먼저 레코드를 오름차순(ASC) 또는 내림차순(DESC)으로 정렬한 뒤, LIMIT 10을 사용하여 10개의 레코드만 가져오면 됩니다. 기본적인 쿼리 형태는 다음과 같습니다.select *from (select *from yourTableName ORDER BY yourColumnName ASC LIMIT 10)anyAliasName ORDER BY yourColumnName DESC;아래에서 실제 예제를 통해 단계별로 살펴보겠습니다.1단계: 테이
MySQL 복제 권한 부여 개요MySQL에서 특정 사용자에게 복제(replication) 권한을 부여하려면 GRANT REPLICATION SLAVE 구문을 사용합니다. 이 권한은 주로 마스터-슬레이브 복제 환경을 구성할 때 슬레이브 서버가 마스터 서버에 접속하여 바이너리 로그를 읽을 수 있도록 하는 데 필수적입니다.1단계: 기존 사용자 목록 확인권한을 부여하기 전에 먼저 MySQL의 mysql.user 테이블에서 등록된 모든 사용자 이름과 호스트를 확인합니다.mysql> select user,host from mysql.us
개요현재 날짜가 2019-07-25라고 가정해 보겠습니다. 이 글에서는 배송일(ShippingDate) 컬럼을 포함한 테이블을 만들고, 오늘 날짜를 기준으로 가장 가까운 날짜를 조회하는 MySQL 쿼리를 단계별로 알아봅니다.1. 테이블 생성하기먼저 다음과 같이 테이블을 생성합니다.mysql> create table DemoTable667(ShippingDate datetime); Query OK, 0 rows affected (0.46 sec)2. 샘플 데이터 삽입하기insert 명령을 사용해 몇 개의 레코드를 추가합니다.my
ISO 8601 형식(yyyy-mm-ddThh:mm:ss.sssZ)으로 저장된 날짜 데이터를 MySQL에서 일반적인 datetime 형식(yyyy-mm-dd hh:mm:ss)으로 변환해야 하는 경우가 종종 있습니다. 이 글에서는 STR_TO_DATE()와 DATE_FORMAT() 함수를 활용해 이러한 변환을 수행하는 방법을 단계별로 알아보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다. 여기서는 날짜를 varchar 타입의 문자열로 저장하는 테이블을 만들어 보겠습니다.mysql> create table De
개요MySQL에서 데이터를 정렬할 때 기본적으로 NULL 값은 오름차순 정렬 시 가장 앞쪽에 위치하게 됩니다. 하지만 실무에서는 유효한 값들을 먼저 오름차순으로 보여주고, NULL 값은 목록 맨 뒤에 배치해야 하는 경우가 많습니다.이럴 때 ORDER BY ISNULL() 함수를 활용하면 간단하게 해결할 수 있습니다. ISNULL() 함수는 해당 값이 NULL이면 1을, NULL이 아니면 0을 반환하기 때문에 이를 정렬 기준의 첫 번째 조건으로 사용하면 NULL이 아닌 행이 먼저 출력됩니다.예제 테이블 생성먼저 예제로 사용할 테이블을
MySQL에서 도메인 이름을 정렬하려면 ORDER BY 절과 함께 SUBSTRING_INDEX() 함수를 사용하면 됩니다. 이 함수를 활용하면 도메인의 최상위 도메인(.com 등)과 서브도메인(www 등)을 기준으로 원하는 순서대로 데이터를 정렬할 수 있습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable670(DomainName text);Query OK, 0 rows affected (0.77 sec)2. 샘플 데이터 삽입하기INSERT 명령을 사용하여 도메
MySQL에서 특정 문자로 시작하는 열만 골라내고 싶다면 LIKE 연산자를 사용하면 됩니다. 또한 조회한 열 이름들을 하나의 문자열로 이어 붙일 때는 GROUP_CONCAT() 함수를 활용합니다. 기본 문법은 다음과 같습니다.SELECT group_concat(COLUMN_NAME separator , ) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = yourTableName AND table_schema = yourDatabaseName AND column_name LIKE yourS
MySQL에서 특정 조건에 따라 레코드를 정렬하고 싶을 때는 ORDER BY 절과 함께 NULLIF() 함수를 사용하면 됩니다. 이번 글에서는 실제 예제를 통해 테이블 생성부터 데이터 삽입, 그리고 CASE 방식의 정렬까지 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable672( CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY, CustomerName varchar(100), C
테이블에 저장된 데이터 중 여러 번 반복해서 나타나는 값을 찾고, 각 값이 몇 번 등장했는지 개수까지 함께 확인하고 싶다면 GROUP BY와 HAVING 절을 조합하여 사용하면 됩니다.이 글에서는 실제 예제 테이블을 만들고, 단계별로 쿼리를 실행하면서 중복 값과 그 발생 횟수를 조회하는 방법을 살펴보겠습니다.1. 예제 테이블 생성먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable673( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Valu