산술연산자, 비교연산자

김채원·2025년 3월 15일

SQL

목록 보기
2/3

산술 연산자 (*, /, +, -)

# 예제 9. 연봉이 36000 이상인 사원들의 이름, 연봉 출력
# tip) 연봉은 월급의 12배이다.

select ename, sal * 12 as 연봉
  from emp 
  where sal * 12 >= 36000;

# 문제 1. 직업이 ANALYST 인 사원들의 이름, 연봉 출력

select ename, sal * 12 as 연봉
  from emp
  where job = 'ANALYST';

✅ 참고

쿼리 실행 순서는 fromwhereselect절이기 때문에 order by절 제외 다른 절에서는 alias를 사용할 수 없다.

select ename, sal * 12 as 연봉
  from emp 
  where 연봉 >= 36000;

여기서 sal 대신 연봉 * 12 >= 36000 작성 시 에러 발생


비교 연산자

1️⃣ (>,<,>=,<=,=,!=,<>,^=)

^= 와 != 는 같다

# 예제 10. 월급이 1200 이하인 사원들의 이름, 월급, 직업, 부서번호 출력

select ename, sal, job, depno
  from emp
  where sal <= 1200;

# 문제 1. 직업이 SALESMAN이 아닌 사원들의 이름, 직업 출력

select ename, job
  from emp
  where job != 'SALESMAN';

기타 비교 연산자

1️⃣ (NOT) BETWEEN (조건1) AND (조건2)

# 예제 11. 월급이 1000에서 3000 사이인 사원들의 이름, 월급 출력

select ename, sal
  from emp
  where sal BETWEEN 1000 AND 3000;
  # where sal >= 1000 and sal <= 3000; 도 가능

# 문제 1. 월급이 1000에서 3000 사이가 아닌 사원들의 이름, 월급 출력

select ename, sal
  from emp
  where sal NOT BETWEEN 1000 AND 3000;
  # where sal < 1000 or sal > 3000;

# 문제 2. 1981년 11월 1일부터 1982년 5월 30일 사이에 입사한 사원들의 이름, 입사일 출력

select ename, hiredate
  from emp
  where hiredate BETWEEN '81/11/01' AND '82/05/30';

2️⃣ (NOT) LIKE

  • 와일드카드(%) : %의 위치에 어떤 문자열이든 갯수에 관계없이 출력
  • 언더바(_) : _의 위치에 어떤 문자열이든 단 하나만 해당 위치에 출력
# 예제 12. 이름의 첫 글자가 S로 시작하는 사원들의 이름 출력

select ename
  from emp
  where ename like 'S%';


# 문제 1. 이름의 끝 글자가 T로 끝나는 사원들의 이름 출력

select ename
  from emp
  where ename like '%T';


# 문제 2. 이름의 두 번째 철자가 M인 사원들의 이름 출력

select ename
  from emp
  where ename like '_M%';

3️⃣ IS (NOT) NULL

0 vs NULL 비교

  • NULL : 해당 컬럼에 데이터가 존재하지 않는 상태, 알 수 없는 값
  • 0 : 알 수 있는 값
# 예제 13. 커미션이 null인 사원들의 이름, 커미션 출력

select ename, comm
  from emp
  where comm = NULL; # null값은 비교할 수 없기 때문에 비교연산자와 연산 불가능

# 정답
select ename, comm
  from emp
  where comm IS NULL;

# 문제 1. 커미션이 null이 아닌 사원들의 이름, 커미션 출력

select ename, comm
  from emp
  where comm IS NOT NULL;

4️⃣ (NOT) IN

컬럼명 IN ('검색값1', '검색값2', ...)

  • 한 개와 비교 : =
  • 두 개 이상과 비교 : IN
# 예제 14. 직업이 SALESMAN, ANALYST, MANAGER인 사원들의 이름, 월급, 직업 출력
select ename, sal, job
  from emp
  where job IN ('SALESMAN', 'ANALYST', 'MANAGER');

# 문제 1. 직업이 SALESMAN, ANALYST, MANAGER이 아닌 사원들의 이름, 월급, 직업 출력
select ename, sal, job
  from emp
  where job NOT IN ('SALESMAN', 'ANALYST', 'MANAGER');

# 비교연산자의 부정은 보통 NOT

논리 연산자(AND, OR, NOT)

# 예제 15. 직업이 SALESMAN이고 월급이 1200 이상인 사원들의 이름, 월급, 직업 출력
select ename, sal, job
  from emp
  where job = 'SALESMAN' AND sal >= 1200;


# 문제 1. 부서번호가 30번, 커미션이 100 이상인 사원들의 이름, 월급, 커미션 출력
select ename, sal, comm
  from emp
  where deptno = 30 AND comm >= 100;

0개의 댓글