개발정보/DB

SQL 첫걸음 7장 복수 테이블 제어

dev김 2019. 1. 28. 15:46

집합 연산

union 합집합


select * from sample71_a

union

select * from sample71_b; 두개의 테이블이 합쳐서 나온다 중복제거

열의 자료형이 일치해야 한다


select a from sample71_a 세개의 테이블의 결합

union

select b from sample71_b

union

select age from sample31;


select a as c from sample71_a

union

select b as c from sample71_b order by c; 별명을 붙여서 정렬한다


union all 중복을 제거하지 않고 합치기(union은 기본이 distict중복제거)

oracle 교집합 intersect 차집합minus(except)


테이블 결합

곱집합 적집합 카티전곱 요소종류1 x 요소종류2 의 개수가 된다

cross join 교차결합 곱집합으로

select * from sample72_x, sample72_y; 복수테이블 지정시 교차결합


select 상품.상품명, 재고수.재고수 from 상품, 재고수

  where 상품.상품코드 = 재고수.상품코드    결합조건

    and 상품.상품분류 = '식료품';                  검색조건


inner join 내부결합

select 상품.상품명, 재고수.재고수             

  from 상품 inner join 재고수                   

    on 상품.상품코드 = 재고수.상품코드      on으로 결합조건

  where 상품.상품분류 = '식료품';


foreign key 외부키 : 다른 테이블의 기본키를 참조하는 열


외부결합 left join right join(기준이 left or right)

select 상품3.상품명, 재고수.재고수

  from 상품3 left join 재고수

    on 상품3.상품코드 =  재고수.상품코드

  where 상품3.상품분류 = '식료품';


select 상품3.상품명, 재고수.재고수       구식방법은 되도록 사용하지 않는다

  from 상품3, 재고수

  where 상품3.상품코드 = 재고수.상품코드(+) (oracle:부재가능한 테이블의 열에 +)

    and 상품3.상품분류 = '식료품';


관계형 모델

릴레이션은 테이블

attribute(속성)은 열

tuple(튜플)은 행

union(합집합) union

difference(차집합) except

intersection(교집합) intersect

cartesian product(곱집합) from복수 테이블, cross join

selection(선택) 튜플의 추출은 where 데이터 검색

projection(투영) 반환될 열 지정

join(결합) 내부결합