SELECT 문이란?
SELECT 문의 기본 구조
SELECT 문은 데이터베이스에서 원하는 데이터를 조회하는 데 사용됩니다. 기본 구조는 다음과 같습니다:
SELECT 열1, 열2, ...
FROM 테이블명
WHERE 조건
ORDER BY 열1 [ASC|DESC]
LIMIT 숫자;
주요 구성 요소
- SELECT: 조회할 열(컬럼)을 지정합니다.
- FROM: 데이터를 가져올 테이블을 지정합니다.
- WHERE: 특정 조건에 맞는 행(레코드)을 선택합니다.
- ORDER BY: 결과를 정렬합니다.
- LIMIT: 반환할 행의 수를 제한합니다.
이러한 기본 구조를 잘 이해하고 응용하면, 복잡한 데이터 조회도 손쉽게 처리할 수 있습니다. 특히 대규모 데이터베이스에서 효율적인 쿼리를 작성하려면 이 구조를 탄탄히 이해하는 것이 중요합니다.
WHERE 절: 데이터 필터링의 핵심
데이터를 필터링할 때 WHERE 절을 사용하여 조건을 지정할 수 있습니다. 다양한 연산자와 키워드로 복잡한 조건을 표현할 수 있습니다. 필터링은 필요한 데이터만 추출하여 처리 속도를 높이고, 분석을 단순화하는 데 큰 도움을 줍니다.
주요 연산자와 활용
비교 연산자
=
: 값이 같은 경우!=
,<>
: 값이 다른 경우<
,>
,<=
,>=
: 대소 비교
예시:
SELECT * FROM 직원 WHERE 나이 > 30;
논리 연산자
AND
: 모든 조건이 참일 때OR
: 하나 이상의 조건이 참일 때
예시:
SELECT * FROM 직원 WHERE 부서 = '인사' AND 급여 > 50000;
범위 검사
BETWEEN ... AND ...
: 특정 범위 내 값
예시:
SELECT * FROM 제품 WHERE 가격 BETWEEN 1000 AND 2000;
NULL 확인
IS NULL
또는IS NOT NULL
로 NULL 값을 필터링
예시:
SELECT * FROM 주문 WHERE 배송일 IS NULL;
패턴 매칭
LIKE
와 와일드카드(%
,_
)
예시:
SELECT * FROM 고객 WHERE 이름 LIKE '김%';
복합 조건 활용
WHERE 절은 위 연산자들을 조합하여 더욱 정교한 조건을 표현할 수 있습니다. 예를 들어, 나이가 30 이상이면서 부서가 '개발'인 직원을 찾으려면 다음과 같이 작성할 수 있습니다:
SELECT 이름, 나이 FROM 직원 WHERE 나이 >= 30 AND 부서 = '개발';
복잡한 조건을 설정할 때는 괄호를 사용하여 논리적 순서를 명확히 해야 합니다.
추가 예제
- 특정 성별과 급여 조건을 만족하는 직원 조회:
SELECT 이름, 직급 FROM 직원 WHERE 성별 = '여' AND 급여 > 4000;
- 이름에 특정 문자열이 포함된 고객 조회:
SELECT * FROM 고객 WHERE 이름 LIKE '%민%';
- 부서가 '개발' 또는 '마케팅'에 해당하는 직원 조회:
SELECT 이름, 부서 FROM 직원 WHERE 부서 IN ('개발', '마케팅');
ORDER BY 절: 데이터 정렬
ORDER BY 절은 데이터를 특정 열의 값에 따라 정렬합니다. 기본적으로 오름차순(ASC)이며, 내림차순은 DESC 키워드를 사용합니다.
주요 활용 방법
단일 열 정렬
SELECT 이름, 나이 FROM 직원 ORDER BY 나이 ASC;
다중 열 정렬
SELECT 이름, 급여 FROM 직원 ORDER BY 급여 DESC, 이름 ASC;
NULL 값 처리
- NULL 값은 기본적으로 오름차순에서는 가장 위, 내림차순에서는 가장 아래에 위치합니다.
추가 예제
- 직원 테이블에서 급여가 높은 순으로 정렬하고, 동일한 급여에서는 이름을 기준으로 오름차순 정렬:
SELECT 이름, 직급, 급여 FROM 직원 ORDER BY 급여 DESC, 이름 ASC;
- 주문 데이터를 최신 날짜 순으로 정렬:
SELECT 주문번호, 주문일자 FROM 주문 ORDER BY 주문일자 DESC;
- 고객 이름을 가나다순으로 정렬:
SELECT 이름, 연락처 FROM 고객 ORDER BY 이름 ASC;
LIMIT 절: 결과 제한
LIMIT 절은 반환되는 결과의 행 수를 제한합니다. 특히 대규모 데이터에서 유용하며, OFFSET 키워드와 함께 페이지네이션에도 활용됩니다.
주요 활용 방법
단순 제한
SELECT * FROM 고객 LIMIT 5;
OFFSET과 함께 사용
SELECT * FROM 고객 LIMIT 5 OFFSET 5;
또는:
SELECT * FROM 고객 LIMIT 5, 5;
추가 예제
- 상위 2명의 직원 데이터를 가져오기:
SELECT * FROM 직원 ORDER BY 급여 DESC LIMIT 2;
- 페이지네이션:
SELECT * FROM 직원 ORDER BY 이름 ASC LIMIT 10 OFFSET 20;
- 최근 데이터 가져오기:
SELECT * FROM 로그 ORDER BY 생성일자 DESC LIMIT 10;
종합 예제
다음과 같은 직원 테이블이 있다고 가정해봅시다:
ID | 이름 | 직급 | 급여 |
---|---|---|---|
1 | 김철수 | 매니저 | 5000 |
2 | 이영희 | 사원 | 3000 |
3 | 박민수 | 매니저 | 6000 |
4 | 최지혜 | 부장 | 7000 |
사례 1: 모든 직원 데이터 조회
SELECT * FROM 직원;
사례 2: 매니저들의 급여 정보
SELECT 이름, 급여 FROM 직원 WHERE 직급 = '매니저';
사례 3: 급여 순서대로 정렬된 상위 2명의 직원
SELECT 이름, 급여 FROM 직원 ORDER BY 급여 DESC LIMIT 2;
사례 4: 특정 조건과 정렬, 제한을 함께 적용
급여가 4000 이상인 직원 중 상위 3명:
SELECT 이름, 직급, 급여 FROM 직원 WHERE 급여 >= 4000 ORDER BY 급여 DESC LIMIT 3;
결론
SQL의 SELECT 문은 데이터 검색의 기본이자 핵심입니다. WHERE 절로 데이터를 필터링하고, ORDER BY 절로 정렬하며, LIMIT 절로 원하는 데이터의 양을 제어함으로써 효율적으로 데이터를 추출할 수 있습니다. 이러한 기능을 조합하여 복잡한 데이터 분석 요구사항을 해결할 수 있습니다. 위 예제들을 실습하며 SQL 활용 능력을 더욱 향상시켜 보세요.
'데이타베이스 > SQL' 카테고리의 다른 글
SQL 조인(JOIN)의 완벽 가이드: 데이터베이스 테이블 결합의 모든 것 (0) | 2025.01.28 |
---|---|
SQL 데이터 조작 명령어: INSERT, UPDATE, DELETE (0) | 2025.01.28 |
SQL 기초: 데이터베이스, 테이블, 데이터 타입과 SQL 문법 (0) | 2025.01.27 |
사용자 권한 관리와 데이터베이스 보안: 안전한 데이터 관리를 위한 가이드 (0) | 2025.01.27 |
SQL 성능 최적화: 쿼리와 인덱스 (0) | 2025.01.27 |