본문 바로가기
휴지통/휴지통1

SQL 4일차 - 주요 함수

by Shuming 2015. 12. 23.
반응형

23일차 SQL



LIKE 연산자와 와일드카드(%)

값을 정확히 모를때에도 사용하기 위한 연산자.


형식

SELECT *

FROM emp

WHERE ename LIKE 'F%';

******F는 대소문자를 구문짓는 값을가지고 있기때문에 대문자 이어야한다.


LIKE.PNG


% 문자가 없거나 또는 하나이상의 문자 (어떤 아무런 값)

_ 하나의 문자가 어떤문자가 와도 상관없다.





예제 - 이름중에 A를 포함하는 사원을 검색해봅시다.


SELECT *

FROM emp

WHERE ename LIKE '%A%';


LIKE 2.PNG



'%A' - A가 마지막에 포함된 값을 검색










IS, IS NOT 비교


특정 컬럼 값이 NULL 값인지를 비교할 경우 비교연산자가 아닌 IS를 붙여 비교를 한다.



SELECT *

FROM emp

WHERE comm IS NULL; 

= COMM이 NULL인 값들 출력


MGRR.PNG




SELECT *

FROM emp

WHERE mgr IS NULL;

= 상관(MANAGER) 이 없는 사원을 검색


mgr.PNG













정렬을 위한 order by 절


기본 정렬은 오름차순이며 ASCENDING = ASC 을 사용하고

내림차순으로 정렬하려면 DESCENDING = DESC 를 사용한다.


SELECT *

FROM emp

ORDER BY SAL ; (여기서 SAL 뒤에 ASC가 생략되어있는거다)


ORDER BY.PNG



내림차순 정렬을 하는 방법.


SELECT *

FROM emp

ORDER BY SAL DESC;


DESC.PNG





문자열도 비교 가능


SELECT *

FROM emp

ORDER BY ename ASC;


ORDER BY_CHAR.PNG






정렬 방식에 여러가지 조건을 제시하는 경우


SELECT *

FROM emp

ORDER BY sal DESC, ename ASC;

앞에 조건부터 정렬하고 뒤의 내용을 정렬한다.


ORDER BY_여러조건.PNG










DUAL 테이블


DUAL 테이블은 변수 라고 생각하면 된다.

즉 산술 결과를 저장하고 있는 임시 테이블 이다.


SELECT * FROM DUAL; 캡처.PNG< 빈 값이 들어가 있는 임시 테이블


  • emp 테이블에 넣어도 값이 변한다거나 하진 않는다.




SELECT -10, ABS(-10) FROM DUAL;

1.PNG

(ABS - 절대값을 구함)




SELECT 34.5678, FLOOR(34.5678) FROM DUAL;

1.PNG

(FLOOR - 뒤의 소수점을 잘라버림)




SELECT 34.5678, ROUND(34.5678) FROM DUAL;

1.PNG

(ROUND - 반올림)




SELECT 34.5678, ROUND(34.5678,2) FROM DUAL;

1.PNG

(ROUND - 소수 2쨰 자리에서 반올림)




SELECT 34.5678, ROUND(34.5678,-1), TRUNC(34.5678,-1) FROM DUAL;

1.PNG

(ROUND - 소수 -1번쨰 자리(34.5678에서 4 << 이부분)에서 반올림과

TRUNC - 버림 -1번째 에서 버림)




SELECT MOD (27,2), MOD(27,5), MOD(27,7) FROM DUAL;

11.PNG

(MOD - 나머지연산자 27을 2로 나눈 나머지, 27을 5로 27을 7로 나눈 ~~)





예제- 사원번호가 홀수인 사원을 검색해보시오.


2.PNG









문자열 DUAL;



SELECT 'Welcome to oracle',

UPPER('Welcom to oracle'), LOWER('Welcom to oracle')

FROM DUAL;

1.PNG

(UPPER, LOWER 를 이용한 문자 변환)




LENGTH. 문자열 길이 출력

SELECT LENGTH('ORACLE'), LENGTH('오라클') FROM DUAL;

1.PNG




LENGTHB. 문자열 길이 출력(Byte형식으로)

SELECT LENGTHB('ORACLE'), LENGTHB('오라클') FROM DUAL;

1.PNG

  • 한글은 인코딩 때문에 기본적으로 +1Byte 되서 3Byte.




SUBSTR(대상, 시작위치, 추출갯수)

SELECT SUBSTR ('Welcome to oracle',4,3) FROM DUAL;

1.PNG





예제 - 09월에 입사한 사원검색.

SELECT * FROM emp WHERE SUBSTR(HIREDATE,4,2)='09';

1.PNG




예제2 - 입사년도 맨마지막이 2년도인 사원

SELECT * FROM emp WHERE SUBSTR(HIREDATE,1,2) LIKE '_2';

1.PNG


  • 함수는 DB안에 들어가있는 형태를 가지고 비교한다.

  • 그래서 HIREDATE 에서 1,2 로 지정해놨어도 앞에 ‘19’를 뽑아내지 않는 이유이다








SUBSTR 과 SUBSTRB


SELECT 'Welcome to oracle',

SUBSTR('웰콩오오옴오라클',3,4), SUBSTRB('웰퀌투오라클',3,4)

FROM DUAL;

1.PNG

  • 한글이 인코딩 때문에 3Byte가 됨을 기억하자.





INSTR

형태 - INSTR(대상,찾을글자,시작위치,몇번째발견)

SELECT INSTR('Welcome to oracle','o',1,2) FROM DUAL;

1.PNG

  • 첫번째 자리부터(W) ‘o’를 찾는데, 2번째 ‘o’ 를 찾는다 =

  • Welcome to oracle ='Welcome t”o” oracle






예제 - 이름 세번째 자리가 R로 끝나는 사원을 검색.


SELECT * FROM emp WHERE INSTR(ename,'R',3,1)=3;

1.PNG





특정기호로 채우는 LPAD RPAD


SELECT LPAD('Welcome',20,'@') FROM DUAL;

  • 20자리 마련 후 오른쪽에 대상 문자열을 출력하고 빈 공간을 @ 로 채운다

1.PNG그리고 

RPAD 1.PNG





공백을 삭제하는 TRIM,LTRIM, RTRIM


SELECT

LTRIM('        Welcome') 앞쪽공백,

RTRIM('Welcome         ')뒤의공백,

TRIM ('Welcome         ')그냥공백

FROM DUAL;

1.PNG


반응형

댓글