SELECT 문이란?
SQL에서 데이터를 조회할 때 사용하는 키워드다. 즉, 테이블에 저장된 데이터를 "읽어오는" 역할을 한다.
많은 초보자들이 SQL을 '어떻게 가져올까?'에 집중하지만, 사실 핵심은 '무엇을 가져올 것인가'이다. 이 점에서 SELECT는 단순하지만 데이터 활용의 출발점이 된다.
SELECT 문 기본 구조 (작성 순서)
SELECT 열목록
FROM 테이블명
WHERE 조건식
GROUP BY 그룹화_열
HAVING 그룹_조건
ORDER BY 정렬_열
LIMIT 제한_숫자
각 키워드는 순서가 정해져 있으며, 선택적으로 생략 가능하다. 하지만 MySQL 내부에서 실행되는 처리 순서는 아래와 같다
FROM → JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
1. 전체 컬럼 조회
SELECT * FROM members;
*은 모든 컬럼을 가져온다는 뜻이다. 이는 전체를 가지고 오는 것이기 때문에 필요한 컬럼만 명시적으로 가져오는 것이 좋다.
SELECT name, contact FROM members;
위와 같이 표시하면 member 이라는 테이블에서 name 과 contact 의 컬럼만 가져온다는 뜻이다.
2. 컬럼에 별칭 부여하기(alias)
컬럼명을 출력 시 읽기 쉬운 형태로 변경하고 싶다면 AS 키워드를 사용하면 된다.
SELECT
member_id AS 고유번호,
name AS '회원 이름',
contact AS '회원 연락처'
FROM members;
AS는 생략도 가능하지만, 가독성을 위해 사용하는 걸 추천한다. 공백이 포함된 별칭은 작은따옴표(') 또는 큰따옴표(")로 감싸야 한다.
3. WHERE 절 : 조건을 이용한 필터링
조건문을 통해 특정 데이터만 골라서 조회할 수 있다.
SELECT name, points FROM members
WHERE points > 200;
자주 사용되는 조건 연산자는 다음과 같다:
- = : 같음
- != 또는 <> : 같지 않음
- > : 초과
- < : 미만
- >= : 이상
- <= : 이하
여러 조건을 결합하고 싶을 때는 논리 연산자를 사용한다:
- AND: 모든 조건이 참일 때
- OR: 하나라도 참이면
- NOT: 조건의 반대
SELECT * FROM members
WHERE area_code = 'Jeju' AND points > 400;
4. NULL 값 다루기
NULL은 값이 없는 상태를 의미하며, 일반 연산자로 비교할 수 없다.
- IS NULL: NULL인지 확인
- IS NOT NULL: NULL이 아닌지 확인
SELECT * FROM members
WHERE points IS NULL;
5. 범위와 포함 조건
BETWEEN A AND B
숫자나 날짜가 특정 범위에 속하는지 확인할 때 사용한다.
SELECT * FROM members
WHERE points BETWEEN 200 AND 400;
IN 연산자
OR 조건을 간단하게 표현할 수 있다.
SELECT * FROM members
WHERE area_code IN ('Seoul', 'Busan', 'Jeju');
6. LIKE 연산자 : 문자열 검색
LIKE는 문자열에서 일부 패턴을 검색할 때 사용한다. 와일드카드를 활용해 유연한 검색이 가능하다.
- % : 0개 이상의 임의의 문자
- _ : 정확히 1개의 임의의 문자
-- 이름이 'J'로 시작하는 사람
SELECT * FROM members
WHERE name LIKE 'J%';
-- 이름이 4글자인 사람
SELECT * FROM members
WHERE name LIKE '____';
-- 이름 안에 'un'이 포함된 사람
SELECT * FROM members
WHERE name LIKE '%un%';
7. 날짜 조건 조회
날짜는 'YYYY-MM-DD' 형식으로, 시간은 'HH:MM:SS'로 표현한다. 기본 비교는 =, !=, >, <처럼 일반 연산자를 사용할 수 있고, BETWEEN도 자주 사용된다.
-- 특정 날짜 조회
SELECT * FROM members
WHERE join_date = '2022-01-02';
-- 날짜 범위 조회
SELECT * FROM members
WHERE join_date BETWEEN '2023-06-01' AND '2025-01-01';
또는 날짜의 일부(연, 월, 일)만 조건으로 추출할 수도 있다.
SELECT * FROM members
WHERE YEAR(join_date) = 2022;
SELECT * FROM members
WHERE MONTH(join_date) = 5;
8. 현재 날짜 기준 조회
CURDATE() 또는 NOW()를 사용하면 현재 날짜 및 시간을 기준으로 조건을 만들 수 있다.
-- 오늘 이전에 가입한 회원
SELECT * FROM members
WHERE join_date < CURDATE();'웹개발 > SQL(mySQL)' 카테고리의 다른 글
| MySQL - JOIN 이해하기 (0) | 2025.06.19 |
|---|---|
| MySQL SubQuery 활용 (1) | 2025.06.18 |
| MySQL DML 문법 (INSERT, UPDATE, DELETE) (0) | 2025.06.16 |
| MySQL 제약조건(Constraints) (4) | 2025.06.15 |
| 무결성(Integrity) (1) | 2025.06.14 |