[TIL][SQL] SELECT-06
다양한 연산자(operator)
연산자 종류 | 설명 |
---|---|
= | 비교 대상에서 같은 조건을 검색 |
!=, <> | 비교 대상에서 같지 않은 조건을 검색 |
> | 비교 대상에서 큰 조건을 검색 |
>= | 비교 대상에서 크거나 같은 조건을 검색 |
< | 비교 대상에서 작은 조건을 검색 |
<= | 비교 대상에서 작거나 같은 조건을 검색 |
BETWEEN a AND b | A와 B 사이에 있는 범위 값을 모두 검색 |
IN(a, b, c) | A이거나 B이거나 C인 조건을 검색 |
LIKE | 특정 패턴을 가지고 있는 조건을 검색 |
IS NULL/ IS NOT NULL | NULL 값을 검색/ NULL이 아닌 값을 검색 |
A AND B | A 조건과 B조건을 모두 만족하는 값만 검색 |
A OR B | A 조건이나 B 조건 중 한 가지라도 만족하는 값을 검색 |
NOT A | A가 아닌 모든 조건을 검색 |
비교 연산자는 숫자나 문자, 날짜에 다 사용할 수 있다.
BETWEEN 연산자
첫번째, 작은 값을 앞에, 큰 값을 뒤에 쓴다.
둘째, 두 값을 모두 포함하는 결과를 출력한다. 즉, BETWEEN A AND B = (A <= 칼럼 <= B)
하지만 특정 구간의 값을 검색할때는 가급적 BETWEEN을 사용하지 않는것이 좋다.
대신
SELECT empno, ename, sal FROM emp WHERE sal >= 2000 AND sal <= 3000 ;
과 같은 방법을 쓰는것이 훨신 빠르다.
IN 연산자
SQL> SELECT empno, ename, deptno 2 FROM emp 3 WHERE deptno IN (10, 20) ; EMPNO ENAME DEPTNO ---------- ---------- ---------- 7369 SMITH 20 7566 JONES 20 7782 CLARK 10 7788 SCOTT 20 7839 KING 10 7876 ADAMS 20 7902 FORD 20 7934 MILLER 10
WHERE 절에 IN으로 조건을 주었다. 이 연산자는 속도가 빨라서 아주 많이 이용된다.
LIKE 연산자
LIKE 연산자는
%
와_
와 같이 이용된다.
- % : 글자 수에 제한이 없고 (0개 포함) 어떤 글자가 와도 상관 없다
- _(Underscore) : 글자 수는 한 글자만 올 수 있고 어떤 글자가 와도 상관 없다.
SQL> SELECT empno, ename, sal 2 FROM emp 3 WHERE sal LIKE '1%' ; EMPNO ENAME SAL ---------- ---------- ---------- 7499 ALLEN 1600 7521 WARD 1250 7654 MARTIN 1250 7844 TURNER 1500 7876 ADAMS 1100 7934 MILLER 1903.33 SQL> SELECT empno, ename, sal 2 FROM emp 3 WHERE ename LIKE 'A%' ; EMPNO ENAME SAL ---------- ---------- ---------- 7499 ALLEN 1600 7876 ADAMS 1100 SQL> SELECT empno, ename, hiredate 2 FROM emp 3 WHERE hiredate LIKE '80%' ; EMPNO ENAME HIREDATE ---------- ---------- -------- 7369 SMITH 80/12/17
LIKE 연산자 뒤에 작은 따옴표로 검색할 단어를 묶지 않으면 에러가 생긴다.
참고로. LIKE 연산자 뒤에 오는
%
나_
의 위치는 매우 중요하다. 인덱스를 아직 배우지 않았기 때문에 모두 이해할수 없지만
%
나_
를 가장 먼자쓰면 성능이 최악으로 늦어진다.절대 %나 _를 가장 먼저 쓰지말자
값이 무엇인지 모를 경우 - IS NULL
/ IS NOT NULL
연산자 활용
NULL
은 어떤 값인지 모른다는 의미이다.
NULL
값은 어떤 작업을 해도 결괏값은 늘NULL
이 나온다.
NULL
값은=
연산을 사용할 수 없다.
NULL
값을 가진 데이터가 있다 하더라도 검색을 할 수 없다. 이런 이유 때문에NULL
값을 찾고 싶을 때=
연산자를 사용할 수 없어서 별도로 만든 연산자가IS NULL
과IS NOT NULL
이다.
NULL
을 포함한 연산은 모든 값을NULL
로 만들기 때문에 정말 조심해야 한다.
검색 조건이 두 개 이상일 경우 조회하기.
- 두 조건을 동시에 만족해야 하는 경우
AND
조건 사용- 둘 중 한 가지 조건만 만족해도 될 경우
OR
조건을 사용
AND
와OR
이 동시에 나오는 조건일 경우 항상AND
가 먼저 수행된 후에OR
가 실행되기 때문에()
를 사용하여 우선순위를 정해야 한다.
사용자에게 조건을 입력받아서 조건에 맞는 값을 출력하기
SQL> SELECT empno, ename, sal 2 FROM emp 3 WHERE empno = &empno; empno의 값을 입력하십시오: 7902 EMPNO ENAME SAL ---------- ---------- ---------- 7902 FORD 3000
&(엠퍼센트)
기호를 사용한다. 이 기호는 사용자에게 값을 입력받으라는 뜻으로 해석되어 SQL 문장이 수행될 때 사용자에게 입력을 할 수 있는 부분을 제공하고 값을 입력받는다.
&(엠퍼센트)
기호는 WHERE 절에만 사용되는 것은 아니며 사용자에게 값을 입력받아야 하는 곳에는 다 쓸 수 있다.