MySQL에서 마지막 20개 레코드를 오름차순으로 조회하기테이블에 저장된 데이터 중 마지막 20개의 레코드를 오름차순(ASC)으로 정렬하여 가져오려면 서브쿼리와 LIMIT 절을 함께 활용하면 됩니다. 핵심 아이디어는 간단합니다. 먼저 내부 쿼리에서 기준 컬럼을 내림차순(DESC)으로 정렬한 뒤 20개의 행만 추출하고, 그 결과를 외부 쿼리에서 다시 오름차순으로 정렬하는 방식입니다.기본 문법SELECT *FROM ( SELECT *FROM yourTableName ORDER BY yourColumnName desc limit
MySQL에서는 곱셈 연산자(*)를 사용하여 두 컬럼(셀)의 값을 손쉽게 곱할 수 있습니다. SELECT 문에서 두 컬럼을 나란히 조회하면서, 두 컬럼을 곱한 결과에 별칭(alias)을 붙여 새로운 결과 컬럼으로 출력하면 됩니다.기본 문법SELECT yourColumnName1, yourColumnName2, yourColumnName1 * yourColumnName2 AS anyVariableName FROM yourTableName;예제 테이블 생성문법을 실제로 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다. 아래 쿼리로
MySQL에서 SELECT 결과를 그대로 INSERT 할 수 있을까?결론부터 말하면 가능합니다. MySQL에서는 INSERT INTO ... SELECT 구문을 사용하면 다른 테이블의 조회(SELECT) 결과를 그대로 새 테이블에 삽입할 수 있습니다. 이때 일반적인 INSERT 문처럼 VALUES 절을 사용할 필요가 전혀 없다는 점이 핵심입니다.실제 동작 과정을 확인하기 위해 두 개의 테이블을 만들고, 두 번째 테이블의 데이터를 첫 번째 테이블로 복사해 보겠습니다.1단계: 첫 번째 테이블 생성먼저 데이터를 받아올 대상 테이블(Fir
Oracle에서는 || 연결(concatenation) 연산자를 사용해 문자열을 합칠 수 있습니다. 반면 MySQL은 연결 연산자 대신 CONCAT() 함수를 사용한다는 점이 가장 큰 차이입니다.예제용 테이블 생성하기CONCAT() 함수의 사용법을 이해하기 위해 먼저 간단한 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.mysql> create table ConcatenationDemo-> (-> Id int,-> Name varchar(100)-> );Query OK, 0 rows af
MySQL에서 키워드 검색을 구현하는 방법MySQL에서 특정 키워드가 포함된 데이터를 검색하려면 LIKE 연산자를 사용하는 것이 가장 일반적인 방법입니다. LIKE 연산자는 와일드카드 문자인 %(임의의 문자열)와 함께 사용되어, 컬럼 값에 특정 키워드가 포함되어 있는지 확인할 수 있습니다.기본 문법SELECT * FROM yourTableName WHERE yourColumnName LIKE %키워드명% OR yourColumnName LIKE %다른키워드%;여러 개의 키워드를 동시에 검색하려면 위와 같이 OR 조건을 연결하여 사용
MySQL에서 자동 증가(AUTO_INCREMENT) 값을 특정 지점부터 시작하도록 설정하려면 ALTER 명령어를 사용하면 됩니다. 기본 문법은 다음과 같습니다.ALTER TABLE yourTableName auto_increment = anySpecificPoint;예제 테이블 생성하기개념을 쉽게 이해하기 위해 먼저 테이블을 하나 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.mysql> create table AutoIncrementSpecificPoint -> ( -> BookId int a
MySQL에서 타임스탬프(timestamp) 데이터를 특정 날짜 범위로 조회하려면 WHERE 절과 함께 비교 연산자를 사용하면 됩니다. 이 글에서는 기본적인 날짜 범위 조회 방법부터 유닉스 타임스탬프(unix timestamp)를 다루는 방법까지 예제와 함께 자세히 알아보겠습니다.기본 문법타임스탬프 데이터의 날짜 범위를 선택할 때는 아래와 같은 문법을 사용합니다.SELECT * FROM yourTableNameWHERE yourDataTimeField >= anyDateRangeAND yourDataTimeField <
NULL 값을 먼저 표시하면서 내림차순 정렬하기MySQL에서 특정 컬럼을 기준으로 내림차순(DESC) 정렬하되, NULL 값이 있는 행을 가장 앞쪽에 배치하고 싶다면 IS NULL 연산자를 활용하면 됩니다. MySQL은 기본적으로 오름차순 정렬 시 NULL을 가장 먼저, 내림차순 정렬 시에는 NULL을 가장 마지막에 배치하기 때문에, 별도의 처리 없이는 원하는 결과를 얻기 어렵습니다.이때 사용할 수 있는 기본 구문은 다음과 같습니다.SELECT yourColumnNameFROM yourTableNameORDER BY yourColu
MySQL에서 문자열의 왼쪽 부분 분할하기MySQL에서는 SUBSTRING_INDEX() 함수를 사용하면 지정한 구분자를 기준으로 문자열의 왼쪽 부분을 간단하게 추출할 수 있습니다. 이 함수는 특정 구분 기호가 나타나기 전까지의 문자열을 반환해 주기 때문에, ==처럼 특수 문자로 구분된 데이터를 처리할 때 매우 유용합니다.기본 문법SUBSTRING_INDEX() 함수의 기본적인 사용 문법은 다음과 같습니다.SELECTyourColumnName1, .....N,SUBSTRING_INDEX(yourColumnName, yourSeper
MySQL 5.0 이상 버전에서 int와 integer는 완전히 동일한 데이터 타입입니다. 즉, int는 integer의 동의어(synonym)이며, 두 타입 모두 내부적으로 int(11)로 표현됩니다. 아래 예제를 통해 두 데이터 타입이 실제로 동일하게 처리되는지 직접 확인해 보겠습니다.INT 데이터 타입으로 테이블 생성하기먼저 int 데이터 타입을 사용하는 테이블을 생성합니다.mysql> create table IntDemo -> ( -
MySQL의 저장 프로시저(Stored Procedure)는 입력용 매개변수(IN)와 출력용 매개변수(OUT)를 함께 사용할 수 있습니다. 이번 글에서는 하나의 매개변수로 값을 입력받고(IN), 두 번째 매개변수로 결과를 반환하는(OUT) 저장 프로시저를 만드는 방법을 알아보겠습니다.1. IN과 OUT 매개변수가 있는 저장 프로시저 생성아래 예제는 정수 하나를 입력받아 제곱근을 계산한 뒤, OUT 매개변수를 통해 결과를 반환하는 저장 프로시저입니다.mysql> delimiter //mysql> create procedur
MySQL에서 바이너리 로그(binary log)는 데이터 변경 이력을 기록하는 중요한 기능으로, 복제(Replication) 구성이나 특정 시점 복구(Point-in-Time Recovery)에 필수적으로 사용됩니다. 그렇다면 SQL 명령어만으로 현재 서버에서 바이너리 로그가 활성화되어 있는지 어떻게 확인할 수 있을까요?SHOW VARIABLES 명령어로 확인하기MySQL에서는 SHOW VARIABLES 명령어를 사용하여 서버의 다양한 시스템 변수 값을 조회할 수 있습니다. 바이너리 로그 활성화 여부는 log_bin 변수를 통해
MySQL에서 SUM()은 대표적인 집계 함수(Aggregate Function) 중 하나로, 특정 열의 값들을 모두 더한 합계를 구할 때 사용합니다. 이 SUM() 함수는 IF() 조건문과 함께 활용하면 훨씬 더 유연하게 데이터를 집계할 수 있습니다. 예를 들어, 특정 조건을 만족하는 행만 골라서 합계를 구하거나, 조건별로 서로 다른 값을 더하는 것이 가능합니다.이번 글에서는 IF 조건이 포함된 SUM 쿼리를 실제 예제와 함께 단계별로 살펴보겠습니다.1. 예제 테이블 생성하기먼저 IF 조건과 함께 SUM 쿼리를 연습해 볼 수 있도
MySQL에서 특정 열(column)의 값들을 모두 더하고 싶다면 집계 함수인 SUM()을 사용하면 됩니다. SUM()은 지정한 열의 전체 행 값을 합산하여 하나의 결과값으로 반환하는 가장 기본적이고 널리 쓰이는 함수입니다.SUM() 함수 기본 문법여러 개의 열을 동시에 합산할 수도 있으며, AS 키워드를 이용해 결과 열에 별칭(alias)을 붙이면 출력 결과를 더 읽기 쉽게 만들 수 있습니다.SELECT SUM(열이름1) AS 별칭1, SUM(열이름2) AS 별칭2, SUM(열이름3) AS 별칭3FROM 테이
MySQL에서 테이블 TRUNCATE 시 외래 키 제약 오류 해결하기MySQL에서 여러 테이블 사이에 외래 키(Foreign Key) 관계가 설정되어 있다면, 해당 테이블에 TRUNCATE 명령을 바로 실행할 때 제약 조건 위반 오류가 발생할 수 있습니다. 이런 경우에는 먼저 FOREIGN_KEY_CHECKS를 비활성화(0으로 설정)한 뒤 테이블을 잘라내고(truncate), 작업이 끝나면 다시 활성화(1로 설정)해야 합니다.기본 문법여러 개의 테이블을 한 번에 비우고 싶다면 아래와 같은 순서로 쿼리를 작성하면 됩니다.SET FOR
SQL 스크립트 실행 중 에코 출력문 사용하기SQL 스크립트를 실행하는 도중에 메시지나 상태를 화면에 출력(에코)하려면 SELECT 문을 활용하면 됩니다. 별도의 PRINT 명령어 없이도 간단한 SELECT 구문으로 원하는 문자열을 결과 집합 형태로 표시할 수 있습니다.기본 문법에코 출력을 위한 기본 문법은 다음과 같습니다.SELECT 출력할_문자열 AS ;기본 예제실제 쿼리를 통해 확인해 보겠습니다.mysql> select This is a SQL Script AS ;위 쿼리의 실행 결과는 다음과 같습니다.+---------
MySQL 명령줄에서 결과가 가로로 길게 출력되어 보기 불편할 때가 있습니다. 이럴 때는 쿼리 끝에 세미콜론(;) 대신 \G를 붙여주면 됩니다. \G를 사용하면 각 레코드가 세로(행) 형식으로 정렬되어 훨씬 읽기 편해집니다.\G 사용 문법SELECT *FROM yourTableName \G예제 테이블 생성먼저 CREATE 문으로 예제 테이블 StudentTable을 만들어 보겠습니다.mysql> create table StudentTable -> ( &nbs
MySQL에서 DATETIME 필드에 저장된 시간 정보는 무시하고 날짜만 비교해야 하는 경우가 자주 있습니다. 예를 들어 로그인 기록에서 특정 날짜의 데이터만 조회하고 싶다면, 시·분·초까지 일치할 필요는 없겠죠.이럴 때 DATE() 함수를 사용하면 간단하게 해결할 수 있습니다. 기본 문법은 다음과 같습니다.SELECT * FROM 테이블명 WHERE DATE(컬럼명) = 비교할날짜;예제 테이블 생성하기개념을 이해하기 위해 먼저 샘플 테이블을 만들어 보겠습니다. 아래 쿼리로 사용자 이름과 로그인 시간을 저장하는 테이블을 생성합니다.
MySQL에서 레코드를 무작위로 추출한 후, 그 결과를 특정 컬럼(예: 이름) 기준으로 오름차순 정렬해야 하는 경우가 있습니다. 이럴 때는 서브쿼리(subquery)를 활용하면 간단하게 해결할 수 있습니다. 무작위 추출에는 rand() 함수를 사용하고, 최종 정렬에는 ORDER BY 절을 사용합니다.기본 문법먼저 내부 서브쿼리에서 ORDER BY rand()와 LIMIT로 레코드를 무작위로 가져온 뒤, 외부 쿼리에서 원하는 컬럼 기준으로 다시 정렬하는 구조입니다.select *from ( select *from yourTab
MySQL에서 분리된 날짜 필드를 하나의 DATE 값으로 합치기데이터베이스 설계 과정에서 일(Day), 월(Month), 연도(Year)가 각각 별도의 컬럼으로 저장되어 있는 경우가 종종 있습니다. 이렇게 나누어진 값을 정렬, 비교, 범위 검색 등에 활용하려면 하나의 날짜(DATE) 형식으로 변환해야 하는데요. MySQL에서는 내장 함수인 STR_TO_DATE()와 CONCAT(), LPAD()를 조합하면 아주 간단하게 해결할 수 있습니다.기본 문법먼저 기본적인 쿼리 구조부터 살펴보겠습니다.SELECTSTR_TO_DATE(CONCA