DBMS - (9) The Basic SELECT Statement
The Basic SELECT Statement
- 1,2,3 순서로 어떤 SQL을 작성 할지 생각하면 된다.
select A1,A2,...,An (3) what to return
from R1,R2,...,Rm (1) relations
where condition (2) combine filter
Relational algebra of SELECT
- π(A1,A2,...,An)σ(condition)(R1XR2,...,XRm)
Example
College(cName, state, enrollment)
Student(sID, sName, GPA, size of HS)
Apply(sID, cName, major, decision)
Q1) GPA가 3.6 초과인 Student의 sID, sName, GPA
select sID, sName, GPA
from Student
where GPA > 3.6;
Q2) 지원서를 작성한 학생의 이름과 지원한 학과
select sName, major
from Student, Apply
where Student.sID = Apply.sID;
* 중복을 제거하고 싶은 경우 distinct 키워드를 사용한다.
relational algebra는 기본적으로 중복을 허용하지 않지만 SQL은 multi-set model을 사용하므로 기본적으로 중복을 허용한다.
Q3) condition을 추가한 select 작성법
select sName, GPA, decision
from Student, Apply
where Student.sID = Apply.sID
and sizeHS < 1000
and major = 'CS'
and cname = 'stanford';
Q4) ambiguous 문제가 발생하는 경우
select cName
from College, Apply
where College.cName = Apply.cName
and enrollment > 20000
and major = 'CS';
- cName attribute가 College, Apply relation에 모두 존재하므로 어느 relation의 cName인지 특정할 수 없는 모호성(ambiguous)문제가 발생한다. 이러한 경우 특정 relation의 attribute라는 것을 명시적으로 작성한다
> select College.cName
Q5) 정렬을 사용하는 경우
select Student.sID, sName, Apply.cName
from Student, College, Apply
where Apply.sID = Student.sID
and Apply.cName = College.cName
order by GPA desc[asc];
select Student.sID, sName, Apply.cName
from Student, College, Apply
where Apply.sID = Student.sID
and Apply.cName = College.cName
order by GPA desc, enrollment asc;
Q6) 약속된 특수문자를 사용하는 경우
select *
from Apply
where major like '%bio%';
% : some set of character
Q7) 결과로 반환될 relation에 새로운 attribute를 추가하는 경우
select sID, sName, GPA, sizeHS, GPA * (sizeHS/1000.0) as scaledGPA
from Student
Reference
https://www.youtube.com/watch?v=4IxirOdp6bw&list=PL6hGtHedy2Z4EkgY76QOcueU8lAC4o6c3&index=12
'데이터베이스' 카테고리의 다른 글
DBMS - (11) sub-query[from] (0) | 2019.08.04 |
---|---|
DBMS - (10) sub-query[where]: in, exists, all, any (0) | 2019.08.04 |
DBMS - (8) Introduction to SQL (0) | 2019.07.07 |
DBMS - (7) Relational Algebra - set operator, renaming (0) | 2019.06.27 |
DBMS - (6) Relational Algebra - select, project, join (0) | 2019.06.27 |