[데이터베이스시스템] 데이터베이스 언어-3
집계함수
특정 컬럼에 집계함수를 통해 다양한 통계 연산을 수행할 수 있는 기능. SELECT 절 또는 HAVING절에 기술
- COUNT : 컬럼에 있는 값들의 개수
- SUM : 컬럼에 있는 값들의 합
- AVG : 컬럼에 있는 값들의 평균
- MAX : 컬럼에서 가장 큰 값
- MIN : 컬럼에서 가장 작은 값
그룹질의
- GROUP BY 절
- 특정 기준으로 레코드를 그룹화하고 각 레코드 그룹에 대해 집계 함수를 적용하는 질의
- 구문형식 :
SELECT 질의 GROUP BY 컬럼
- 주의 : SELECT 절에 그룹의 기준과 집계 함수 이외의 컬럼은 포함될 수 없음
- 특정 기준으로 레코드를 그룹화하고 각 레코드 그룹에 대해 집계 함수를 적용하는 질의
- HAVING 절
- 그룹 질의의 결과 레코드에 대해 출력 조건을 기술하기 위한
- 구문형식 :
SELECT 질의 GROUP BY 컬럼 HAVING 조건
- WHERE = 레코드에 대한 조건 / HAVING = 집계 결과 레코드에 대한 조건
- 그룹 질의의 결과 레코드에 대해 출력 조건을 기술하기 위한
- 간혹 예시문을 보면 HAVING절에서 SELECT문의 AS를 사용하는 경우가 있었다.
실행 순서상 HAVING이 먼저고 SELECT가 나중인데 어떻게 실행되는건지 이해가 되지않아 찾아보았는데,
표준적인 문법상으로는 사용할수 없는것이 맞지만 MySQL에서 예외적으로 일부 평가한 select의 AS를 인식하는듯 보인다.
중첩 질의
SELECT문 내부에서 독립적으로 실행 가능한 또 다른 SELECT문이 내포되어 있는 질의.
일반적으로 내부 질의의 처리결과를 외부 질의에서 재사용
- FROM절에서의 중첩 질의 활용
- FROM 절에서늬 결과 집합을 SELECT에서 재검색
- 구문형식 :
SELECT 컬럼 FROM (SELECT 컬럼 FROM 테이블 WHERE 조건) WHERE 조건
- FROM 절에서늬 결과 집합을 SELECT에서 재검색
- WHERE절에서의 중첩 질의 활용
- WHERE 절에서의 결과 집합을 활용하여 외부 질의에서 레코드 출력 여부를 결정
- IN, NOT IN, EXISTS, NOT EXISTS 사용
- 구문형식 :
SELECT 컬럼 FROM 테이블 WHERE 컬럼 연산자 (SELECT 컬럼 FROM 테이블 WHERE 조건)
- WHERE 절에서의 결과 집합을 활용하여 외부 질의에서 레코드 출력 여부를 결정
JOIN
테이블 간의 관련성을 이용하여 두 개 이상의 테이블에서 데이터를 검색하는 질의 기법
ER 모델링 및 정규화 기법으로 여러 테이블로 분리된 정보를 통합하여 검색 시 유용
- 내부조인
- 두 개 이상의 테이블에서 조인 조건을 만족하는 레코드만 결합하여 출력 결과에 포함시키는 연산
- 조인 조건은 WHRER 절이 아닌 ON절에 기술
- 구문형식
SELECT 컬럼 FROM 테이블1 INNER JOIN 테이블2 ON 조인조건 WHERE 조건
- ANSI SQL 표준과 사실상의 표준인 오라클사가 제안한 조인 형식이 사용
- 오라클구문형식 :
SELECT 컬럼 FROM 테이블1, 테이블2 WHERE 테이블1.컬럼 = 테이블2.컬럼
- 두 개 이상의 테이블에서 조인 조건을 만족하는 레코드만 결합하여 출력 결과에 포함시키는 연산
- 내추럴조인
- 두 테이블에 동일한 이름의 컬럼에 대해 값이 같은 레코드를 결합하는 내부 조인 (내부조인과 유사)
- 구문형식
SELECT 컬럼 FROM 테이블1 NATURAL JOIN 테이블2 WHERE 조건
- 두 테이블에 동일한 이름의 컬럼에 대해 값이 같은 레코드를 결합하는 내부 조인 (내부조인과 유사)
- 외부 조인
- 조인 조건에 맞지 않는 레코드도 질의 결과에 포함시키는 질의
- LEFT OUTER JOIN / RIGHT OUTER JOIN / FULL OUTER JOIN
- 구문형식
SELECT 컬럼 FROM 테이블1 LEFT|RIGHT [OUTER] JOIN 테이블2 ON 테이블1.컬럼 = 테이블2.컬럼 WHERE 조건
- 조인 조건에 맞지 않는 레코드도 질의 결과에 포함시키는 질의
- 셀프조인
- 테이블이 자기 자신과 조인되는 형태
- 동일한 이름의 테이블에 대한 조인이므로 반드시 별칭이 의무적으로 사용
- 구문형식
SELECT 컬럼 FROM 테이블1 별칭1 INNER|OUTER JOIN 테이블2 별칭2 ON 조인조건
- 테이블이 자기 자신과 조인되는 형태
뷰
데이터를 저장하고 있는 하나 이상의 테이블을 유도하여 생성하는 가상의 테이블
- 독립성 : 원본 테이블의 구조가 바뀌어도 뷰를 이용한 작업은 정의만 변경되어 응용 프로그램에 영향이 없음
- 보안성 : 사용자에게 원본 테이블의 일부 컬럼에 대한 접근을 허용하여 보안 효과를 향상
- 편리성 : 복잡한 질의문을 뷰로 단순화 하여서 사용자의 요구사항에 맞는 테이블의 구조를 제공
- 데이터 무결성 : WITH CHECK OPTION을 이용하여 뷰 생성에 위배되는 수정작업을 거부
- 생성되는 뷰의 구조는 SELECT문의 결과로 결정
- 생성 구문형식
CREATE VIEW 뷰이름 AS (SELECT 컬럼 FROM 테이블1 WHERE 조건) [WITH CHECK OPTION]
- 수정 구문형식
ALTER VIEW 뷰이름 AS (SELECT 컬럼1, 컬럼2 .. 컬럼n) AS (SELECT 컬럼1, 컬럼2 .. 컬럼n FROM 테이블1 WHERE 조건)
- 삭제 구문형식
DROP VIEW 뷰이름