날짜 : 2021-06-25

태그 : SQL 연산자 메소드 null

메모

개요

SELECT 문에서 중요하면서 자주 쓰이는 것은 함수=메소드 라고 알고 있는 연산자이다. 특히 그 중에서 중요한 연산자들은 in 과 like 이다.

나머지 AND나 OR NOT IF 등은 컴활이나 ITQ 함수부분을 배웠거나 자격증이있다면 거의 비슷하니 크게 어렵진 않을것이다.

예제1

아래에 설명된 모든 예제는 oracle 기준으로 작성되었습니다.

select empno , ename , comm , nvl (comm,0+100) from emp;
-- nvl1,nvl2(if함수랑비슷)
 
select ename || job as "이름 직업" from emp;
-- || 짝대기 는 컬럼들을 연결하는것
 
select ename || '의 직급은 ' || job || '이다' "사원별 직급"from emp;
 
select ename || sal as "이름 월급" from emp;
 
select ename || ' 사원' from emp;

예제2

select DISTINCT job from emp; 
--중복값 제거하여 출력됨
 
select empno , ename , job , deptno from emp where deptno = 30;
 
desc emp;
 
select empno , ename , job , deptno from emp where job = 'SALESMAN';
-- where문 뒤에 조건검색시 대소문자구분 주의!.
 
select empno , ename , sal , deptno from emp where sal < = 1000; 
-- 1천보다 작거나같다
 
select empno , ename , sal , hiredate from emp where hiredate > '81/01/01';
 
select empno , ename , sal from emp where sal between 1000 and 2000;
 

예제3

select empno , ename , sal from emp where empno in(7839,7844,7876);
-- in은 그냥 and 함수랑비슷한거임 , in안의숫자가포함된 값을 모두 반환함
 
select empno , ename , job from emp where job in('SALESMAN'); -- 문자도 가능!
 
select empno , ename , comm from emp where comm is null; -- is not null 도 있음
 
select empno , ename , hiredate from emp where hiredate between '81/01/01' and '81/12/31'; 
--날짜데이터에도 사용가능
 
select empno , ename , hiredate from emp where ename in ('JAMES', 'FORD' );
 
select empno , ename , from emp where ename='FORD' or empno=7902;
 
select empno , ename , sal , hiredate from emp where hiredate in('80/12/17','81/02/20')select empno , ename , sal , hiredate from emp where hiredate in('81/12/17','81/02/20');
 

예제4 LIKE​ , ESCAPE

select empno , ename , job from emp where ename like 'A%';
 
select empno , ename , job from emp where ename like '%T%'; --앞에 와일드카드%가있다고해서 반드시 T앞에 단어가있어야하는것은아님
 
select empno , ename , job from emp where ename like '_L%';
 
select empno , ename , job from emp where ename like 'KING'; --대소문자 구분함 king (x)
 
select empno , ename , job from emp where ename like '%\$\_%' escape '$'; 
-- $(달러) 뒤에있는녀석은 그냥 글자그대로 인식하라는뜻임. _ 언더바가포함된걸찾아라
 

예제5

select empno , ename , job , sal from emp where job = 'SALESMAN' and sal >= 1500 ;
 
select empno , ename , job , sal from emp where job = 'SALESMAN' or sal >= 1500 ;
 
select empno , ename , job , sal from emp where comm is not null;
 
select empno , ename , job , sal from emp where sal <=1500 ;
 
select empno , ename , job , sal from emp where not sal <=1500 ; 
-- not 은 부등호 연산식앞에 붙이면됨 .
 
select empno , ename , sal from emp where not sal in(800,950); 
-- 이렇게도 가능 sal 앞에붙여도가능!
 
select empno , ename , job , sal from emp where ename not like 'J%' ;
 
select ename , job , sal from emp where sal not between 1000 and 1500 ;
 

예제6

select ename ,job , sal , comm from emp where ( job='CLERK' or job= 'ANALYST' )
 
and comm is null
 
and sal >= 1000
 
and sal <= 3000;
 

 
select empno, ename , hiredate --asc 없으면 오름차순(기본값)
 
from emp order by ename desc; --내림차순
 
select empno , ename , sal* 12 annual
 
from emp order by annual desc;
 
**select empno , ename , sal* 12 annual , comm -- null 값을 제일큰값으로본다**
 
from emp order by comm desc;
 
select empno , ename , sal* 12 annual
 
from emp order by 2 desc; 
-- 앞의 뽑아오는컬럼기준 컬럼 번호로도 정렬가능!. 여기서2는 ename 기준임
 
select empno , ename , sal
 
from emp order by sal desc, empno; 
--sal 값은 DESC 로 먼저 정렬되고 , 그후에 EMPNO에서 1250 겹치는부분에보면 오름차순으로 정렬이되는걸볼수있다.

생각 (질문)

출처 (문헌)

학원에서 준 바인딩 책임

연결 (이유)

참고문헌


에이콘아카데미 출판사