[DB] DML: 검색문 SELECT의 WHERE절

젠니·2023년 5월 27일
0

데이터베이스

목록 보기
5/21

2. WHERE절

Format

SELECT 	[ALL|DISTINCT] {{컬럼명 [[AS] 컬럼_별칭],}⁺|*}
FROM 	테이블_리스트
[WHERE 	투플_조건식];

WHERE절은 셀렉트 연산자를 사용한다.

집계 함수는 WHERE절에 사용할 수 없다.

비교 연산자

  • =, >, <, >=, <=

논리 연산자

  • AND
SELECT 	PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM 	PLAYER
WHERE 	(TEAM_ID = 'K02' OR TEAM_ID = 'K07') AND
		POSITION = 'MF' AND
		HEIGHT >= 170 AND HEIGHT <= 180;
  • OR
SELECT 	PLAYER_NAME, TEAM_ID, POSITION, NATION
FROM 	PLAYER
WHERE	(POSITION, NATION) = ('MF','브라질') OR
		(POSITION, NATION) = ('FW','러시아');
  • NOT

SQL 연산자

  • BETWEEN a AND b, NOT BETWEEN a AND b
  • IN (list), NOT IN (list): OR과 같은 역할을 한다.
SELECT 	PLAYER_NAME, TEAM_ID, POSITION, NATION
FROM 	PLAYER
WHERE 	(POSITION, NATION) IN (('MF','브라질'), ('FW', '러시아'));
  • POSITION, NATION이 MF, 브라질이거나 FW, 러시아인 PLAYER_NAME, TEAM_ID, POSITION, NATION 출력한다.
SELECT 	PLAYER_NAME, TEAM_ID, POSITION, NATION
FROM 	PLAYER
WHERE 	POSITION IN ('MF', 'FW') AND NATION IN ('브라질', '러시아');
  • POSITION이 MF나 FW이면서, NATION이 브라질이나 러시아인 PLAYER_NAME, TEAM_ID, POSITION, NATION 출력한다.
  • LIKE str, NOT LIKE str: 문자열 패턴 매치를 실행한다.
    • x%: x 문자 이상의 임의의 문자열
      SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버,
      		HEIGHT 키
      FROM 	PLAYER
      WHERE 	PLAYER_NAME LIKE '장%';

- _: 1개의 단일 문자
  • IS NULL, IS NOT NULL

NULL은 어떤 값과도 비교할 수 없다.

따라서, NULL값과의 산술 연산은 NULL을 리턴하고, NULL값과의 비교 연산은 FALSE를 리턴한다.

SELECT 	PLAYER_NAME 선수이름, POSITION 포지션, TEAM_ID
FROM 	PLAYER
WHERE 	POSITION = NULL;     /* 에러는 아니고 FALSE를 리턴한다. */

만약 NULL값과 비교 연산을 하고싶다면, IS NULL, IS NOT NULL을 사용해야한다.

SELECT 	PLAYER_NAME 선수이름, POSITION 포지션, TEAM_ID
FROM 	PLAYER
WHERE 	POSITION IS NULL;

이렇게 하면 POSITION이 NULL인 튜플을 찾을 수 있다.

profile
젠니의 개발 라이푸우

0개의 댓글