[SQL] WHERE 절
아래의 명령어들은 모두
Oracle의 SQL 명령어이다. (SQL Server 명령어의 경우 따로 표시)
👑 WHERE 절
데이터베이스에서 사용자들은 WHERE 절을 사용하여 특정 조건을 만족하는 데이터만
선택할 수 있다. 이를 통해 방대한 데이터 속에서 사용자들은 자신이 원하는 자료만을
검색하여 출력할 수 있다.
SELECT [DISTINCT/ALL] 칼럼명 [ALIAS], [DISTINCT/ALL] 칼럼명 [ALIAS], ...
FROM 테이블명
WHERE 조건식;
WHERE 절의 조건식은 칼럼명, 연산자, 문자, 숫자, 표현식, 비교 칼럼명으로 구성된다.
👑 WHERE 절에 사용되는 연산자
💡 비교 연산자
-
=,>,>=,<,<= -
부정 비교 연산자인
!=,^=,<>는 모두같지 않다라는 의미이다.!=: 대부분의DBMS에서 지원한다.^=: 특정DBMS에서만 지원한다.<>: ISO 표준, 모든 운영체제에서 사용 가능
-
NOT 칼럼명 =: ~와 같지 않다. -
NOT 칼럼명 >: ~보다 크지 않다.
-- e.g.
SELECT PLAYER_NAME, HEIGHT
FROM PLAYER
WHERE HEIGHT >= 180;
-- e.g.
SELECT TEAM_ID, TEAM_NAME
FROM TEAM
WHERE TEAM_ID <> 'T01';
💡 SQL 연산자
-
BETWEEN a AND b: a 이상 b 이하의 값 사이에 있으면 된다.
NOT BETWEEN a AND b: a 이상 b 이하의 값 사이에 있지 않다. -
IN (list): 리스트에 있는 값 중 어느 하나라도 일치하면 된다.
NOT IN (list): list 값과 일치하지 않는다. -
LIKE '비교문자열': 비교문자열과 형태가 일치하면 된다. -
IS NULL:NULL값인 경우
IS NOT NULL:NULL값을 갖지 않는다.
-- IN 연산자
SELECT TEAM_NAME, FOUNDED_YEAR
FROM TEAM
WHERE TEAM_ID IN ('T03', 'T05');
-- LIKE 연산자
SELECT TEAM_NAME, FOUNDED_YEAR
FROM TEAM
WHERE FOUNDED_YEAR LIKE '197_'; -- 1970년대에 창단한 팀을 조회
-- WILDCARD (%) : 0개 이상의 어떤 문자
-- WILDCARD (_) : 1개인 단일 문자
-- BETWEEN a AND b 연산자
SELECT PLAYER_NAME, WEIGHT
FROM PLAYER
WHERE WEIGHT BETWEEN 76 AND 82 -- 몸무게가 76 이상 82 이하인 선수 조회
-- IS NULL 연산자
SELECT TEAM_NAME, REGION_NAME
FROM TEAM
WHERE REGION_NAME IS NULL; -- 연고지가 NULL 값인 팀 조회
💡 논리 연산자
-
AND,OR,NOT -
논리 연산자들 간의 우선순위 :
()→NOT→AND→OR
👑 ROWNUM, TOP
-
Oracle에서는ROWNUM을 통해 원하는 만큼의 행만 가져오고 싶을 때,
WHERE절에서 행의 개수를 제한할 수 있다. -
한 건의 행을 가져올 경우
= 1이 가능하지만, 두 건 이상의 경우= N의 형태는 사용할 수 없다.SELECT TEAM_NAME FROM TEAM WHERE ROWNUM <= N; -
SQL Server의 경우TOP절을 통해 출력되는 행의 수를 제한할 수 있다.TOP [조회할 행의 수] [컬럼명] FROM [테이블명] WHERE [조건절]
Leave a comment