학습 목표
• 기본적인 쿼리 구조에 대해 살펴보자
Basic Query Structure
• DDL – 스키마 정의 , 수정 , 삭제에 사용
• DML – 데이터 질의 , 삽입 , 삭제 , 수정하는데 사용
• select, from, where 절의 결과는 relation
SQL 쿼리 전형적인 형태
결과로 얻고 싶은 속성 나열 쿼리에 사용되는 relation 의 이름 들
사용자가 원하는 검색 조건
Select 절
• 원하는 정보를 가지고 있는 속성들을 적어준다
-> 관계 대수 연산의 Selection 연산과 Projection 연산을 수행 (Projection 연산은 결과인 최종 릴레이션을 가져올 때 수행 )
• 대소문자 구별 X
Select 절
• 릴레이션의 중복 뿐만 아니라 결과 쿼리의 중복 값도 허용 -> 중복을 제거하고 싶으면 distinct 라는 키워드 사용
• all 키워드 – 중복된 결과 제거 X -> 디폴트 값
Select 절
• 사칙 연산을 포함하면서 상수 또는 tuple 의 속성에 작용하는 산술 연산 포함 가능
• 예 1) – salary/12 -> 쿼리 결과에 salary 를 12 로 나눈 값이 보여 진다
-> 이 쿼리는 결과로 salary 를 12 로 나눈 값을 보여줄 뿐 원래의 r
elation 에는 아무런 변화를 주지 않는다
Where 절
• 쿼리의 결과로 나올 데이터의 조건을 써준다 (from 절의 relation 에 서 조건에 만족하는 행 만을 추출하여 가져온다 )
• 관계 대수 연산의 selection 연산과 같은 동작을 수행 (relation 에서 tuple 을 select 하는 것 )
• SQL 은 where 절에서 and, or, not 과 같은 logical connectives 를 사용 ( 비교한 결과는 이러한 logical connectives 를 사용하여 합칠 수 있다 ) 그리고 날짜 , 시간과 같은 특수한 타입 뿐만 아니라 문자열 이나 비교연산자들도 사용 가능
From 절
• 쿼리를 수행하기 위해 접근해야 하는 relation 을 나열
-> 여기서 relation 들은 , 로 구분하고 나열된 relation 들로 Carte sian product 연산을 한다
• 결과 릴레이션은 from 절에 나열된 모든 릴레이션의 속성들을 다 가진다
From 절
• 결과 relation 에 같은 이름을 갖는 속성이 2 개 있다 그래서 어느 relation 으로부터 왔는지 구분하기 위해 속성의 이름 앞에 relation 의 이름을 적어준다
• Relation 의 기본키는 관습적으로 가장 앞부분에 위치
• Cartesian product 결과로 연관이 없는 페어도 만들 어지므로 이 연산은 단독적으로 사용 X
-> 그래서 where 절과 함께 사용해야 유용 ( 생성된 조 합에서 필요한 tuple 들로 걸러낼 수 있다 )
Joins
• 두 개 이상의 relation 을 함께 사용해서 원하는 데이터를 얻는 방법
• from 절과 where 절 이용
Joins
• From 절에서 두 relation 에 대한 cartesian product 를 한 결과 relation 을 얻을 수 있다 ( 결과는 두 rela- tion 의 모든 tuple 의 페어로 구성된 tuple 들로만 이 루어진 relation)
• where 절로 교수님이 가르치는 과목이라는 조건을 만 족시키기 위해 두 relation 에 공통으로 들어있는 속성 인 ID 를 이용 (teaches 에선 외래 키 , instructor 에 선 기본 키 )
• 이렇게 공통된 속성을 이용해 두 relation 의 tuple 들 의 페어 중에서 원하는 tuple 만을 찾아낼 수 있다
• 예 ) 대학에서 수업하는 모든 교수님의 이름과 과목 ID 를 찾는 것