[TIL][SQL] SELECT-06

goaswon·2020년 10월 28일
0

SQL

목록 보기
7/10

다양한 연산자(operator)

연산자 종류설명
=비교 대상에서 같은 조건을 검색
!=, <>비교 대상에서 같지 않은 조건을 검색
>비교 대상에서 큰 조건을 검색
>=비교 대상에서 크거나 같은 조건을 검색
<비교 대상에서 작은 조건을 검색
<=비교 대상에서 작거나 같은 조건을 검색
BETWEEN a AND bA와 B 사이에 있는 범위 값을 모두 검색
IN(a, b, c)A이거나 B이거나 C인 조건을 검색
LIKE특정 패턴을 가지고 있는 조건을 검색
IS NULL/ IS NOT NULLNULL 값을 검색/ NULL이 아닌 값을 검색
A AND BA 조건과 B조건을 모두 만족하는 값만 검색
A OR BA 조건이나 B 조건 중 한 가지라도 만족하는 값을 검색
NOT AA가 아닌 모든 조건을 검색

비교 연산자는 숫자나 문자, 날짜에 다 사용할 수 있다.

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 NULLIS NOT NULL이다.

NULL을 포함한 연산은 모든 값을 NULL로 만들기 때문에 정말 조심해야 한다.

검색 조건이 두 개 이상일 경우 조회하기.
  • 두 조건을 동시에 만족해야 하는 경우 AND조건 사용

  • 둘 중 한 가지 조건만 만족해도 될 경우 OR조건을 사용

    ANDOR이 동시에 나오는 조건일 경우 항상 AND가 먼저 수행된 후에 OR가 실행되기 때문에 ()를 사용하여 우선순위를 정해야 한다.

사용자에게 조건을 입력받아서 조건에 맞는 값을 출력하기
SQL> SELECT empno, ename, sal
 2  FROM emp
 3  WHERE empno = &empno;
empno의 값을 입력하십시오: 7902

  EMPNO ENAME             SAL
---------- ---------- ----------
   7902 FORD             3000

&(엠퍼센트)기호를 사용한다. 이 기호는 사용자에게 값을 입력받으라는 뜻으로 해석되어 SQL 문장이 수행될 때 사용자에게 입력을 할 수 있는 부분을 제공하고 값을 입력받는다.

&(엠퍼센트) 기호는 WHERE 절에만 사용되는 것은 아니며 사용자에게 값을 입력받아야 하는 곳에는 다 쓸 수 있다.

profile
goaswon

0개의 댓글