관계형 모델에서 관계형은 수학 집합론의 관계형 이론에서 유래했습니다.
SELECT * FROM sample1
UNION
SELECT * FROM sample2;
UNION 으로 SELECT 명령을 결합해 합집합을 구하는 경우, 각 SELECT 명령에 ORDER BY를 지정해 정렬할 수 없습니다.
ORDER BY 를 지정할 때는 마지막 SELECT 명령에만 지정하도록 합니다.
SELECT A as C FROM sample1
UNION B as C FROM sample2 ORDER BY C;
UNION을 하면 중복값이 존재하지않는 것을 전제로합니다. 하지만 중복을 제거하지않고 합치고 싶은 경우 UNION ALL을 사용합니다.
SELECT * FROM sample1
UNION ALL
SELECT * FROM sample2
집합 연산에서는 세로(행) 방향으로 데이터가 늘어나는 계산을 했습니다.
테이블 결합은 가로(열)방향으로 데이터가 늘어나는 계산입니다.
두 개의 집합을 곱하는 연산 방법으로 '적집합' 또는 카티전곱'이라 불립니다.
테이블을 두 개 지정하면 이들은 곱집합으로 계산이 됩니다.
SELECT * FROM 테이블명1, 테이블명2
교차결합의 경우 테이블 수가 많아지면 조합수가 엄청나게 늘어나 집합이 거대해집니다. 그래서 결합 방법으로는 교차결합보다 내부결합이 자주 사용되어집니다.
내부결합이란 교차결합으로 계산된 곱집합에서 원하는 조건을 검색하는 것입니다. (INNER JOIN)
SELECT * FROM 테이블명 1 INNER JOIN 테이블명2 ON 결합조건
외부 결합은 '어느 한 쪽에만 존재하는 데이터행을 어떻게 다룰지'를 변경할 수 있는 결합 방법
테이블에 새로운 행을 추가 했을 경우, 내부결합에서는 새로운 행이 제외가 되서 값을 찾을 경우 NULL 이 나옵니다. 그럴 경우 외부결합을 사용합니다.
관계형 모델의 기본적 요소는 Relation 입니다. 이는 SQL의 테이블에 해당됩니다.
SQL에서 행은 관계형 모델에서 '튜플'이라 불립니다. 이 릴레이션은 튜플의 집합입니다.
SELECT * FROM A UNION SELECT * FROM B
SELECT * FROM A EXCEPT SELECT * FROM B
SELECT * FROM A INTERSECT SELECT * FROM B
SELECT * FROM A, B
SELECT * FROM A CROSS JOIN B
SELECT * FROM A WHERE 조건
SELECT a FROM A
SELECT a FROM A INNER JOIN B ON a.no = B.no