본문 바로가기

자린고비 독학하기/자린고비 코딩하기

SQL - WHERE 조건절과 연산자

반응형

 

 

 

WHERE 조건절

 

 

WHERE 조건절을 사용해서 원하는 칼럼의 정보만 뽑을 수 있다.

 

SELECT * FROM emp WHERE sal>=3000;

 

: emp 테이블에 있는 모든 칼럼 중, sal 컬럼의 값이 3000 이상인 값만 출력하기 

 

 

 

 

산술 연산자

 

+, -, / , *를 사용할 수 있다. 

 

우선 순위는 차례대로 *  /  +  -  순서이며, 원하는 결과를 위해 괄호를 사용하여 우선 순위를 바꿀 수 있다.

 

 

 

산술 연산자 "+"를 사용해 컬럼을 생성할 수도 있다.

 

 

 

 

100/2가 우선적으로 연산되기 때문에, 원하는 결과를 위해 괄호를 활용할 수도 있다.

 

sal: 800

 

sal+100/2 : 850

(sal+100)/2 : 900/2 -> 450

 

 

비교 연산자

 

 

초과: SELECT empno, ename, sal FROM emp WHERE sal>3000;

 

3000을 가진 사원은 포함되지 않는다.

 

 

 

미만: SELECT empno, ename, sal FROM emp WHERE sal<3000;

 

3000을 가진 값은 여전히 포함되지 않는다.

 

 

 

이상: SELECT empno, ename, sal FROM emp WHERE sal >= 3000;

 

3000을 가진 값이 포함되었다.

 

 

 

 

이하: SELECT empno, ename, sal FROM emp WHERE sal <= 3000;

 

3000 이하인 값이 출력되었다.

 

 

 

 

동일: SELECT empno, ename, sal FROM emp WHERE sal = 3000;

 

 

3000인 값이 출력되었다. 

 

 

비동일 :

 

SELECT empno, ename, sal FROM emp WHERE sal !=3000;

SELECT empno, ename, sal FROM emp WHERE sal <> 3000;

SELECT empno, ename, sal FROM emp WHERE sal ^= 3000;

 

 

3000이 아닌 값을 출력하는 방법은 세 가지가 있다. 

 

 

 

 

이름이 JAMES인 사람의 칼럼 뽑기

 

 

 

 SELECT empno, ename, sal FROM emp WHERE ename=JAMES;

 SELECT empno, ename, sal FROM emp WHERE ename="JAMES";

 

문자열에 대한 것은 작은 따옴표만 허용한다.

(따옴표 안 치거나 큰 따옴표 X)

 

 SELECT empno, ename, sal FROM emp WHERE ename='JAMES';

 

'작은 따옴표' 안의 값은 대소문자도 구별한다는 점에 유의하자.

 

 

 

1982/01/01 이후 입사한 사람의 컬럼 뽑기 

 

 

 

날짜는 초과 / 이상일 때 그 날짜 이후 값이 출력된다.

 

 

 

 

논리 연산자

 

 

 

SELECT ename, empno, deptno, job FROM emp WHERE job='MANAGER' AND deptno=10;

 

AND 연산자를 활용, 둘 다 만족하는 값만 출력한다.

 

 

SELECT ename, empno, deptno, job FROM emp WHERE job='MANAGER' OR deptno=10;

 

OR 연산자를 활용, 둘 중 하나만 만족해도 출력한다.

 

 

EX06

 

 

SELECT * FROM emp WHERE NOT DEPTNO=10;

 

SELECT * FROM emp WHERE DEPTNO<>10;

SELECT * FROM emp WHERE DEPTNO^=10;

SELECT * FROM emp WHERE DEPTNO!=10;

 

NOT 논리 연산자를 사용하거나, <> 등의 비교 연산자를 사용할 수도 있다.

 

 

 

BETWEEN A and B 

 

 

SELECT * FROM emp WHERE sal BETWEEN 2000 AND 3000;

 

(=)

 

SELECT * FROM emp WHERE sal>=2000 AND sal<= 3000;

ㄴ 논리 연산자 / 비교 연산자 병합

 

BETWEEN A AND B로 조건을 조금 더 간편하게 표현할 수 있다.

 

 

NOT BETWEEN A and B 

 

 

 

SELECT * FROM emp WHERE sal BETWEEN 2000 AND 3000;

 

(=)

 

SELECT * FROM emp WHERE sal<2000 OR sal>3000;

ㄴ NOT을 통해서 연산자가 전부 반대로 변경되었다.

 

 

 

NOT BETWEEN A AND B로 드모르간의 법칙을 수행할 수 있다.

 

IN 

 

SELECT * FROM emp WHERE comm IN (300, 500, 1400);

 

(=)

 

SELECT * FROM emp WHERE comm = 300 OR comm=500 OR comm=1400;

 

 

 

 

IN 연산자를 통해 조건을 조금 더 간편하게 표현할 수 있다.

 

 

NOT IN 

 

 

 SELECT * FROM emp WHERE comm NOT IN(300, 500, 1400);

 

(=)

 

SELECT * FROM emp WHERE comm <>300 AND comm<>500 AND comm<>1400;

 

NOT IN으로 드모르간의 법칙을 수행할 수 있다.

 

 

 

LIKE 연산자 

 

  • 와일드카드

   

%

 하나 이상의 글자, 없어도 상관없음

_ (under bar) 

 

어떤 문자든 한 개의 글자

ESCAPE 옵션 

 % , _가 포함된 문자를 찾고 싶을 때, 부호 지정

 

 

 

 

SELECT * FROM emp WHERE ename LIKE 'F%' 

 

 

전체 행 중에서 유일하게 F로 시작하는 FORD만 출력된다.

 

와일드 카드를 사용할 때는 꼭 LIKE를 붙여 주어야 한다. 

 

 

 

와일드카드:  % 

 

 

%를 통해 원하는 문자 값이 포함된 행을 출력할 수 있다. %에 해당하는 값은 개수가 중요하지 않다.

 

 

 

 

 

와일드카드: _ 

 

 

두 번째, 세 번째 문자에 A가 포함된 행 출력. _는 하나의 문자만 대응한다.

 

 

ESCAPE OPTION

 

 

  • %나 _ 가 포함된 속성을 찾기 위해서 이용하는 옵션. 
  • ESCAPE 지정자를 설정해서 해당 값을 %나 _ 앞에 붙여서 쿼리문을 짠다.

 

해당 열에서 % 와 _ 문자를 찾고 싶을 때, 앞에 ESCAPE 지정자를 붙인 다음 찾아야 한다.

 

 

 

활용 

 

 

ENAME 중에 A를 포함하고 있지 않은 행 출력

 

 

 

 

NULL 연산자 

 

 

 

SQL 값은 NULL을 지닐 수 있으며, WHERE 조건절을 통해 NULL만이 있는 것 / 없는 것을 따로 조회할 수 있다.

 

 

 

SELECT ename, job, comm FROM emp WHERE COMM=NULL;

SELECT ename, job, comm FROM emp WHERE COMM IS NULL;

 

 

NULL 요소를 가진 행만을 검색하는 방법

 

 

 

SELECT ename, job, comm FROM emp WHERE COMM IS  NOT NULL;

 

 

NULL 요소를 배제한 행을 검색하는 방법

 

 

반응형