I. 그룹함수.
-SUM(합),AVG(평균),COUNT(총개수),MAX(최대값),MIN(최소값),STEDDEV(표준편차),VARIANCE
(분산)
-SELECT문에 그룹 함수를 사용하는 경우, 그룹 함수를 적용하지 않은 단순 컬럼은 올 수 없다.
GROUP BY
-어떤 컬럼 값을 기준으로 그룹함수를 적용해 줄지 기술해 주어야 할 경우에는 SELECT 문에 GROUP BY 절을 추가하되 GROUP BY 절 뒤에 해당 컬럼을 기술한다.
-GROUP BY절 뒤에 별칭 불가, 반드시 컬럼명 기술
EX)SELECT DEPTNO, AVG(SAL) : GROUP BY 절을 사용하지 않으면 개수가 매치되지 않음
FROM EMP
GROUP BY DEPTNO;
HAVING 조건
-WHERE은 특정 조건에 부합하는 자료만을 검색할 때 사용하는 절, 반면 HAVING절은 그룹 함수 사용 시 그룹 함수를 적용해서 나온 결과값 중에서 원하는 조건에 부합하는 자료만 산출할 때 사용하는 절
EX)부서의 최대값과 최소값을 구하되 최대 급여가 2900이상인 부서만 출력합니다.
부서:DEPTNO
급여:SAL
SELECT DEPTNO, MAX(SAL), MIN(SAL)
FROM EMP
GROUBY DEPTNO
HAVING MAX(SQL) > 2900;
II. 조인
- 한개 이상의 테이블에서 데이터를 조회하기 위해서 사용되는 것을 조인이라한다.
조인의 필요성: 데이터베이스에서는 데이터가 중복되면 여러 가지 이상 현상이 발생하기 때문에 데이터가 중복되지 않도록 하기 위해서 2개 이상의 테이블로 나누어서 정보를 저장해 놓는다. 하지만, 원하는 정보를 얻어오려면 여러 개의 테이블을 조인해야 한다.
Cross Join
- 2개 이상의 테이블이 조인될 때 where절에 의해 공통되는 컬럼에 의한 결합이 발생하지 않는 경우를 의미한다. 그렇기에 테이블 전체 해의 전체 컬럼이 조인되는 경우입니다.
EX)다음은 Cross Join으로 SELECT문의 FROM절에 사원(EMP) 테이블과 부서(DEPT) 테이블을 콤마로 연결하여 연속적으로 기술하는 방법입니다.
Select *
From emp, dept;
Equi Join
- 가장 많이 사용하는 조인 방법으로, 조인 대상이 되는 두 테이블에서 공통적으로 존재하는 컬럼의 값이 일치되는 행을 연결하여 결과를 생성하는 방법입니다.
-사원(EMP) 테이블과 부서(DEPT) 테이블의 공통 컬럼인 DEPTNO의 값이 일치되는 조건을 WHERE절에 기술하여 사용하였습니다. 두 테이블을 조인하려면 일치되는 공통 컬럼을 사용해야 합니다.컬럼이 이름이 같으면 혼동이 오기 때문에 컬럼 이름 앞에 테이블 이름을 기술합니다.
EX)다음은 사원 정보를출력할 때 각 사원이 소속된 부서의 상세 정보를 출력하기 위해 두 개의 테이블을 조인한 예입니다.
SELECT * : 컬럼이 동일한 경우에는 .Table 또는 .별칭 사용
FROM EMP, DEPT
WHERE EMP.DETNO = DEPT.DEPTNO;
Non-Equi Join
- 조인 조건의 특정 범위 내에 있는지를 조사하기 위해 where절의 조인 조건으로 = 연산자와 비교 연산자를 사용합니다.
EQUI JOIN과 NON-EQUI JOIN의 차이점
• EQUI JOIN : JOIN조건에 서로 다른 조건(=)을 가진 데이터를 JOIN해서 가져오는 방법
• NON-EQUI JOIN : 같은 조건이 아닌 크거나 작거나 하는 경우 JOIN을 수행하는 방법
Self Join
- 조인은 두개 이상의 서로 다른 테이블을 연결하기도 하지만 하나의 테이블 내에서 조인을 해야만 자료를 얻을 수 있는 경우도 있습니다. Self Join이란 말 그대로 자기 자신과 조인을 맺는 것
-별칭을 지정해서 두테이블이 존재하는 것처럼 사용
Ex)select employee.ename, manager.ename
From emp employee, emp manager
Where employee.mgr = manager.empno;
Outer Join
- 2개 이상의테이블이 조인될 때 어느 한쪽의 테이블에는 해당하는 데이터가 존재하는데 다른 쪽 테이블에는 데이터가 존재하지 않는 경우 그 데이터는 출력되지 않는 문제를 해결하기 위해서 사용되는 조인 기법
ANSI Join
1)ANSI Cross Join: ANSI구문을 사용하면 쉼표(,)없이 CROSS JOIN이라고 원하는 조인 타입을 명확하게 지정합니다.
2)ANSI inner Join: 동일 컬럼을 기준으로 조인하기 위한 EQUI JOIN을 ANSI조인에서는 FROM 다음에 INNER JOIN 이란 단어를사용하여 조인할 테이블 이름을 명시하고 ON절을 사용하여 조인 조건을 명시합니다. ‘=’(equal) 비교를 통해 같은 값을 가지는 로우를 연결하여 결과는 구하는 형태.
Ex)SELECT ENAME, DNAME
FROM EMP INNER JOIN DEPT
ON EMP.DEPTNO=DEPT.DEPTNO;
-ON : 조인 조건이나 논리 연상, 서브쿼리를 지정할 수 있다.
-USING절 : “ON EMP.DEPTNO = DEPT.DEPTNO”와 같이 작성하는 대신 “USING (DEPTNO)”라고 작성할 수 있다. USING 절은 두 테이블의 컬럼값이 동일할 때 조인되도록 지정한다.
주의할점: 테이블명을 명시할수도 별칭을 사용할 수도 없다.
3)Natural Join: USING이나 ON절보다
Ex)SELECT ENAME, DNAME
FROM EMP NATURAL JOIN DEPT;
4)AINSI Outer Join
-LEFT,RIGHT,FULL 3가지를 지원
-Outer Join은 어느 한쪽 테이블에는 해당하는 데이터가 존재하는데 다른쪽 테이블에는 데이터가 존재하지 않는 경우 그 데이터가 출력되지 않는 문제점을 해결하기 위해 사용하는 조인 기법.
III. 서브쿼리
- 서브쿼리란 SELECT문장 절 안에 포함된 또 하나의 SELECT문장. 서브쿼리를 포함하고 있는 쿼리문을 메인쿼리, 포함된 또 하나의 쿼리를 서브쿼리라 한다.
1)단일행 서브 쿼리는 수행 결과가 오직 하나의 로우(행, ROW)만을 반환하는 서브쿼리를 갖는 것
2)다중행 서브 쿼리는 서브 쿼리에서 반환되는 결과가 하나 이상의 행일때 사용하는 서브쿼리입니다. 종류: IN(포함), ANY=SOME(하나 이상 일치), ALL(모든값 일치), EXIST(하나라도 존재,참)
'SW > Database' 카테고리의 다른 글
[Oracle] 테이블스페이스 생성, 유저 생성, 유저 권한주기 (0) | 2019.05.10 |
---|---|
ORACLE_프로시저와 함수 (0) | 2017.02.14 |
ORACLE_PL/SQL (0) | 2017.02.14 |
ORACLE_시스템권한, 객체권한, 사용자생성 (0) | 2017.02.14 |
ORCLE_객체(인덱스,뷰,시노님) (0) | 2017.02.14 |