날짜 : 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 겹치는부분에보면 오름차순으로 정렬이되는걸볼수있다.생각 (질문)
출처 (문헌)
학원에서 준 바인딩 책임