Oracle DB 논리연산자

강정우·2022년 6월 29일
0

DB

목록 보기
13/30
post-thumbnail

#2 SQL 복습(2)

1. where

  • 선택되는 행 제한 FROM절 바로 뒤에 나옴.
SQL> select last_name, salary*12 as annsal // 성과 연봉 column
  2  from employees	// 직원 table
  3  where salary*12>=150000; // 연봉 만 오천 달라 이상인 직원

#주의할 점은 alais인 annsal은 먹히지 않음 실행 순서상 마지막이기 때문.
  • 실행 순서는 FROM절 -> WHERE절 -> SELECT절 순으로 진행.
  • 문법은 where 조건식(column 연산자 값);

2. 문자열 및 날짜

  • 값 사용시 문자, 날짜 값이면 반드시 작은 따옴표를 쓰자.
  • 값을 명시할 때 반드시 table에 저장된 data형식을 그대로 쓰자.
  • 다음과 같이 no rows selected라는 진짜로 치명적인 결과값을 얻기 때문이다.

3. 비교조건

  • 자바의 비교연산자와 똑같으며 같지 않음은 <>을 쓸때도 있지만 !=를 주로 쓴다.
  • 반드시 단일 비교를 해야한다.
SQL>
 3 where d_id = 30, 90; => error
 3 where d_id = 90; => okay

4. 다른 비교조건(BETWEEN A AND B)

  • A(하한) 값과 B(상한) 값 사이에 범위를 확인하여 data 출력

5. 다른 비교조건(IN)

  • 값 목록 중의 값과 일치 하는지 확인 단일 비교조건과 다르게 여러개의 값과 동시에 비교 가능

6. 다른 비교조건(LIKE)

  • 문자의 일부만 알고있을 때 문자 패턴 일치 여부를 확인하여 data 출력
  • % : 문장 전체의 0개 이상의 일련의 문자를 나타냄
SQL> select first_name
 2   from employees
 3   where first_name like '%s'; => endswith s
 3   where first_name like 'S%'; => startswith S
 3   where first_name like '%s%'; => 중간에 s가 들었는지 확인
  • _ : 문자 하나를 나타냄
SQL> select first_name
 2   from employees
 3   where first_name like '%s_'; => 뒤에서 2번째 값이 s인 너석
 3   where first_name like '_s%'; => 앞에서 2번째 값이 s인 너석
  • 만약 일반 비교조건과 헷갈려서 이름 = '이%' 라고 한다면 이것은 이 씨 성을 가진 사람이 아니라 이름이 이퍼센트 인 녀석을 찾는 셈임. 따라서 %,언더바 는 오직 LIKE 절 안에서만 기능적으로 쓰임

7. 다른 비교조건(IS NULL)

  • 널 여부를 테스트 하는 함수.

8. 논리조건(AND)

  • 당연 모두 true 인 data 값만 return 함.
  • 새로운 절로 시작해야함.
  • OR과 같이 있을 때 OR보다 먼저 실행됨.

9. 논리조건(OR)

10. 논리조건(NOT)

  • IS NULL 함수와 함께보면 좋다. IS NULL 만 NOT의 위치가 다르기 때문이다.
SQL>
 3   where job_id NOT IN('ac_account','ad_vp')
 3   where salary NOT BETWEEN 10000 AND 15000
 3   where last_name NOT LIKE '%a%'
 3   where commission_pct IS NOT NULL

11. 우선순위 규칙(중요)

SQL> select last_name, job_id, salary
 2   from employees
 3   where job_id = 'sa_rep'
 4   or job_id = 'ad_pres'
 5	 and salary > 15000;
  1. 업무 ID가 ad_pres면서 급여가 15,000달라를 넘어야 합니다.
  2. 업무 ID가 sa_rep이여야 합니다.
  • 한마디로 밑에서 부터 진행된다고 볼 수 있다.
  • 하지만 괄호를 이용하여 우선순위 규칙을 강제로 지정할 수 있다.
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글