일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 파싱
- 클래스
- 자연어처리
- 가상메모리
- 웹소프트웨어
- OS
- Linear Algebra
- 객체지향설계
- 소프트웨어공학
- Agile
- 애자일
- css
- C언어
- 스케줄러
- 프로세스
- 데이터분석
- DB
- 운영체제
- 파싱테이블
- 벡터
- React
- 컴파일러
- NLP
- 데이터베이스
- 836
- 랩실일기
- 오픈소스웹소프트웨어
- 언어모델
- 정보검색
- 컴파일
- Today
- Total
observe_db
[DB] Chap. 7 More SQL: Complex Queries, Triggers, Views, and Schema Modification 본문
[DB] Chap. 7 More SQL: Complex Queries, Triggers, Views, and Schema Modification
쩡윤 2023. 11. 6. 16:49More 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
- 열(속성)을 추가/삭제
- 열 정의 변경
- 테이블 제약조건 추가/제거
'학교 공부 > 데이터베이스(3-2)' 카테고리의 다른 글
[DB] Chap. 15 Relational Database Design Algorithms and Further Dependencies (1) | 2023.11.16 |
---|---|
[DB] Chap. 14 Basics of Functional Dependencies and Normalization for Relational Databases (1) | 2023.11.14 |
[DB] Chap. 9 Relational Database Design by ER-Relational Mapping (0) | 2023.11.13 |
[DB] Chap 8. The Relational Algebra (0) | 2023.11.13 |
[DB] Chap. 6 Basic SQL (0) | 2023.10.10 |