observe_db

[DB] Chap. 7 More SQL: Complex Queries, Triggers, Views, and Schema Modification 본문

학교 공부/데이터베이스(3-2)

[DB] Chap. 7 More SQL: Complex Queries, Triggers, Views, and Schema Modification

쩡윤 2023. 11. 6. 16:49

More Complex SQL Retrieval Queries

Nested Queries, joined tables, and outer joins, aggregate functions, grouping

 

NULL의 의미

-알 수 없는 값

-허용되지 않은 값

-해당 속성이 없음.

SQL은 세 가지 논리값을 가짐(TRUE, FALSE, UNKNOWN)

NULL=NULL 같은 비교는 자제.(하지마 그냥)

 

값이 Valid 하다. == constraint를 만족한다.

 

attribute가 NULL인지 확인하는 쿼리

IS 또는 IS NOT NULL

 

Nested queries: 완전한 select-from-where 블록에서 where문에 다른 쿼리가 있음.

-바깥 쿼리와 nested 서브쿼리

IN: 값 v와 값의 집합 V의 비교.

- v가 V의 원소인지

 

ANY(==SOME): 하나라도 있으면 TRUE

ALL: 모든 값들에 대해 TRUE이면 TRUE

 

이름 같은 attribute가 있으면 가칭으로 앞에 테이블 이름 붙여주기.

(이름이 같을 시 모호성이 증가)

 

nested query는 =나 IN 비교 연산자를 사용.

 

EXISTS: nested query가 empty인지 아닌지.

NOT EXISTS도 있음.

UNIQUE(Q): 쿼리 Q의 결과가 중복 튜플이 없는지.

 

이중부정 가능(A = ~(~A))

 

MySQL에서는 차집합(EXCEPT, MINUS) 연산이 없음.

=>돌려돌려 실행

 

AS: 새로운 이름 설정

 

JOIN 연산자는 INNER JOIN

-매칭되는 튜플만

 

Natural JOIN은 자연스럽게 조인되는거. condition만 맞으면.

-명시된 condition은 없음.

-암시적 EQUIJOIN

-R과 S(JOIN하는 schma)에 같은 이름을 가진 attribute가 있음.(당연히 type이 같음)

 

OUTER JOIN은 LEFT/RIGHT/FULL

-LEFT는 왼쪽을 모두 남기고. RIGHT는 오른쪽을, FULL은 양쪽 모두 남긴다.

-CROSS JOIN은 Cartesian Product 이용. Join Condition이 없는 경우는 모두 이 경우.

 

Aggregate Function

-COUNT, SUM, MAX, MIN, AVG

-HAVING은 전체 그룹을 선택할 때에 사용.

-SOME과 ALL은 Boolean 값에 적용

 

GROUP BY: grouping할 속성들 지정.

 

WITH: particular query에 사용할 테이블 지정.

 

CASE: 확실한 케이스에 대해 다른 경우가 가능한 값에 대해 사용.

 

Specifying Constraints  as Assertions and ACtions as Triggers

Create Assertion-제약조건의 추가 타입 제시/Create Trigger-특정 이벤트나 조건이 발생/ 모니터링에 사용

 

View

-다른 테이블로부터 유래된 테이블을 defining table이라고 한다.

-virtual table: 반드시 populated한것은 아님.

CREATE VIEW

항상 up-to-date: 사용자가 아닌 DBMS의 책임

DROP VIEW

 

Strategy1: Query modification approach

-필요할때 생성. 영구히 저장하지 않음

-underlying base tables의 쿼리에 수정

-실행하는데 시간이 걸리는 복잡한 쿼리를 통해 정의가 효과적이지 않음.

Strategy2: View Materialization

-일시적 view 테이블

-DBMS 정의

-즉시 업데이트/느린 업데이트/주기적 업데이트

COW(copy on Write)

여러개 테이블에서 join을 사용하여 정의된 뷰는 update 불가

그룹과 aggregate function을 사용하여 정의되어도 update 불가

 

in-line view

-FROM문에서 view table 정의될 수 있다.

-무허가 사용자에 대해 숨겨진 확실한 속성이나 튜플을 사용할 수 있다.

 

Schema Change Statements in SQL

테이블/속성/제약조건/다른 스키마 원소를 추가/삭제하면서 변경 가능

 

DROP 명령: table, domain, constraint등등

-CASCADE(열을 참조하는 모든 constraints와 view drop), RESTRICT(열을 참조하는 constraint나 view가 없을 때 성공)

 

ALTER

- 열(속성)을 추가/삭제

- 열 정의 변경

- 테이블 제약조건 추가/제거

Comments