Xerath(제라스) 2022. 4. 25. 20:11
728x90
반응형

기능 및 구문 측면에서 진보된 SQL

1. 집계 함수(Aggregate Functions)

- avg

- min

- max

- sum

- count

Select count(*) from student; //count(값의 개수) 함수

Select avg(salary), max(salary), min(salary) //avg(평균), max(최대), min(최소) 함수
from professor
where deptName='CS';

Select count(distinct pID) //이런 식으로 distinct 효과를 주어 연산할 수도 있음.
from teaches
where semester='Spring' and year=2010;

Select sum(salary) from professor; //sum(값의 합) 함수

- group by 절

: from-where절에서 선택된 영역에서 group 속성으로 그룹핑을 하는 구문

Select deptName, count(*)
from professor
group by deptName;

Select avg(salary)
from professor
group by deptName;

- having 절 

: group by 절에 의해 나뉜 상태에서 having 절 조건으로 필터링함.

Select deptName, avg(salary)
from professor
group by deptName
having avg(salary)>6900;

- 널 값에 대한 집계 함수의 처리 방식

 

→ 집계함수는 기본적으로 널 값을 무시하고서 연산을 함.

→ 모든 값이 null이면 count 함수는 0을, 나머지 집계 함수들은 null을 반환함.

→ 널값은 null이라는 하나의 값으로 분별될 수 있음.

 

 

2. 조인 테이블(Joined Relations)

 

1) Inner join

- inner join ~ on ~

- inner join ~ using(A1, A2, ...)

- natural join ~

 

2) Outer join

- left(right, full) outer join ~ on ~

- left(right, full) outer join ~ using(A1, A2, ...)

- natural left(right, full) outer join ~

 

3. 중첩 서브질의(Nested Subqueries)

 

- 단일 로우 서브질의(Single-row Subquery)

: where 절에 단일 tuple을 반환하는 서브질의를 사용함.

 

- IN 연산자

: 단일 값이 다수 값에 속하는지를 검사함.

- Get names and salaries of professor who has ID with 10 or 21 or 22.

Select name, salary
from professor
where pID in (10,21,22);

또는

Select name, salary
from professor
where pID=10 or pID=21 or pID=22;

- SOME(ANY) 연산자

(5 < some {0, 5, 6}) = true

(5 < some {0, 5}) = false

(5 = some {0, 5}) = true

(5 ≠ some {0, 5, 6}) = true

 

(= some) ≡ in

(≠ some) ≢ not in

 

- ALL 연산자

(5 < all {0, 5, 6}) = false

(5 < all {6, 7}) = true

(5 = all {4, 5}) = false

(5 ≠ all {6, 7}) = true

 

(≠ all) ≡ not in

(= all) ≢ in

3-2. 상관 서브질의(Correlated Subquery)

 

unique는 tuple의 속성 중 하나라도 null 값을 가지면 동일하지 않다고 판별함.

 

unique {<1, 2>, <1, 2>} :false

unique {<1, 2>, <1, 3>} :true

unique {<1, 2>, <1, null>} :true

unique {<1, null>, <1, null>} :true

 

4. 랭킹(Ranking)

5. 기타 기능(More Features)

 

728x90
반응형