MySQL에서 문자열의 마지막 값이 특정 값(예: 10, 15 등)과 일치하는 레코드를 조회하려면 LIKE 연산자와 와일드카드를 함께 사용하면 됩니다. 이 글에서는 예제를 통해 그 방법을 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( ClientId varchar(20) ); Query OK, 0 rows affected (0.68 sec)2. 데이터 삽입INSERT 명령을 사용해 테이블에 레코드를 추가합니다.mysql>
MySQL에서 COUNT(DISTINCT)로 고유한 행 개수 구하기MySQL에서 COUNT() 함수는 테이블의 행(row) 개수를 반환합니다. 여기에 DISTINCT 키워드를 함께 사용하면 중복된 값을 제외하고 오직 고유한(unique) 값의 개수만 계산할 수 있습니다.예를 들어 이름 목록에서 John이 3번 반복되더라도 실제 고유한 이름은 몇 개인지 확인할 때 유용합니다. 아래 예제를 통해 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 다음 쿼리로 테스트용 테이블을 생성합니다.mysql> create table DemoTa
개요네, MySQL에서도 충분히 구현할 수 있습니다. 핵심은 먼저 전체 레코드의 중간값(middle value)을 구한 뒤, 이를 기준으로 각 행의 정렬 키를 다시 계산하는 것입니다. 아래 예제를 통해 단계별로 살펴보겠습니다.1. 테이블 생성먼저 실습에 사용할 테이블을 만듭니다.mysql> create table DemoTable ( UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY ); Query OK, 0 rows affected (0.65 sec)2. 레코드 삽입insert 명령으
MySQL에서 일정 시간이 지난 후 테이블을 자동으로 삭제하려면 이벤트(Event)를 생성해야 합니다. 이벤트 스케줄러를 활용하면 지정한 시간에 원하는 작업을 자동으로 실행할 수 있습니다.기본 문법x시간 후에 테이블을 삭제하는 이벤트 생성 문법은 다음과 같습니다.CREATE EVENT yourEventNameON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL x HOURDODROP TABLE IF EXISTS yourTableName;예제 테이블 생성먼저 실습용 테이블을 하나 만들어 보겠습니다.mysql&
MySQL에서 긍정(양수) 투표와 부정(음수) 투표의 개수를 각각 집계하려면 CASE 문과 집계 함수인 SUM()을 함께 사용하면 됩니다. 이 방법은 조건에 따라 값을 분류한 뒤 합산하는 방식으로, 하나의 쿼리로 두 가지 결과를 동시에 얻을 수 있어 매우 효율적입니다. 1. 예제 테이블 생성하기 먼저 실습에 사용할 테이블을 생성합니다. mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Vote int ); Query OK, 0
개요MySQL에서는 CURRENT_TIMESTAMP를 사용하여 시스템의 현재 날짜와 시간을 컬럼의 기본값으로 설정할 수 있습니다. 이 기능은 레코드가 생성된 시각을 자동으로 기록해야 할 때 특히 유용합니다.예제 테이블 생성하기먼저 실습에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, ClientFirstName varchar(20), ClientLastName varchar(20),
MySQL에서 특정 쿼리 결과의 전체 행 수(row count)를 구하려면 집계 함수 COUNT(*)를 서브쿼리(subquery) 형태로 활용하면 됩니다. 이 방식은 메인 쿼리의 각 행마다 테이블의 총 행 수를 함께 출력할 수 있어, 목록 조회 시 전체 건수를 동시에 확인해야 하는 경우에 유용합니다. 1. 예제 테이블 생성 먼저 실습용 테이블을 생성합니다. mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, Stude
MySQL에서 URL의 일부를 추출하려면 SUBSTRING_INDEX() 함수를 사용하면 됩니다. 이 함수는 구분자를 기준으로 문자열을 나누고, 지정한 위치에 해당하는 부분을 반환합니다.아래에서 테이블 생성부터 실제 추출까지 단계별로 살펴보겠습니다.1단계: 테이블 생성먼저 URL을 저장할 테이블을 생성합니다.mysql> create table DemoTable( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, URL
MySQL에서 소수점 이하 3자리까지만 표시하고 싶다면 TRUNCATE() 함수를 사용하면 됩니다. TRUNCATE()는 숫자를 지정한 자릿수에서 잘라내기 때문에 반올림 없이 원하는 소수 자릿수를 그대로 유지할 수 있습니다.먼저 예제로 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Value DECIMAL(10,5) ); Query OK, 0 rows affected (0.51 sec)이제
MySQL에서 테이블의 마지막 5개 레코드를 ID 순서대로 오름차순으로 정렬해서 가져오고 싶다면 서브쿼리(subquery)를 활용하면 됩니다. 핵심 아이디어는 먼저 ID를 내림차순(DESC)으로 정렬해 최근 5개 행을 추출한 뒤, 그 결과를 다시 오름차순(ASC)으로 정렬하는 것입니다.1. 예제 테이블 생성하기먼저 실습에 사용할 간단한 테이블을 만들어 보겠습니다.mysql> create table DemoTable ( Id int ); Query OK, 0 rows affected (0.68 sec)2. 샘플 데이터 삽
MySQL에서 INFORMATION_SCHEMA.COLUMNS 뷰를 활용하면 데이터베이스 내에서 컬럼(열) 개수가 가장 많은 테이블을 손쉽게 조회할 수 있습니다. 이 방법은 시스템 카탈로그 정보를 집계하는 방식으로, 별도의 복잡한 설정 없이 간단한 쿼리 하나로 원하는 결과를 얻을 수 있습니다.기본 쿼리 문법컬럼 수가 가장 많은 테이블을 찾는 기본적인 쿼리 문법은 다음과 같습니다.SELECT TABLE_NAME, COUNT(*) AS anyAliasName FROM INFORMATION_SCHEMA.COLUMNS GROUP BY TA
MySQL에서 복잡한 형태의 INSERT 작업을 수행해야 할 때는 CONCAT() 함수를 활용하면 매우 유용합니다. 이번 글에서는 StudentId와 StudentFirstName 컬럼을 가진 테이블을 예시로 들어, 기존 테이블의 데이터를 다른 테이블로 연결하여 삽입하는 과정을 단계별로 살펴보겠습니다.복잡한 INSERT 작업을 실행하면 모든 값 앞에 Web Student라는 텍스트가 붙고, 각 행마다 고유한 StudentId가 함께 연결되어 저장됩니다.1단계: 첫 번째 테이블 생성먼저 예제에 사용할 첫 번째 테이블을 생성하는 쿼리는
MySQL에서 쉼표로 구분된 목록(comma-separated list)의 일부에 해당하는 레코드를 조회하려면 내장 함수인 FIND_IN_SET()을 사용하면 됩니다. 이 함수는 지정한 문자열이 쉼표로 구분된 목록 안에 존재하는지 확인하고, 존재할 경우 해당 위치(인덱스)를 반환합니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar
MySQL에서 모든 행에 걸쳐 한 필드의 데이터를 다른 필드로 복사하려면 UPDATE 명령어를 사용하면 됩니다. 이 방법은 기본값으로 설정된 컬럼을 나중에 실제 값으로 채워야 할 때 특히 유용합니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( StudentId int, StudentFirstName varchar(20), StudentMarks int default 0 ); Query OK, 0 rows affected
MySQL에서 서버의 기본 문자 집합(character set)을 확인하려면 시스템 변수인 character_set_server를 사용하면 됩니다. 이 변수는 현재 MySQL 서버에서 사용 중인 기본 문자 집합 값을 보여줍니다.기본 서버 문자 집합 확인하기다음과 같은 구문을 사용하면 기본 서버 문자 집합을 조회할 수 있습니다.SHOW VARIABLES LIKE character_set_server;기본 콜레이션(collation) 확인하기문자 집합뿐만 아니라 기본 콜레이션(정렬 규칙)도 확인할 수 있습니다. 이때는 collation
MySQL에서 기존 열의 값을 기반으로 계산된 결과를 담는 임시 열(가상 열)을 추가하고 싶다면 CASE 문을 활용하면 됩니다. CASE 문은 조건을 설정하여 각 행마다 다른 값을 반환할 수 있어, 쿼리 결과에 새로운 파생 열을 만드는 데 매우 유용합니다.예제 테이블 생성하기먼저 예제로 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY, EmployeeName varchar(
MySQL에서 IN() 조건으로 조회한 결과를 임의로 지정한 순서, 즉 사용자가 원하는 순서 그대로 표시하려면 FIELD() 함수를 함께 사용해야 합니다. IN()만 단독으로 사용하면 지정한 순서가 아닌 테이블 저장 순서나 기본 정렬 순서로 결과가 반환되기 때문입니다.1. 예제 테이블 생성먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( UserId int ); Query OK, 0 rows affected (0.64 sec)2. 데이터 삽입INSERT 명령을
MySQL 테이블에 저장된 모든 레코드를 대문자에서 소문자로 일괄 변환하려면 UPDATE 명령과 LOWER() 함수를 함께 사용하면 됩니다. 이 방법을 활용하면 여러 개의 컬럼 값을 한 번의 쿼리 호출로 손쉽게 변경할 수 있습니다.1. 테이블 생성하기먼저 실습용 테이블을 생성합니다.mysql> create table DemoTable ( Id varchar(100), StudentFirstName varchar(20), StudentLastName varchar(20), StudentCoun
MySQL에서 현재 시간 조회 후 GMT 0(UTC)으로 변환하기MySQL에서 now() 함수는 현재 세션에 설정된 시간대(time zone)를 기준으로 현재 날짜와 시간을 반환합니다. 만약 이 값을 GMT 0, 즉 UTC 기준 시간으로 변환하고 싶다면 utc_timestamp() 함수를 사용하면 됩니다.1. now()로 현재 시간 확인하기먼저 now() 함수를 사용해 현재 시간을 확인해 보겠습니다. 다음은 해당 쿼리입니다.mysql> select now();위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.+---------
MySQL에서 특정 테이블의 컬럼(필드) 이름과 해당 데이터 유형을 한 번에 확인하고 싶다면 INFORMATION_SCHEMA.COLUMNS 뷰를 활용하면 됩니다. 이 방법은 별도의 도구 없이 SQL 쿼리만으로 테이블 구조를 손쉽게 파악할 수 있어 매우 유용합니다.기본 문법컬럼 이름과 데이터 유형을 조회하는 기본적인 쿼리 문법은 다음과 같습니다.SELECT COLUMN_NAME, COLUMN_TYPEFROM INFORMATION_SCHEMA.COLUMNSWHERE TABLE_NAME = 테이블명;예제 테이블 생성실습을 위해 먼저 예