DB02
Structure of Relation Databases

- Attributes : domain내에 속한 속성들
- relation은 순서가 없다.
Database Schema
Keys
- 슈퍼키 : 해당 relation에서 각각의 tuple들을 구별할 수 있는 키
- 후보키 : 슈퍼키가 될 수 있는 여러가지의 키
- 외래키 : 하나의 relation에 나타난 다른 relation의 참조키
Schema Diagrams

The Relational Algebra

Select
- 주어진 조건을 만족하는 튜플들을 선택한다.
- =,≠,>,≥,<,≤,∧(and),∨(or),¬(not) 연산을 사용할 수 있다.
Project
- 남겨진 특정 속성을 가진 relation을 돌려준다.
- 중복된 행은 결과에서 제거된다.
Composition of Relational Operations
Cartesian-Product
- 합성곱 연산은 두 개의 relation에서 선택된 속성의 relation를 합쳐서 돌려준다.
Join
- 조인 연산은 select연산과 cartesian-product연산을 한 번에 연산해준다.
Union
Set-Intersection
- 여러 입력 relation들에 공통적으로 존재하는 행을 찾아준다.
Set-Difference
- 여러 입력 relations들에서 한 relation엔 존재하지만 다른 relation엔 존재하지 않는 행을 찾아준다.
Assignment
- 연산의 결과를 임시로 저장할 수 있게 해주는 연산이다.
Rename
- 재사용을 위한 연산의 결과에 이름을 붙여주는 연산이다.
Equivalent Queries
- 형태는 다르지만 같은 결과를 돌려주는 쿼리들이 있다.
SQL
- IBM 연구소에서 System R 프로젝트의 일환으로 개발된 언어이다.
SQL Parts
- DML : db에 정보를 질의하고 튜플을 삽입하고 제거하고 수정하는 기능을 한다.
- integrity : DDL은 무결성 제약성을 명시하는 명령어를 포함하고 있다.
- view definition : DDL은 view를 정의하는 명령어를 포함한다.
- transaction control : 트랜잭션의 시작과 끝을 정의하는 명령어를 포함한다.
- embedded SQL and dynamic SQL : 일반적인 프로그래밍 언어에 SQL 명령문이 어떻게 삽입되는지 정의된다.
- Authorization : relation과 view에 접근할 수 있는 명령어를 제공한다.
DDL
- relation의 정보와 구조를 정의하는 언어이다.
도메인 타입 in SQL
- char(n)
- varchar(n)
- int
- smallint
- numeric(p,d)
- real, double precision
- float(n)
Create Table Construct
- SQL은 relation을 정의하기 위해 create table 명령어를 사용한다.
Updates to tables
- insert : 행을 삽입
- delete : relation을 삭제
- drop table
- alter
Select Clause
Where Clause
from Clause
- relation에 포함된 쿼리 결과를 보여준다.
as Clause
- 결과 relation과 attributes를 재명명하도록 도와준다.
like Clause
- 문자열 비교를 위한 문자열 매칭을 할 수 있는 연산자이다.
%
: 아무 문자열이나 매칭된다.
_
: 아무 문자에 매칭된다.
order by Clause
between Clause
Set operation
union
: 합집합 결과를 보여준다.
intersect
: 교집합 결과를 보여준다.
except
: 차집합 결과를 보여준다.
- 뒤에
all
을 붙이면 중복된 행을 유지해준다.
Null value
- null은 미지정 값이나 값이 없다는 것을 나타낸다.
- null과 다른 타입의 연산의 결과는 null이다.
is null
or is not null
연산을 where 절에 넣어서 조건을 부여할 수도 있다
Aggregate function
- avg: 평균을 구해준다.
- min: 최솟값을 구해준다.
- max: 최댓값을 구해준다.
- sum: 합을 구해준다.
- count: 개수를 구해준다.
Aggregate function - Group By
- select clause 범위 밖의 aggregate function은 반드시 group by 절에 나타나야한다.
Aggregate function - Having
- having절은 grouping된 정보에 적용되어야 한다.
Nested subqueries
- 다른 쿼리 내에서 쓸 수 있는 select-from-where query이다.
- in : subquery의 결과에서 결과를 찾는다.
- > some : subquery의 결과의 일부와 비교한다.
- > all : subquery의 모든 결과와 비교한다.
- exists / not exists : subquery의 결과에 존재하는지 아닌지 알려준다.
- unique : subquery의 결과가 중복을 포함하는지 아닌지 알려준다.
subqueries in From Clause
- SQL은 from절에서 subquery를 쓸 수 있게 해준다.
With Clause
- With 절에 나타난 query에 결과에서만 존재하는 임시 relation을 정의하는 방법을 제공해준다.
Scalar Subquery