개발노트

고즐의 개발 및 서버 개발 노트

자주 사용하는 SQL 필수 쿼리 총정리

# SQL필수쿼리 # CRUD명령어 # JOIN활용 # 인덱스최적화 # 날짜함수

SQL 2025.11.24 31 회 읽음
SQL 10일 전 31 회 읽음



자주 사용하는 SQL 쿼리를 한눈에 정리한 실전 가이드입니다. CRUD, JOIN, 정렬, 페이징, 날짜 처리, 인덱스 등 웹 개발과 서버 운영에서 반드시 필요한 핵심 명령어들을 누구나 이해하기 쉽게 풀어 설명했습니다.




자주 쓰는 SQL 기본 명령어 정리

CRUD와 조회 중심의 핵심 쿼리

SELECT 조회 기본 구조

데이터 조회에 사용되는 SELECT 문은 모든 SQL 작성의 출발점이자 CRUD 중 가장 많이 활용되는 명령어입니다. 특정 컬럼만 지정할 수 있고, WHERE 조건을 조합해 원하는 데이터만 효율적으로 가져올 수 있습니다.

SELECT * FROM users;
SELECT id, name, email 
FROM users 
WHERE status = 'active';


INSERT로 새로운 데이터 저장

INSERT 문은 데이터 추가 시 사용되며, 지정한 컬럼에 맞는 값을 정확하게 순서대로 입력해야 합니다. 실무에서는 입력 누락이나 데이터 불일치를 방지하기 위해 컬럼명을 명시하는 방식이 표준입니다.

INSERT INTO users (name, email, status)
VALUES ('홍길동', 'test@example.com', 'active');


UPDATE로 기존 데이터 수정

UPDATE 문은 기존 데이터의 특정 값을 수정할 때 활용됩니다. WHERE 조건을 누락하면 전체 데이터가 수정되는 오류가 발생할 수 있어 매우 주의해야 하며, ERP나 관리자 페이지 등 관리 기능에 필수적입니다.

UPDATE users 
SET status = 'inactive' 
WHERE id = 10;


DELETE로 데이터 삭제

DELETE 명령어는 데이터를 테이블에서 삭제하는 기능을 수행합니다. 삭제된 데이터는 복구가 쉽지 않기 때문에 실제 운영 환경에서는 논리삭제(삭제 플래그)를 선호하는 경우도 많습니다.

DELETE FROM users WHERE id = 10;


조건, 정렬, 페이징 등 실무 필수 SQL

WHERE, ORDER BY, LIMIT 활용

조건 검색 WHERE

WHERE 절은 특정 기준에 맞는 데이터를 걸러내기 위한 필터 역할을 수행합니다. 다양한 연산자와 조합하여 복잡한 조건을 처리할 수 있으며, INDEX와 함께 사용하면 성능 최적화에도 큰 도움이 됩니다.

SELECT * 
FROM orders 
WHERE amount > 10000 
  AND status = 'paid';


정렬 ORDER BY 기본

ORDER BY는 최신순, 인기순, 가격순 등 원하는 방식으로 데이터를 정렬하는 데 사용됩니다. ASC는 오름차순, DESC는 내림차순을 의미하며, 리스트 출력 시 가장 널리 활용됩니다.

SELECT * 
FROM products 
ORDER BY created_at DESC;


페이징 LIMIT/OFFSET

대량 데이터를 출력할 때 LIMIT와 OFFSET을 조합하여 페이지 단위로 나누어 출력할 수 있습니다. PHP·Node·Python 등 대부분의 백엔드에서 사용되는 전통적이고 안정적인 방식입니다.

SELECT * 
FROM posts 
ORDER BY id DESC 
LIMIT 0, 20;


JOIN, 날짜 처리, 인덱스 최적화

테이블 결합과 성능 향상 핵심 요소

LEFT JOIN 활용

LEFT JOIN은 기준 테이블의 모든 행을 가져오면서 연관된 데이터가 있으면 결합하는 방식입니다. 게시판 첨부파일, 상품-카테고리 관계, ERP 연동 데이터 등 실무 대부분에서 사용되는 가장 강력한 JOIN 방식입니다.

SELECT A.id, A.title, B.file_path
FROM post A
LEFT JOIN file B ON A.id = B.post_id;


날짜 관련 함수 활용

DATE, NOW, DATE_SUB 같은 날짜 함수는 통계, 부과월 계산, 검침 기록 비교 등에서 자주 등장합니다. 최근 7일, 전월 대비, 특정 기간 조회 등 효율적인 날짜 필터링이 가능합니다.

SELECT *
FROM visit
WHERE created_at >= DATE_SUB(NOW(), INTERVAL 7 DAY);


INDEX로 속도 최적화

INDEX는 데이터베이스 성능을 결정하는 핵심 요소입니다. WHERE, JOIN, ORDER BY에서 자주 사용하는 컬럼에 인덱스를 추가하면 조회 속도가 크게 향상되며, 테이블 크기가 커질수록 그 효과는 더욱 커집니다.

ALTER TABLE users 
ADD INDEX idx_status (status);