5. Relational Algebra

출처: https://velog.io/@khs0415p/8-%EA%B4%80%EA%B3%84-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%97%B0%EC%82%B0
관계대수(Relational Algebra)는 관계형 데이터베이스에서 데이터를 검색하거나 조작하기 위한 수학적 이론의 기초가 되는 개념입니다다. 이 글에서는 관계대수의 기본 연산과 추가 연산이 어떤 문법으로 SQL질의어에 활용되었는지를 실행 결과와 함께 정리하겠습니다.
1. 관계대수의 기본 연산
1.1 선택 연산 (Selection)
- 조건에 맞는 레코드(행)를 선택합니다.
- SQL의
WHERE
절에 해당합니다.
예제
SELECT *
FROM EMPLOYEE
WHERE DEPARTMENT = '개발';
실행 결과
EMPLOYEE_ID | NAME | DEPARTMENT | SALARY |
---|---|---|---|
1 | 김철수 | 개발 | 5000 |
3 | 이민호 | 개발 | 4000 |
1.2 추출 연산 (Projection)
- 특정 속성(열)만 추출합니다.
- SQL의
SELECT
절에 해당합니다.
예제
SELECT NAME, SALARY
FROM EMPLOYEE;
실행 결과
NAME | SALARY |
---|---|
김철수 | 5000 |
박영희 | 4500 |
이민호 | 4000 |
1.3 재명명 연산 (Renaming)
- 테이블이나 속성에 별칭을 부여합니다.
예제
SELECT NAME AS EMPLOYEE_NAME, SALARY AS MONTHLY_INCOME
FROM EMPLOYEE;
실행 결과
EMPLOYEE_NAME | MONTHLY_INCOME |
---|---|
김철수 | 5000 |
박영희 | 4500 |
이민호 | 4000 |
1.4 집합 연산 (Set Operations)
- 테이블 간의 연산을 수행합니다.
1.4.1 합집합 (UNION)
- 두 테이블의 모든 행을 합집합으로 반환합니다.
SELECT NAME FROM EMPLOYEE_A
UNION
SELECT NAME FROM EMPLOYEE_B;
1.4.2 교집합 (INTERSECT)
- 두 테이블에 공통으로 존재하는 행을 반환합니다.
SELECT NAME FROM EMPLOYEE_A
INTERSECT
SELECT NAME FROM EMPLOYEE_B;
1.4.3 차집합 (MINUS)
- 첫 번째 테이블에만 있는 행을 반환합니다.
SELECT NAME FROM EMPLOYEE_A
MINUS
SELECT NAME FROM EMPLOYEE_B;
1.5 카티션 프로덕트 (Cartesian Product)
- 두 테이블 간의 모든 가능한 행 조합을 반환합니다.
SELECT *
FROM EMPLOYEE
CROSS JOIN DEPARTMENT;
2. 관계대수의 추가 연산
2.1 조인 연산 (Join)
세타 조인 (Theta Join)
- 특정 조건에 따라 두 테이블을 결합합니다.
SELECT *
FROM EMPLOYEE E
JOIN DEPARTMENT D
ON E.DEPARTMENT_ID = D.DEPARTMENT_ID;
자연 조인 (Natural Join)
- 공통된 속성을 기준으로 테이블을 결합합니다.
SELECT *
FROM EMPLOYEE
NATURAL JOIN DEPARTMENT;
외부 조인 (Outer Join)
- 조인 조건을 만족하지 않는 행도 포함합니다.
SELECT *
FROM EMPLOYEE E
LEFT OUTER JOIN DEPARTMENT D
ON E.DEPARTMENT_ID = D.DEPARTMENT_ID;
2.2 지정 연산
- 중간 결과에 이름을 부여하거나 쿼리를 분리합니다.
예제
WITH TEMP AS (
SELECT NAME, SALARY
FROM EMPLOYEE
WHERE SALARY > 4500
)
SELECT *
FROM TEMP;
2.3 나누기 연산 (Division)
- 테이블 A에서 테이블 B에 있는 모든 조건을 만족하는 행만 반환합니다.
예제
SELECT STUDENT_ID
FROM ENROLLMENT
WHERE COURSE_ID IN (
SELECT COURSE_ID
FROM REQUIRED_COURSES
);
3. 결론
관계대수는 관계형 데이터베이스에서 데이터를 조작하거나 검색하는 데 필수적인 개념입니다. 기본 연산(선택, 추출, 재명명 등)과 추가 연산(조인, 나누기 등)을 이해하면 SQL을 정의, 조작하는 데에 더 많은 이해를 도울 수 있습니다.