SQL) LAST_INSERT_ID() , MAX()

Songss·2024년 12월 18일

DBMS

목록 보기
16/20

LAST_INSERT_ID()

LAST_INSERT_ID()는 MySQL 및 MariaDB에서 마지막으로 삽입된 AUTO_INCREMENT 값을 반환하는 함수입니다. 주로 INSERT 쿼리 이후에 사용하여, 방금 삽입된 행의 고유 ID를 가져올 때 활용됩니다.

사용 문법

SELECT LAST_INSERT_ID();

주요 특징

  1. 현재 세션(session) 기준: LAST_INSERT_ID()는 현재 세션에서만 유효합니다. 다른 세션에서 삽입된 데이터의 ID에는 영향을 받지 않습니다.
  2. AUTO_INCREMENT 필드만 해당: AUTO_INCREMENT로 정의된 필드가 있는 테이블에서만 동작합니다.

사용 예제

CREATE TABLE TestTable (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50)
);

-- 데이터 삽입
INSERT INTO TestTable (name) VALUES ('Alice');
INSERT INTO TestTable (name) VALUES ('Bob');

-- 마지막 삽입된 ID 가져오기
SELECT LAST_INSERT_ID();

위 쿼리를 실행하면 2가 반환됩니다. (Bob의 ID)

주의사항

  • LAST_INSERT_ID()는 INSERT가 성공적으로 실행된 경우에만 값을 반환합니다.
  • 만약 AUTO_INCREMENT가 아닌 값으로 삽입하면 LAST_INSERT_ID()는 영향을 받지 않습니다.

MAX()

주요특징

MAX()는 SQL에서 사용되는 집계 함수로, 특정 컬럼에서 가장 큰 값(최대값)을 반환합니다. 숫자, 날짜, 문자열과 같은 여러 데이터 유형에서 사용할 수 있으며, 데이터 집합의 최댓값을 구할 때 유용합니다.
즉, LAST_INSERT_ID는 AUTO_INCREMENT에서만 가능한 점과의 차이가 있습니다.

  1. 숫자 데이터: 최대 숫자 값을 반환합니다.
  2. 날짜 데이터: 가장 최근 날짜(최대 날짜)를 반환합니다.
  3. 문자 데이터: 문자열을 사전순으로 비교하여 최대값(가장 뒤에 오는 값)을 반환합니다.
  4. NULL 무시: 해당 컬럼에 NULL 값이 있으면 무시됩니다.

사용 예제

CREATE TABLE Scores (
    id INT,
    score INT
);

INSERT INTO Scores (id, score) VALUES
(1, 85),
(2, 90),
(3, 78);

-- 최대 점수 구하기
SELECT MAX(score) AS max_score FROM Scores;

결과 :

max_score
---------
90

주의사항

  1. MAX()집계 함수이므로, SELECT에서 단독으로 사용하거나 GROUP BY와 함께 사용해야 합니다.
SELECT MAX(score) FROM Scores; -- O
SELECT MAX(score), id FROM Scores; -- X (GROUP BY가 필요)
  1. MAX()는 NULL 값을 무시합니다. 만약 NULL도 처리해야 한다면, COALESCE() 같은 함수를 활용할 수 있습니다.

0개의 댓글