[Database/Oracle] 7. 연산자

minj-j·2022년 10월 24일
0

Oracle

목록 보기
7/13
post-thumbnail

연산자

    1. 산술 연산자 : +, -, *, /, mod(10,3) ➡️ 나머지 연산자
    1. 관계 연산자 : =, !=(<>), >, <, >=, <=
    1. 문자열 연산자 : like (%-모든 문자, _-한 글자)
    1. 논리 연산자 : not, and, or
    1. 연결 연산자 :

쿼리를 할 때도 연산자를 활용할 수 있는데
이 모든 연산자를 이용한 쿼리 예제를 살펴보고자 한다.

연산자 예제

select [조건을 출력하는데 필요한 컬럼]
from [테이블 명]
where [컬럼에 대한 조건]

  • 급여가 1000~2000인 사람을 추출하는 3가지 방법
  • 관계연산자, 논리연산자 사용
select ename,deptno,sal from emp where sal<=2000 and sal>=1000; //1
select ename”이름”,deptno”부서번호”,sal"급여" from emp where sal<=2000 and sal>=1000; //2
select ename, sal from emp where sal between 1000 and 2000; //3
  • 업무(JOB)가 ‘SALESMAN’,’CLARK’ 인 사람을 추출하라
  • 문자열 연산자 논리 연산자 사용
SELECT ENAME"이름",JOB"직업" FROM EMP WHERE JOB='SALESMAN' OR JOB='CLERK';
  • 급여가 1000~2000이 아닌 사람을 추출하는 2가지 방법
  • 관계연산자, 논리연산자 사용
select ename, sal from emp where sal < 1000 or sal > 2000; //1
// 2. where not 이용
select ename "이름"[-> 별칭을 준 것이다.], deptno "부서번호", sal "급여" 
from emp where not(sal<=2000 and sal >= 1000);

연결연산자 예제

select saname || '의 급여는 ' || sapay || '이다' "연결연산자" from sawon;
  • 연결 연산자의 한글은 작은따옴표로 감싼다.
    해당 쿼리를 입력하면

    이러했던 테이블이

    이렇게 출력된다!

Null

null 값은 비교연산을 할 수 없다.

null 데이터 추출하기

  • 커미션이 null인 사람만을 추출하라
select ename,comm from emp where comm = NULL;(에러)

위의 쿼리는 에러가 나는데 null 값은 비교연산을 할 수 없기 때문이다.
null값은 비교연산이 불가하다 때문에 다음과 같이 추출해야 한다.

null 연산

null은 is로 연산을 해줘야 한다.

select ename,comm from emp where comm is null; //1. (성공)
select ename, nvl(comm, 0) comm from emp; // 2. nvl(컬럼명, 대체값) : 널대체 함수

다음과 같이 is null을 사용하던가 nvl을 이용하여 null값을 모두 0으로 대체하여 추출한다.

null이 들어있는 데이터 추출 예제

nvl() 명령을 사용하여 null값을 0으로 대체할 수 있다.

  • null값이 들어있는 데이터를 0으로 바꾸기
select ename, nvl(comm[null값이 들어있는 컬럼명],0) comm from emp;
  • 이름, 급여, 커미션, 총급여(급여+커미션)를 추출 (커미션에는 null 데이터가 있다.)
select ename, sal, nvl(comm, 0) comm, sal+nvl(comm, 0) "총급여" from emp;

null값 만을 제외해서 출력하라

null은 비교연산을 사용할 수 없으므로 is no null을 이용하여 null값을 제외 할 수 있다.

select * from emp where work is not null;

혹은 null값을 0으로 대체 한다.

select ename, nvl(comm, 0) comm from emp;

null은 데이터 중에서 가장 큰 값으로 인식된다.

특정 문자 추출하기

like

오라클에서는 와일드 카드(%)를 사용한 like 연산을 통해 특정 문자를 추출 할 수 있다.

  • 이름이 A로 시작하는 사람을 추출하라
select ename from emp where ename like 'A%';

언더바(_)를 사용하여 검색할 문자열의 자릿수를 결정할 수 있다.

  • 이름의 두번째 문자가 L인 사람을 추출하라 (첫번째 문자를 _언더바 처리함)
select ename, from emp where ename like '_L%';
  • 이름에 L을 두번 이상 포함하는 사람을 추출하라
select ename, from emp where ename like '%L%L%';
  • 이름이 A로 시작하거나 두번째 문자가 D인 사람을 추출하라
select ename, from emp where ename like 'A%' or ename like '_D%';

문자열에서 원하는 문자 찾기 instr

INSTR 함수는 대소문자를 구별하여 문자를 검색한다.

  • 이름에 L을 두번만 포함하는 사람을 추출하라
select * from emp where instr(ename, 'LL') > 0

INSTR 함수는 특정 문자열을 찾은 위치를 정수형으로 반환하는데,
문자열을 찾으면 1이상, 못 찾으면 0을 반환해 준다.

profile
minj-j`s Development diary!

0개의 댓글