WHERE절 개요..
사용자들은 자신이 원하는 자료만을 검색하기 위해서 SQL 문장에 WHERE 절을 이용한다.
SELECT [DISTINCT/ALL] 칼럼명 [ALIAS명]FROM 테이블명WHERE 조건식;
SELECT [DISTINCT/ALL] 칼럼명 [ALIAS명] FROM 테이블명 WHERE 조건식;
SELECT PLAYER_NAME FROM PLAYER WHERE TEAM_ID = ‘K02'; —>(비교 연산자)
SELECT PLAYER_NAME, POSITION, BACK_NO, HEIGHT FROM PLAYER WHERE HEIGHT >= 170;
❗ 주의해야 할 점
'=' 연산자를 사용할 때 CHAR 변수나 VARCHAR2와 같은 문자형 타입을 가진 칼럼을 특정 값과 비교하기 위해서는 인용부호(작은 따옴표, 큰 따옴표)로 묶어서 비교 처리를 해야 한다.
❗ 주의해야 할 점
문자 유형 칼럼의 경우 따옴표 표시가 없는 경우 에러가 발생할 수 있지만, 숫자 유형 칼럼의 경우 숫자로 변환이 가능한 문자열과 비교되면 상대 타입을 숫자 타입으로 바꾸어 비교해버린다.
SQL >>
SELECT ENAME, JOB, DEPTNO FROM EMP WHERE (JOB, DEPTNO) IN (('MANAGER',20),('CLERK',30));
사원 테이블(EMP)에서 JOB이 MANAGER이면서 20번 부서에 속하거나,
JOB이 CLERK이면서 30번 부서에 속하는 사원의 정보(ENAME, JOB, DEPTNO)를 IN 연산자의 다중 리스트를 이용해 출력하라.
SELECT PLAYER_NAME, POSITION, BACK_NO, HEIGHT FROM PLAYER WHERE POSITION LIKE 'MF';
SELECT PLAYER_NAME, POSITION, BACK_NO, HEIGHT FROM PLAYER
WHERE PLAYER_NAME LIKE ‘장%';
“장”씨 성을 가진 선수들의 정보를 조회하는 WHERE 절
“BETWEEN a AND b” -> “a 이상 b 이하”
SELECT PLAYER_NAME, POSITION, BACK_NO, HEIGHT FROM PLAYER
WHERE HEIGHT BETWEEN 170 AND 180;
키가 170 센티미터 이상 180센티미터 이하인 선수들의 정보 출력.
SELECT PLAYER_NAME 선수이름, POSITION 포지션, TEAM_ID FROM PLAYER WHERE POSITION IS NULL;
포지션 테이블에서 포지션이 NULL값을 갖는 선수이름, 포지션, 팀ID를 출력
논리연산자는 비교연산자나 SQL 비교 연산자들로 이루어진 여러 개의 조건들을 논리적으로 연결시키기 위해서 사용되는 연산자라고 생각하면 된다.
SQL >>
SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 FROM PLAYER
WHERE TEAM_ID = 'K02' AND HEIGHT >= 170;
소속이 삼성블루윙즈(K02)이고 키가 170 센티미터 이상인 조건을 가진 선수들의 자료를 조회
SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 FROM PLAYER
WHERE TEAM_ID IN ('K02','K07') AND POSITION = 'MF';
소속이 삼성블루윙즈(K02)이거나 전남드래곤즈(K07)인 선수들 중에서 포지션이 MF인 선수들 자료를 조회
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;
소속팀이 삼성블루윙즈(K02)이거나 전남드래곤즈(K07)에 소속된 선수들이어야 하고, 포지션이 미드필더(MF)이며 키는 170 센티미터 이상이고 180 이하인 선수들 자료를 조회
SQL >>
SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 FROM PLAYER
WHERE TEAM_ID = 'K02' AND POSITION <> 'MF' AND HEIGHT NOT BETWEEN 175 AND 185;
삼성블루윙즈(K02) 소속인 선수들 중에서 포지션이 미드필더(MF)가 아니고, 키가 175 센티미터 이상 185 센티미터 이하가 아닌 선수들의 자료 조회
칼럼과 비슷한 성격의 Pseudo Column으로써 SQL 처리 결과 집합의 각 행에 임시로 부여되는 번호, 조건절 내에서 행의 개수를 제한하는 목적으로 사용한다.
❓ Pseudo Column : 오라클에서 내부적으로 사용되는 컬럼을 pseudo column이라고 하며, ROWID, ROWNUM등이 있다.
Oracle SQL>>
UPDATE MY_TABLE SET COLUMN1 = ROWNUM;
MY_TABLE 이라는 테이블의 첫번 째 칼럼을 ‘고유한 키’값 혹은 ‘인덱스 값’으로 설정하라!
➡ 새롭게 넘버링 칼럼을 설정하고, 그 값을 기 테이블의 ‘고유한 키’값 혹은 ‘인덱스 값’으로 설정
SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= 3;
PLAYER 테이블에서 PLAYER_NAME 번호가 3 이하인 선수 이름을 출력하라
TOP 절을 사용하여 결과 집합으로 출력되는 행의 수를 제한할 수 있다.
SQL >>
TOP (Expression) [PERCENT] [WITH TIES];
ORDER BY절이 없으면 ROWNUM과 TOP의 기능이 같음
Expression: 반환할 행의 수를 지정하는 숫자이다.
PERCENT: 쿼리 결과 집합에서 처음 Expression%의 행만 반환됨을 나타낸다.
WITH TIES : ORDER BY 절이 지정된 경우에만 사용할 수 있으며,
TOP N(PERCENT)의 마지막 행과 같은 값이 있는 경우 추가 행이 출력되도록 지정할 수 있다.
SELECT TOP(5) PLAYER_NAME FROM PLAYER;
PLAYER 테이블에서 1~5행까지의 PLAYER_NAME 을 출력