오래 못 할 짓 하지 않기

[ DB ] 4. More SQL 본문

3학년 1학기/데이터베이스(DB)

[ DB ] 4. More SQL

쫑알bot 2024. 3. 31. 13:44
728x90

With

: 임시적으로 만드는 Relation table

 

https://royzero.tistory.com/entry/SQL-WITH%EC%A0%88-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

 

여기에서 VNDR_CODE가 1001이나 1002인것들만 추출한다고 해보자

 

위 테이블을 보면 2개의 Select 덩어리가 있다.

두 개의 덩어리는 다 같은 내용에다가 마지막 where절 부분만 다르다.
Select + From + Join 만 같고 Where만 다르다면, Where 전 부분을 한 덩어리로 치환할 수 있지 않을까?

라는 생각에서 시작한다.

 

https://royzero.tistory.com/entry/SQL-WITH%EC%A0%88-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

 

이렇게 완성 가능하다.

 

그냥 긴 구문을 하나의 변수에 담아둔다고 생각하면 편하다.

그걸 Table로 사용할 수 있기 때문에 From에 넣어도 된다.

 

 

 

IN / NOT IN

 

 

 

다음과 같이 2017 2학기, 2018 1학기에 열린 수업을 조회한다고 했을 때

Outer 쿼리에는 2017 2학기 수업들을 골라내고, 그 뒤 조건으로는

그렇게 골라낸 course_id 중에서 뒤에 Subquery에 있는 것들을 골라낸다는 뜻이다.

 

내가 적은 AttributeIn 뒤에 오는 결과에 포함된다면 조건에 통과

 

 

Not In은 그 반대


 

ALL

 

Where 뒤에 있는 salary랑 

ALL 뒤에 오는 결과들이랑 [ 모두 비교 ] 하여 하나라도 만족하지 않는다면 False 

 

 

 

 

 


Some

: 뒤에 오는 집단에서 하나라도 조건에 포함된다면

 

Bio 부서에 있는 사람들 중에 한 명에 대해서라도 월급을 더 많이 받는 직원을 뽑아라.

위 쿼리로 적을 수 있지만 

아래 쿼리도 같은 내용인데 Some을 사용한다.

 

 

Salary > Some ( 뒤에 오는 집단)

= 뒤에 오는 집단의 Salary보다 높은 게 있으면 통과 

 

 


Exists / Not Exists

 

2017 2학기 and 2018 1학기에 열린 course_id를 출력해라

 

> 2017 2학기에 열린 수업 course_id가 , 2018 1학기에 열린 수업 course_id를 뽑아낸 relation에 존재하는지 판단.

 

 

 


UNIQUE

2017년에 딱 한 번 수업한건지 판단

 

> 수업 course_id 뽑을거임

> 근데 조건은 2017 Relation에서 UNIQUE한 거면 뽑음

 

 


ER

 = Entity - Relation

 

 

E-R Schema를 짤 때

              피해야 하는 2가지

 

1) Redundancy : 중복되면 안 된다.

2) Incompleteness : 설계가 완벽해야한다.

 

 

구성 요소)

 

Entity : Data object  /  ex) 사람, 회사

Relationship sets : Entity 간의 관계를 설명해준다. / ex) 사람 사람 : 친구, 부모, 연인 / ex) 회사 : 자회사, 하청업

Attributes : Entity에 들어가는 세부 내용  /  ex) 이름 , 부서 

Entity : Instructor , Student

Relationship set : advisor

Attributes : ID , Name , Salary / ID , name, tot_cred

 

 

(출처)

한동대학교 홍참길교수님 - DB

 

 

(참고)

 

https://royzero.tistory.com/entry/SQL-WITH%EC%A0%88-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

'3학년 1학기 > 데이터베이스(DB)' 카테고리의 다른 글

[ DB ] 6. 정규화 ( Normalization )  (0) 2024.04.08
[ DB ] 5. E-R Model  (0) 2024.04.08
[ DB ] 3. SQL ( DML )  (0) 2024.03.18
[ DB ] 2. R - DBMS(2)  (0) 2024.03.11
[ DB ] 1. R - DBMS  (0) 2024.03.07