BETWEEN a AND b : a와 b의 값 사이에 있으면 된다.(a와 b의 값이 포함됨)
IN(list) : 리스트에 있는 값 중에서 어느 하나라도 일치하면 된다.
LIKE '비교문자열' : 비교 문자열과 형태가 일치하면 된다.
IS NULL : NULL 값인 경우
SELECT ENAME, JOB, DEPTNO
FROM EMP
WHERE (JOB, DEPTNO) IN (('MANAGER', 20), ('CLERK', 30));
-> MANAGER이며 20인 경우, CLERK이며 30인 경우
SELECT ENAME, JOB, DEPTNO
FROM EMP
WHERE JOB IN ('MANAGER', 'CLERK') AND DEPTNO IN (20, 30);
-> MANAGER과 CLERK 인경우에서 20, 30 인 경우
SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM PLAYER
WHERE POSITION LIKE 'MF';
-> LIKE : 비교 연산자 '='
와일드 카드의 종류
% : 0개 이상의 어떤 문자를 의미
_ : 1개인 단일 문자를 의미
SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM PLAYER
WHERE PLAYER_NAME LIKE '장%';
-> 장씨를 가진 선수를 검색
SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM PLAYER
WHERE HEIGHT BETWEEN 170 AND 180;
-> BETWEEN a AND b : 범위에서 'a'와 'b'의 값을 포함하는 범위를 말한다
NULL
- NULL값과의 수치연산은 NULL 값을 리턴
- NULL 값과의 비교연산은 FALSE 리턴
- 어떤 값과 비교 X, 특정값보다 크다, 작다 X
- POSITION = NULL X -> POSITION IS NULL O
SELECT PLAYER_NAME 선수이름, POSITION 포지션, TEAM_ID
FROM PLAYER
WHERE POSITION IS NULL;
논리 연산자의 종류
AND : 앞과 뒤의 조건 모두 참일 경우 참
OR : 앞이나 뒤의 조건 중 하나의 조건이 충족할 경우 참
NOT : 뒤에 오는 조건에 반대되는 결과 되돌려준다
SELECT PLAYER_NAME 선수이름, POSITION 포지션, TEAM_ID
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 백넘버, HEIFHT 키
FROM PLAYER
WHERE TEAM_ID = 'K02' OR TEAM_ID = 'K07'
AND POSITION = 'MF'
AND HEIGHT >= 170
AND HEIGHT <= 180;
-> 팀이 K02이거나 K07인 선수들 중 포지션이 MF이고 키가 170이상 180이하인 선수들
-> But, K02와 K07에 해당하는 선수들은 모두 검색된다
Why? 논리연산자 순서 때문에 OR 논리 연산자보다 AND 논리 연산자가 먼저 실행된다.
-> 처리 우선순위 : (), NOT, AND, OR
-> 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;
WHERE : TEAM_ID = 'K02' OR TEAM_ID = 'K07'
: TEAM_ID IN ('K02', 'K07')
HEIGHT >= 170 AND HEIGHT <= 180 : HEIGHT BETWEEN 170 AND 180
부정 연산자 종류
!= 같지 않다
^= 같지 않다
<> 같지않다
NOT 칼럼명 = ~와 같지 않다
NOT 칼럼명 > ~보다 크지 않다.
NOT BETWEEN a AND b a와 b의 값 사이에 있지 않다.
NOT IN (list) list 값과 일치하지 않는다
IS NOT NULL NULL 값을 갖지 않는다
(ORACLE) SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM PLAYER
WHERE TEAM_ID = 'K02'
AND NOT POSITION = 'MF'
AND NOT HEIGHT BETWEEN 175 AND 185;
(SQL) SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM PLAYER
WHERE TEAM_ID = 'K02'
AND NOT POSITION <> 'MF'
AND NOT HEIGHT BETWEEN 175 AND 185;
-> 팀이 K02이고 포지션이 MF가 아니고 키가 175이상 185이하가 아닌 선수
ROWNUM : 칼럼과 비슷한 성격의 Pseudo Column
: SQL 처리 결과 집합의 각 행에 대해 임시로 부여되는 일련번호
: WHERE 절에서 행의 개수를 제한하는 목적으로 사용
한 건의 행만 가져오고 싶을 떄
SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM = 1;
ROWNUM <= 1;
ROWNUM < 2;
두 건 이상의 N행을 가져오고 싶을 때는 ROWNUM = N; 은 사용 X
SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= N;
SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= N+1;
ROWNUM : 테이블 내의 고유한 키나 인덱스 값을 만들 수 있다
UPDATE MY_TABLE SET COLNUM1 = ROWNUM;
TOP : SQL Server는 TOP 절을 사용하여 결과 집합으로 출력되는 행의 수를 제한 할 수 있다.
TOP(Expression) [PERCENT] [WITH TIES]
- Expression : 반환할 행의 수를 지정하는 숫자
- PERCENT : 쿼리 결과 집합에서 처음 Expression%의 행만 반환됨을 나타낸다
- WITH TIES : ORDER BY 절이 지정된 경우에만 사용할 수 있으며, TOP N(PERCENT)의 마지막 행과 같은 값이 있는 경우 추가 행이 출력되도록 지정할 수 있다.
SELECT TOP(1) PLAYER_NAME FROM PLAYER;
-> 한 건의 행만 가져오고 싶을 때
SELECT TOP(N) PLAYER_NAME FROM PLAYER;
-> 두 건 이상의 행을 가져오고 싶을 때
-> ORDER BY 절이 사용되지 않으면? Oracle의 ROWNUM과 SQL Server의 TOP 절은 같은 기능
같이 사용되면? 기능차이 O
'SQLD자격증독학' 카테고리의 다른 글
[SQLD자격증독학] SQLD 합격 후기 (0) | 2017.04.21 |
---|---|
[SQLD자격증독학] 데이터베이스 정규화 과정 (0) | 2017.03.17 |
[SQLD자격증독학] 인덱스 (0) | 2017.03.11 |
[SQLD자격증독학] 조인 수행 원리 (0) | 2017.03.11 |
[SQLD자격증독학] 제 2장 데이터 모델과 성능 (0) | 2017.03.05 |