개발노트
고즐의 개발 및 서버 개발 노트자주 사용하는 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);