본문 바로가기
KNOU/요약정리

[데이터베이스시스템] SQL(3)

by bottlesun 2024. 5. 25.
728x90

데이터 검색

집계 함수

  1. 특정 컬럼에 집계 함수를 통해 다양한 통계 연산을 수행할 수 있는 기능
  2. SELECT 절 또는 HAVING절에 기술
  3. 집계 함수의 종류

→ COUNT : 컬럼에 있는 값들의 개수

→ SUM : 컬럼에 있는 값들의 합

→ AVG : 컬럼에 있는 값들의 평균

→ MAX : 컬럼에서 가장 큰 값

→ MIN : 컬럼에서 가장 작은 값

집계 함수의 사용

SELECT COUNT(단과대학)
		FROM 학과

그룹 질의

  • 특정 기준으로 레코드를 그룹화하고 각 레코드 그룹에 대해 집계 함수를 적용하는 질의
  • 구문 형식
SELECT 질의
		GROUP BY 컬럼
  • [주의] SELECT 절에 그룹의 기준과 집계 함수 이외의 컬럼은 포함될 수 없음

HAVING 절

  • 그룹 질의의 결과 레코드에 대해 출력 조건을 기술하기 위한 절
  • 구문 형식
	SELECT 질의
		GROUP BY 컬럼
		HANING 조건
  • 조건 기술 절

→ WHERE : 레코드에 대한 조건을 기술

→ HAVING : 집계 결과 레코드에 대한 조건을 기술

중첩 질의

  • SELECT 문 내부에서 독립적으로 실행 가능한 또 다른 SELECT 문이 내포되어 있는 질의
  • 일반적으로 내부 질의의 처리결과를 외부 질의에서 재사용
  • 중첩 질의의 종류

→ FROM 절에서의 중첩 질의 활용

  • FROM 절에서의 결과 집합을 SELECT에서 재검색

→ WHERE 절에서의 중첩 질의 활용

  • WHERE 절에서의 결과 집합을 활용하여 외부 질의에서 레코드의 출력 여부를 결정
  • IN , NOT IN , EXISTS, NOT EXSISTS 사용
  • 구문 형식
SELECT 컬럼1
			 FROM(SELECT 컬럼1 FROM 테이블 WHERE 조건)
			 WHERE 조건
SELECT 컬럼1
			 FROM 테이블1
			 WHERE 컬럼 연산자 (SELECT 컬럼1 FROM 테이블 WHERE 조건)

조인질의

  • 테이블 간의 관련성을 이용하여 두 개 이상의 테이블에서 데이터를 검색하는 절의 기법
  • ER 모델링 및 정규화 기법으로 여러 테이블로 분리된 정보를 통합하여 검색 시 유용
  • 조인 질의의 종류

→ 내부조인

→ 외부조인

내부 조인

  • 두 개 이상의 테이블에서 조인 조건을 만족하는 레코드만 결합하여 출력 결과에 포함시키는 연산
  • 조인 조건은 WHERE 절이 아닌 ON 절에 기록
  • ANSI SQL 표준과 사실상의 표준인 Oracle사 가 제안한 조인 형식이 사용
  • 구인형식
SELECT 컬럼1
			FROM 테이블1
			ON 조인조건1
			[WHERE 조건]

자연 조인

  • 두개 이상의 테이블을 하나의 테이블로 결합하여 내부 조인과 매우 유사한 기능
  • 두 테이블에 동일한 이름의 컬럼에 대해 값이 같은 레코드를 결합하는 내부 조인
  • 구인형식
SELECT 컬럼1
			 FROM 테이블1
			 [WHERE 조건]

외부 조인의 개념

  • 내부 조인(Inner join)은 조인조건에 일치하는 레코드만 결합하여 결과를 생성

→ 조인 결과에 정보의 손실이 발생

  • 외부 조인은 조인 조건에 맞지 않는 레코드도 질의의 결과에 포함시키는 질의
  • 외부 조인의 종류

→ 왼쪽 외부 조인(left outer join)

→ 오른쪽 외부 조인(right outer join)

→ 완전 외부 조인(full outer join)

  • 구문형식
SELECT 컬럼 as 별칭
	FROM 테이블 as 별칭
	LEFT|RIGHT JOIN [OUTER] JOIN
	테이블 as 별칭
	ON 컬럼 = 컬럼
	[WHERE 절]

셀프조인

  • 한 테이블이 자기 자신과 조인되는 형태
  • 동일한 이름의 테이블에 대한 조인이므로 반드시 테이블 이름에 대한 별칭이 의무적으로 사용

뷰의 개념

  • 데이터를 저장하고 있는 하나 이상의 테이블을 유도하여 생성하는 가상의 테이블(virtual table)

→ 데이터 독립성 : 원본 테이블의 구조가 바뀌어도 뷰를 이용한 작업은 정의만 변경되어 응용 프로그램에 영향이 없음

→ 데이터보안 : 사용자에게 원본 테이블의 일부컬럼에 대한 접근을 허용하여 보안 효과를 향상

→ 다양한 구조의 테이블 사용 : 사용자의 요구사항에 맞는 테이블 구조를 제공

→ 작업의 단순화 : 복합한 질의문을 뷰로 단순화

→ 데이터 무결성 : WITH CHECK OPTION 을 이용하여 뷰 생성에 위배되는 수정작업을 거부

뷰의 생성

  • 생성되는 뷰의 구조는 SELECT 문의 결과로 결정
  • 구문 형식
CREATE VIEW 뷰이름 AS (SELECT 컬럼 FROM 테이블 [WHERE 조건])
[WITH CHECK OPTION]

뷰의 수정 및 삭제

  • 뷰의 수정은 생성과 동일하게 새로운 SELECT 문의 결과로 변경
  • 구문 형식
ALTER VIEW 뷰이름(컬럼1) as (SELECT 컬럼 FROM 테이블 [WHERE 조건])
DROP VIEW 뷰이름

뷰를 이용한 데이터 검색

  • 뷰는 가상의 테이블이므로 데이터 조작은 테이블 조작과 동일하게 수행
  • 구문형식
SELECT 컬럼1 FROM 뷰이름 
	WHERE 조건
  • 실행형식
SELECT 컬럼1 FROM 뷰이름
	WHERE 조건 AND 뷰 정의 조건

뷰를 이용한 데이터 삽입

  • 뷰에 대한 INSERT 문의 원본 테이블에서 실행

→ PRIMARY KEY , NOT NULL 등의 제약사항이 위배되는 경우 삽입이 불가능

→ 원본 테이블에 존재하는 컬럼이지만 뷰에는 없는 컬럼에 삽입하는 경우 실행 불가능

→ 조인 질의 또는 그룹 질의가 적용된 뷰는 데이터 삽입 및 수정이 불가능

→ WITH CHECK OPTION 이 적용된 뷰는 위배되는 사항은 없지만 뷰에 맞지 않는 조건일 경우 실행 불가능

728x90

댓글