1. WHERE 조건절 개요
- 원하는 자료만 검색하기 위해 SQL문에 WHERE 절을 사용하여 자료를 제한할 수 있다.
SELECT [DISTINCT/ALL] 컬럼명 [ALIAS명]
FROM 테이블명
WHERE 조건식;
WHERE 절은 FROM 절 다음에 위치하며, 조건식은 아래 내용으로 구성된다.
- 컬럼명(보통 조건식의 좌측에 위치)
- 비교 연산자
- 문자 숫자 표현식(보통 조건식의 우측에 위치)
- 비교 컬럼명(JOIN 사용시)
2. 연산자의 종류
# 연산자의 우선순위
3. 비교 연산자
# 비교 연산자의 종류
# 비교 연산자의 주의할 점
- CHAR, VARCHAR2 와 같은 문자형 타입을 가진 컬럼을 특정 값과 비교하기 위해서는 작은따옴표, 큰 타옴표로 비교 처리
- NUMERIC 같은 숫자형 형태의 값은 인용 부호(작은따옴표, 큰따옴표)를 사용하지 않는다.
- 비교 대상 데이터 타입에 따로 자동으로 형이 변환하는 경우가 있다.
# 문자 유형 비교 방법
소속팀이 삼성블루윙즈 이거나 전남드래곤즈에 소속된 선수들이어야 하고, 포지션이 미드필더(MF) 이어야 한다.
키는 170 이상 180 이하여야한다. 라는 것을 SQL문으로 하나씩 작성해보자.
1) 소속팀이 삼성블루윙즈인 선수 (삼성블루윙즈 팀 코드를 K01 로 가정)
SELECT PLAYER_NAME AS 선수이름, POSITION AS 포지션, BACK_NO AS 백넘버, HEIGHT AS 키
FROM PLAYER
WHERE TEAM_ID = 'K01' ;
2) 소속팀이 전남드래곤즈인 선수 (전남드래곤즈 팀 코드를 K02 로 가정)
SELECT PLAYER_NAME AS 선수이름, POSITION AS 포지션, BACK_NO AS 백넘버, HEIGHT AS 키
FROM PLAYER
WHERE TEAM_ID = 'K02' ;
3) 포지션이 미드필더 (MF)
SELECT PLAYER_NAME AS 선수이름, POSITION AS 포지션, BACK_NO AS 백넘버, HEIGHT AS 키
FROM PLAYER
WHERE POSITION = 'MF' ;
4) 키가 170 이상
SELECT PLAYER_NAME AS 선수이름, POSITION AS 포지션, BACK_NO AS 백넘버, HEIGHT AS 키
FROM PLAYER
WHERE HEIGHT >= 170 ;
5) 키가 180 이하
SELECT PLAYER_NAME AS 선수이름, POSITION AS 포지션, BACK_NO AS 백넘버, HEIGHT AS 키
FROM PLAYER
WHERE HEIGHT <= 180 ;
4. SQL 연산자
- SQL 문장에서 사용하도록 기본적으로 예약되어 있는 연산자로써 모든 데이터 타입에 대해서 연산이 가능
# SQL 연산자의 종류
# LIKE 연산자에서 와일드카드
- 한 개 혹은 0개 이상의 문자를 대신해서 사용하기 위한 특수문자를 의미
- "%" : 0개 이상의 어떤 문자를 의미
- "_" : 1개인 단일 문자를 의미
ex) "장" 씨 성을 가진 선수들의 정보를 조회하는 WHERE 절을 작성한다.
쿼리문 결과)
# IS NULL 연산자
- NULL(ASCII 00)은 값이 존재하지 않는 것으로 확정되지 않은 값을 표현할 때 사용
- NULL 값과의 수치연산은 NULL 값을 리턴
- NULL 값과의 비교연산은 거짓(FALSE)를 리턴
- 어떤 값과 비교할 수도 없으며, 특정 값보다 크다, 적다고 표현할 수 없다.
5. 논리 연산자
- 비교 연산자나 SQL 비교 연산자들로 이루어진 여러개의 조건들을 논리적으로 연결시키기 위해서 사용되는 연산자
# 논리 연산자의 우선순위
( ) → NOT → AND → OR
논리 연산자를 사용해서
소속팀이 삼성블루윙즈 이거나 전남드래곤즈에 소속된 선수들이어야 하고, 포지션이 미드필더(MF) 이어야 한다.
키는 170 이상 180 이하여야한다. 라는 것을 SQL문을 작성해보자.
SELECT PLAYER_NAME AS 선수이름, POSITION AS 포지션, BACK_NO AS 백넘버, HEIGHT AS 키
FROM PLAYER
WHERE (TEAM_ID = 'K01' OR TEAM_ID 'K02')
AND POSITION = 'MF;
AND HEIGHT >= 170
AND HEIGHT <= 180 ;
6. 부정 연산자
- 비교 연산자, SQL 비교 연산자에 대한 부정 표현을 부정 논리 연산자, 부정 SQL 연산자로 구분할 수 있다.
7. ROWNUM, TOP 사용
# ROWNUM
- 테이블이나 집합에서 원하는만큼의 행만 가져오고 싶을 때 WHERE 절에서 행의 개수를 제한하는 목적으로 사용
- 한 건의 행만 가져오고 싶을 때
ex) SELECT PALYER_NAME FROM PLAYER WHERE ROWNUM = 1;
ex) SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= 1;
ex) SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <2;
- 두 건 이상의 N행을 가져오고 싶을 때 ROWNUM = N; 처럼 사용할 수 없고 아래와 같이 사용
ex) SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= N;
ex) SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= N+1; → 행의 한계를 지정할 수 있다.
- 테이블 내의 고유한 키나 인덱스 값을 만들 수 있다.
ex) UPDATE MY_TABLE SET COLUMN1 = ROWNUM;
# TOP 절
- SQL Server는 TOP 절을 사용하여 결과 집합으로 출력되는 행의 수를 제한할 수 있다.
- Expression : 반환할 행의 수를 지정하는 숫자이다.
- PERCENT : 쿼리 결과 집합에서 처음 Expression%의 행만 반환됨을 나타낸다.
- WITH TIES : ORDER BY 절이 지정된 경우에만 사용할 수 있으며, TOP N(PERCENT)의 마지막 행과 같은 값이 있는 경우 추가 행이 출력되도록 지정할 수 있다.
ex) 두 건 이상의 N 행을 가져오고 싶을 때는
SELECT TOP(N) PLAYER_NAME FROM PLAYER; 처럼 출력되는 행의 개수를 지정할 수 있다.
'데이터베이스(DB) > SQLD' 카테고리의 다른 글
[SQLD 2-1-6] SQL 기본 - ORDER BY 절 (36) | 2024.05.19 |
---|---|
[SQLD 2-1-5] SQL 기본 - GROUP BY, HAVING 절 (39) | 2024.05.18 |
[SQLD 2-1-3] SQL 기본 - 함수 (48) | 2024.05.16 |
[SQLD 2-1-2] 데이터 모델과 SQL - SELECT 문 (41) | 2024.05.15 |
[SQLD 2-1-1] SQL 기본 - 관계형 데이터베이스 개요 (39) | 2024.05.14 |