[Oracle] SQL문의 활용, 함수(집계함수, 그룹함수 등..)
NULL 값을 다른 값으로 변경하는 함수
NVL(컬럼명, '값') : NULL 값 대신 다른 값으로 변경 후 검색합니다.
NVL2(컬럼명, 'NULL이 아닐 때 값', 'NULL일 때 값') : NULL일 때의 값, NULL이 아닐 때의 값을 각각 설정합니다.
조건식
컬럼명 IS NULL : 컬럼 값이 NULL이면 참
컬럼명 IS NOT NULL : 컬럼 값이 NULL이 아니면 참
LIKE : 포함된 문자열의 값을 찾습니다, 문자의 개수도 제한을 줄 수 있습니다.
--TEAM테이블에서 팀이름 중 '천마'로 끝나는 팀이름 찾기
SELECT * FROM TEAM
WHERE TEAM_NAME LIKE '%천%마%';
--PLAYER테이블에서 김씨 찾기
SELECT * FROM PLAYER
WHERE PLAYER_NAME LIKE '김%';
--PLAYER테이블에서 김씨 두 자 찾기
SELECT * FROM PLAYER
WHERE PLAYER_NAME LIKE '김_';
--PLAYER테이블에서 김씨와 이씨 찾기;
SELECT * FROM PLAYER
WHERE PLAYER_NAME LIKE '김%' OR PLAYER_NAME LIKE '이%';
--PLAYER테이블에서 이씨가 아닌 사람 찾기;
SELECT * FROM PLAYER
WHERE NOT PLAYER_NAME LIKE '이%';
--PLAYER테이블에서 세 자가 아닌 김씨 찾기;
SELECT * FROM PLAYER
WHERE NOT PLAYER_NAME LIKE '김__' AND PLAYER_NAME LIKE '김%';
CONCATENATION(연결) : ||
SELECT PLAYER_NAME || '의 영어 이름은 ' || E_PLAYER_NAME || '입니다.' AS 자기소개 FROM PLAYER;
숫자형 함수(DUAL)
-- 절대값
SELECT ABS(-10) FROM DUAL;
-----결과 : 10
-- 양의정수(1), 영(0), 음의정수(-1) 판단
SELECT SIGN(4), SIGN(0), SIGN(-4) FROM DUAL;
----- 결과 : 1, 0 , -1
-- 나머지
SELECT MOD(10, 3) FROM DUAL;
----- 결과 : 1
-- 값보다 큰 최근접 정수
SELECT CEIL(3.14), CEIL(-3.14) FROM DUAL;
-----결과 : 4, -3
-- 값보다 작은 최근접 정수
SELECT FLOOR(3.14), FLOOR(-3.14) FROM DUAL;
-----결과 : 3, -4
-- 반올림
SELECT ROUND(3.5555555616) FROM DUAL;
SELECT ROUND(3.5555616, 2) FROM DUAL;
SELECT ROUND(3.354516, 1) FROM DUAL;
-----결과 : 4, 3.56, 3.4
-- 버림
SELECT TRUNC(3.9) FROM DUAL;
----결과 : 3
집계 함수
-- 여러 개의 값을 하나의 값으로 집계하여 나타냅니다.
-- ※ NULL은 포함하지 않습니다.
-- ※ WHERE 절에서는 사용할 수 없습니다.
--평균 : AVG()
--최대값 : MAX()
--최소값 : MIN()
--총 합 : SUM()
--개수 : COUNT()
SELECT AVG(HEIGHT), MAX(HEIGHT), MIN(HEIGHT), SUM(HEIGHT), COUNT(HEIGHT) FROM PLAYER;
정렬 : ORDER BY
-- ASC : 오름차순 정렬, 생략이 가능합니다.
-- DESC : 내림차순 정렬
조건문 : CASE
-- CASE WHEN THEN ELSE END 문법을 사용합니다.
-- EMP 테이블에서 SAL 3000이상이면 HIGH, 1000이상이면 MID, 다 아니면 LOW
GROUP BY : ~별(예 : 포지션 별 평균 키)
--문법 : GROUP BY 컬럼명 HAVING 조건식
※ WHERE 절에서는 집계함수를 사용하지 못하여 HAVING절에서 처리를 하지만,
WHERE절에서 처리를 할 수 있다면 WHERE절에서 먼저 처리를 해줍니다.
-- PLAYER 테이블에서 포지션 검색
SELECT "POSITION" FROM PLAYER
GROUP BY "POSITION"
HAVING "POSITION" IS NOT NULL;
SELECT "POSITION", AVG(HEIGHT), MIN(WEIGHT) FROM PLAYER
WHERE WEIGHT >= 80
GROUP BY "POSITION"
HAVING AVG(HEIGHT) >= 180;
SUB QUERY
--SELECT문에 SELECT를 한번 더 써서 사용하는 SQL문인데요, SELECT를 어디에 쓰는지에 따라 명칭이 달라집니다.
--FROM절 : IN LINE VIEW
--SELECT절 : SCALAR
--WHERE절 : SUB QUERY
'KoreaIt Academy > Oracle DBMS' 카테고리의 다른 글
[Oracle] JOIN, SQL실행순서 (0) | 2021.08.10 |
---|---|
[Oracle] 옵티마이저(OPTIMIZER) , 힌트(hint) (0) | 2021.08.09 |
[Oracle] 정규화 (0) | 2021.08.09 |
[Oracle] DCL(Data Control Language) , TCL(Transaction Control Language) (0) | 2021.08.07 |
[Oracle] DML(Data Manipulation Language) - 데이터 조작어 (0) | 2021.08.05 |
댓글