◆그룹화
●GROUP BY절에 사용된 애트리뷰트에 동일한 값을 갖는 투플들이 각각 하나의 그룹으로 묶인다.
▷따라서 SELECT절에서는 각 그룹마다 하나의 값을 갖는 애트리뷰트, 집단 함수, 그룹화에 사용된 애트리뷰트들만 나타날 수 있다.
○SELECT DNO, AVG(SALARY) AS AVGSAL, MAX(SALARY) AS MAXSAL
○FROM EMPLOYEE
○GROUP BY DNO;
●HAVING절
▷이 조건을 만족하는 그룹들만 질의 결과에 나타난다.
▷GROUP BY절 이후에 적용한다.
○HAVING AVG(SALARY) >= 2500000;
●집합 연산 <그림1>
▷UNION ALL(합집합)을 제외하고 결과가 오름차순으로 정렬된다.
▷UNION ALL을 제외하고 모든 집합 연산의 결과 릴레이션에서 중복된 투플들이 자동적으로 삭제된다.
▷합집합 호환성을 가져야 한다.
◆조인 <그림2>
●두 개 이상의 릴레이션으로부터 연관된 투플들을 결합한다.
▷주로 WHERE절에서 비교연산자를 사용하여 사용된다.
▷조인 조건이 명확해지도록 애트리뷰트 이름 앞에 릴레이션 이름이나 투플 변수를 사용하는 것이 좋다.
○EMPLOYEE.DNO
OR
○FROM EMPLOYEE AS E, DEPARTMENT AS D \N E.DNO
●자체 조인(self join)
▷한 릴레이션에 속하는 투플을 동일한 릴레이션에 속하는 투플들과 조인하는 것을 자체 조인이라고 부른다.
○SELECT E.EMPNAME, M.EMPNAME
○FROM EMPLOYEE E, EMPLOYEE M
○WHERE E.MANAGER = M.EMPNO ;
●조인과 ORDER BY의 결합 <그림3>
◆중첩 질의(nested query) / 부질의(subquery)
●중첩 질의로 결과로 반환 될 수 있는 값
●1. 한 개의 스칼라 값 <그림>
▷비교연산자를 사용하여 중첩 질의의 결과와 비교하는데
▷중첩 질의의 SELECT절에 사용된 애트리뷰트의 데이터 타입은 외부 질의의 WHERE절에 사용된 애트리뷰트의 데이터 타입과 같아야 한다.
●2. 한 개의 애트리뷰트로 이루어진 릴레이션 <그림>
▷WHERE절에서 IN, ANY(SOME). ALL, EXISTS와 같은 연산자를 사용해야 한다.
▷ANY 및 ALL과 결합하여 사용할 수 있는 비교연산자들이 있다.
▷=ANY는 IN과 의미가 같고, <>ALL은 NOT IN과 의미가 같다.
●3. 여러 애트리뷰트로 이루어진 릴레이션 <그림>
▷EXISTS 연산자를 사용하여 중첩 질의의 결과가 빈 릴레이션인지 여부를 검사한다.
*EXISTS subquery의 결과는 중첩 질의의 결과에 적어도 하나의 투플이 들어있으면 참이 되고, 그렇지 않으면 거짓이 된다.
*EXISTS 연산자는 단항연산자이다.
◆상관 중첩 질의(correlated nested query)
●중첩 질의의 WHERE절에 있는 프레디키트에서 외부 질의에 선언된 릴레이션의 일부 애트리뷰트를 참조하는 질의를 상관 중첩 질의라고 부른다.
●상관 중첩 질의에서는 외부 질의를 만족하는 각 투플이 구해진 후에 중첩 질의가 수행된다.
●따라서 상관 중첩 질의는 외부 질의를 만족하는 투플 수만큼 여러 번 수행될 수 있다.
◆그룹화
●GROUP BY절에 사용된 애트리뷰트에 동일한 값을 갖는 투플들이 각각 하나의 그룹으로 묶인다.
▷따라서 SELECT절에서는 각 그룹마다 하나의 값을 갖는 애트리뷰트, 집단 함수, 그룹화에 사용된 애트리뷰트들만 나타날 수 있다.
○SELECT DNO, AVG(SALARY) AS AVGSAL, MAX(SALARY) AS MAXSAL
○FROM EMPLOYEE
○GROUP BY DNO;
●HAVING절
▷이 조건을 만족하는 그룹들만 질의 결과에 나타난다.
▷GROUP BY절 이후에 적용한다.
○HAVING AVG(SALARY) >= 2500000;
●집합 연산 <그림1>
▷UNION ALL(합집합)을 제외하고 결과가 오름차순으로 정렬된다.
▷UNION ALL을 제외하고 모든 집합 연산의 결과 릴레이션에서 중복된 투플들이 자동적으로 삭제된다.
▷합집합 호환성을 가져야 한다.
◆조인 <그림2>
●두 개 이상의 릴레이션으로부터 연관된 투플들을 결합한다.
▷주로 WHERE절에서 비교연산자를 사용하여 사용된다.
▷조인 조건이 명확해지도록 애트리뷰트 이름 앞에 릴레이션 이름이나 투플 변수를 사용하는 것이 좋다.
○EMPLOYEE.DNO
OR
○FROM EMPLOYEE AS E, DEPARTMENT AS D \N E.DNO
●자체 조인(self join)
▷한 릴레이션에 속하는 투플을 동일한 릴레이션에 속하는 투플들과 조인하는 것을 자체 조인이라고 부른다.
○SELECT E.EMPNAME, M.EMPNAME
○FROM EMPLOYEE E, EMPLOYEE M
○WHERE E.MANAGER = M.EMPNO ;
●조인과 ORDER BY의 결합 <그림3>
◆중첩 질의(nested query) / 부질의(subquery)
●중첩 질의로 결과로 반환 될 수 있는 값
●1. 한 개의 스칼라 값 <그림>
▷비교연산자를 사용하여 중첩 질의의 결과와 비교하는데
▷중첩 질의의 SELECT절에 사용된 애트리뷰트의 데이터 타입은 외부 질의의 WHERE절에 사용된 애트리뷰트의 데이터 타입과 같아야 한다.
●2. 한 개의 애트리뷰트로 이루어진 릴레이션 <그림>
▷WHERE절에서 IN, ANY(SOME). ALL, EXISTS와 같은 연산자를 사용해야 한다.
▷ANY 및 ALL과 결합하여 사용할 수 있는 비교연산자들이 있다.
▷=ANY는 IN과 의미가 같고, <>ALL은 NOT IN과 의미가 같다.
●3. 여러 애트리뷰트로 이루어진 릴레이션 <그림>
▷EXISTS 연산자를 사용하여 중첩 질의의 결과가 빈 릴레이션인지 여부를 검사한다.
*EXISTS subquery의 결과는 중첩 질의의 결과에 적어도 하나의 투플이 들어있으면 참이 되고, 그렇지 않으면 거짓이 된다.
*EXISTS 연산자는 단항연산자이다.
◆상관 중첩 질의(correlated nested query)
●중첩 질의의 WHERE절에 있는 프레디키트에서 외부 질의에 선언된 릴레이션의 일부 애트리뷰트를 참조하는 질의를 상관 중첩 질의라고 부른다.
●상관 중첩 질의에서는 외부 질의를 만족하는 각 투플이 구해진 후에 중첩 질의가 수행된다.
●따라서 상관 중첩 질의는 외부 질의를 만족하는 투플 수만큼 여러 번 수행될 수 있다.
'학교수업 > 데이터베이스' 카테고리의 다른 글
데이터베이스 13주차 요약 (0) | 2023.01.31 |
---|---|
데이터베이스 12주차 요약 (0) | 2023.01.31 |
데이터베이스 10주차 요약 (4) | 2023.01.31 |
데이터베이스 9주차 요약 (0) | 2023.01.31 |
데이터베이스 8주차 요약 (0) | 2023.01.31 |