본문 바로가기

DB/Oracle

Oracle DB #3 SELECT로 특정 데이터 추출(IN 연산자, LIKE 연산자 , IS NULL , ORDER BY) , SQL 주요 함수

1. SELECT로 특정 데이터 추출

1) IN

- 동일한 필드가 여러 개의 값 중에 하나인 경우인지를 살펴보기 위해서 비교 안산자와 논리 연산자 OR를 사용하여 복잡하게 쿼리문을 작성하지 않고 IN 연산자를 사용하여 훨씬 간단하게 표현

column_name IN(A,B,C)

 

- 특정 필드의 값이 A이거나 B이거나 C 중에 어느 하나만 만족하더라도 출력하도록 하는 표현을 IN 연산자를 사용 가능

- 번에는 커미션이 300 이거나 500 이거나 1400 인 사원을 검색하기 위해서 IN 연산자를 사용해보자.

SELECT * FROM EMP 

WHERE COMM IN (300,500,1400);

 

2) LIKE 연산자와 와일드카드

- LIKE 연산자는 검색하고자 하는 값을 정확히 모를 경우에도 검색 가능하도록 하기 위해서 와일드카드와 함께 사용하여 원하는 내용을 검색함

column_name LIKE pattern

- % : 문자가 없거나 하나 이상의 문자나 어떤 값이 와도 상관 없음

- _ : 하나의 문자나 어떤 값이 와도 상관 없음

 

%사용하여 F로 시작하는 사원이름을 찾기

SELECT *

FROM EMP

WHERE ENAME LIKE 'F%';

 

_사용하여 이름의 두 번째 글자가 A인 사원 찾기

SELECT *

FROM EMP

WHERE ENAME LIKE '_A%';

 

3) NOT LIKE 

이름에 A를 포함하지 않는 사람만을 검색하려고 할 경우에 NOT LIKE 연산자를 사용

SELECT *

FROM EMP

WHERE ENAME NOT LIKE '%A%';

 

4) IS NULL과 IS NOT NULL

- 어떤 컬럼을 NULL , 모르는 값과 같다(=)라는 것은 의미상으로 말이 되지 않기 때문에 = 대신 IS NULL 연산자를 사용해야 함

대상컬럼 IS (연산자) NULL(비교값)

 

- 이번에는 IS NULL 연산자를 사용하여 커미션을 받지 않는 사원을  검색해보자.

SELECT *

FROM EMP

WHERE COMM IS NULL;

 

5) 정렬을 위한 ORDER BY

- 정렬이란 크기 순서대로 나열하는 것을 의미

- 오름차순(ascending) 정렬 방식

- 작은 것이 위에 출력되고 아래로 갈수록 큰 값이 출력

- 내림차순(descending) 정렬 방식이 큰 값이 위에 출력되고 아래로 갈수록 작은 값이 출력

- 로우를 정렬하기 위해서는 SELECT 문에 ORDER BY 절을 추가하고 어떤 컬럼을 기준으로 어떤 정렬을 할 것인지를 결정해야 함

 

  ASC(오름차순) DESC(내림차순)
숫자 작은 값부터 정렬 큰 값부터 정렬
문자 사전 순서로 정렬 사전 반대 순서로 정렬
날짜 빠른 날짜 순서로 정렬 늦은 날짜 순서로 정렬
NULL 가장 마지막에 나온다. 가장 먼저 나온다.

6) 오름차순 정렬을 위한 ASC

- 오름차순 정렬은 작은 값부터 큰 값으로 정렬하는 것을 의미

- (:1~9, ‘A’~‘Z’) 이를 위해서는 ASC를 칼럼 다음에 기술해야 하는데 만일 생략하게 되면 디폴트로 ASC로 지정되어 있기 때문에 오름차순으로 출력 됨

 

급여 컬럼을 기준으로 오름차순으로 정렬해보자.

SELECT *

FROM EMP

ORDER BY SAL ASC;

 

7) 내림차순 정렬을 위한 DESC

- 내림차순 정렬은 큰 값부터 작은 값으로 정렬을 하는 것 (:9~1, Z~A)

 

급여를 많이 받는 사람부터 적게 받는 사람 순으로 순차적으로 출력해보자

SELECT *

FROM EMP

ORDER BY SAL DESC;

 

8) 날짜 순으로 출력

- 날짜의 경우에도 오름차순 혹은 내림차순으로 출력 가능

- 오름차순으로 지정하면 가장 오래된 과거의 시점이 가장 위에 출력되고 아래로 갈수록 최근 시점이 출력

- 내림차순인 경우에는 최근 시점부터 출력

 

가장 최근에 입사한 사람부터 출력해보자.

SELECT *

FROM EMP

ORDER BY HIREDATE DESC;

 

2. SQL 주요 함수

1) 숫자 함수

구 분 설 명
ABS 절대값을 구한다.
COS COSINE 값을 반환한다.
EXP e(2.71828183…)n승을 반환한다.
FLOOR 소수점 아래를 잘라낸다.(버림)
LOG LOG값을 반환한다.
POWER POWER(m, n) mn승을 반환한다.
SIGN SIGN (n) n<0이면 –1, n=0이면 0, n>0이면 1을 반환한다.
SIN SINE값을 반환한다.
TAN TANGENT값을 반환한다.
ROUND 특정 자릿수에서 반올림한다.
TRUNC 특정 자릿수에서 잘라낸다. (버림)
MOD 입력 받은 수를 나눈 나머지 값을 반환한다.

2) 절대값 구하는 ABS 함수

- ABS 함수는 절대값을 구합니다. 절대값은 방향은 없고 크기만 있는 것으로서 주어진 데이터가 음수일 경우 양수로 표현

 

-10 에 대한 절대값을 구해보자

SELECT -10, ABS(-10)

FROM DUAL;

3) 소수점 아래를 버리는 FLOOR 함수

SELECT   34.5678,  FLOOR(34.5678)

 FROM DUAL;

4) 특정 자릿수에서 반올림하는 ROUND 함수

SELECT 34.5678, ROUND(34.5678)

FROM DUAL;

5) 특정 자릿수에서 잘라내는 TRUNC 함수

SELECT TRUNC(34.5678, 2), TRUNC(34.5678, -1), TRUNC(34.5678)

FROM DUAL;

6) 나머지를 구하는 MOD 함수

SELECT MOD (27, 2), MOD (27, 5), MOD (27, 7)

FROM DUAL;