KH/Oracle

# 3 between , in , %,_

오늘의 진 2022. 8. 23. 12:05

BETWEEN ~ AND (이상 ~ 이하 )

 

하나의 컴럼의 값이 범위 내에 속하는지 알아보기 위한 연산자이다. 
숫자형, 문자형, 날자형에 사용가능하다. 

 

(예) 급여가 2000-3000 사이의 사원을 검색하는 쿼리문 

    >>  select * from emp where sal between 2000 and 3000 ; 

 

 

(Q1) 1987년도에 입사한 사원들을 출력하시오 

  >>  select * from emp where hiredate between '1987/01/01' and '1987/12/31';

 

 

IN

(Q1) 커미션이 300 혹인 500 혹은 1400인 사원이 있는지 검색하시오 

  >>  select* from emp where comm in(300,500,1400);

 

(Q2)커미션이 300 혹인 500 혹은 1400인 사원이 있는지 검색하시오 

  >> select* from emp where nvl(comm,0) not in (300,500,1400) ;

  >>select* from emp where not  nvl(comm,0)  in (300,500,1400) ;

comm이 null이면 0을 넣고나서 where를 연산하는 느낌 

 

(Q2)사원번호가 7521도 아니고 7654도 아니고 7844도 아닌 사원을 검색(2가지 방법)

>> select * from emp where empno not in (7521,7654,7844);

 

(Q3)사원이름이 FORD인 사람의 이름, 월급, 입사일 출력

 >>  select ename,sal,hiredate from emp where ename ='FORD';

 

 

와일드 카드

 % 문자가 없거나 하나이상의 문자에 어떤 문자가 와도 상관이 없다. 
_ 하나의 문자에 어떤 값이 와도 상관이 없다. 

와일드카드는 like와 함께 사용한다. 

like 연산자는 검색하려는 값을 정확히 모를 경우에도 검색 할 수 있도록 와일드 카드와 함께 사용하여 결과를 얻는다. 

 

(Q) 이름의 마지막 글자가 'n' 인 사원들을 출력하시오 

>> select * from emp where ename like '%N' ; 

 

(Q) 이름의 첫번째 글자가 't' 인 사원의 이름과 월급, 부서 번호를 출력하시오.

>>select ename, sal,deptno from emp where ename like 'T%';

 

(Q) 이름에 'A'을 갖고 있는 사원들을 출력하시오.

>> select * from emp where ename like '%A%' ;

 

(Q)이름이 5글자인 사원 출력

>> select * from emp where ename like '_____' ;

 

(Q) 이름의 3번째 글자가 R이고 부서 번호가 30 인 사람을 출력하시오. 

>> select * from emp where ename like '__R%' and deptno ='30';

 

(Q) 입사일이 '81/04/02' 인 사원의 월급을 500원 인상하세요.

>> select ename "이름", sal "월급",sal+500 "인상된 월급" from emp where hiredate ='81-04-02';

 

select * from emp where ename lije '%\%%'  : 이름에 %가 들어가는 사람을 찾는다. 

 

(Q) 커미션을 받지 않는 사원들을 출력 하세요.

>>  select* from emp where comm is null ;

 

NULL

0이 아님
빈공간이 아님
미확정(해당사항 없음) 알수 없는 값을 의미 

어떤값인지 알 수는 없지만 값은 존재함
? 혹은 00을 의미 
연산, 할당, 비교 불가 
오라클에서는 컬럼에 널 값이 저장되는 것을 허용한다. 

is null / in not null 
임의의 컬럼이 null 인지 아닌지를 비교 검색한다. 
특정 컬럼 값이 null 값인지를 비교할 경우 is 연산자를 이용

 

 

concatenation  연산자 사용 

 

 : select 다음에 2개 이상의 컬럼이 올 경우 이들을 ',' 로 연결하지만 영어 문장 처럼 보이게 하기 위해

concatenation 연산자를 사용한다.   ||

 

select ename || 'is a' || job from emp ; 

(Q) 상관이 없는 사원을 출력하시오

>>select * from emp where mgr is null ;

 

 

DISTINCT

 

 : 동일한 값들이 중복되어 출력되지 않도록 하기 위해 사용하는 키워드 

 

(Q) select  distinct deptno from emp ; 

select distinct job  from emp ;   : emp 테이블에서 직급이 중복되어 출력 되지 않는 결과를 출력

 

(Q) emp 테이블에서 보너스를 받는 사원 중에 500과 1400이 아닌 사원들의 이름과 보너스 금액을 출력하시요

>>select ename , comm from emp  where NVL(comm,0) not in (500,1400) ; 

 

(Q) 30번 부서의 사원들의 연봉을 20% 인상한 후 이름 , 부서번호, 월급, 연봉 순으로 출력하세요 

 

>> select ename "이름",deptno "부서번호 ",sal "월급", (sal*12)*1.2 "인상된 연봉" from emp where deptno =30;

 

 

'KH > Oracle' 카테고리의 다른 글

# 6 오라클 숫자, 문자 함수  (0) 2022.08.24
# 5 DUAL 테이블  (0) 2022.08.24
# 4 데이터 타입 ,ORDER BY(정렬)  (0) 2022.08.23
# 2 비교연산자, 논리연산자  (0) 2022.08.22
# 1 오라클의 데이터형과 몇가지 명령어들  (0) 2022.08.22