[DataBase System] ch06 - SQL

2023. 4. 14. 12:21DataBase/DB 문제풀이

[DataBase System] ch06 - SQL

책정보, 데이터베이스 시스템 : 네이버 책 (naver.com)

 

데이타베이스 시스템 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

 

문제 풀이

 

1 ) SQL에서 정의되는 테이블과 관계 데이터 모델에서 정의된 릴레이션과의 차이점을 설명하라

 

- 추상적 개념과 그 개념의 구체화가 큰 차이로 볼 수 있다. 릴레이션의 경우 추상적으로 표현된 하나의 개념이라면 테이블은 그 릴레이션을 구체적으로 표현한 것이라 볼 수 있다.


2 ) 커서란 무엇이고 삽입 SQL에서 어떻게 사용되는가를 설명하라

 

- 특정 SQL 문장을 처리한 결과를 담고 있는 영역을 가리키는 일종의 포인터

 

- 삽입하려는 데이터가 대량이고, 각 데이터가 다른 테이블에 의존하는 경우

- 대량의 데이터를 삽입할 때 일괄 처리를 수행하려는 경우


3 ) SQL에서 뷰는 어떻게 정의되는가? 뷰를 갱신할 때 일어나는 문제점은 무엇인지 설명하라.

 

- 다른 테이블로부터 유도된 이름을 가진 가상의 테이블

  • 문제점
    • 여러 테이블을 조합한 것이기에 뷰에서 데이터를 갱신하면 실제 테이블에서 데이터 일관성 유지에 어려움 존재
      • 데이터 일관성 유지를 위해 트랜잭션 처리를 하는 것이 좋음
    • 뷰를 구성할 때 join, function 등의 연산이 있을 경우 뷰를 갱신하는데 시간이 오래 걸릴 수 있음

4 ) SQL문에서 테이블 이름과 열 이름을 별도로 지정하는 AS에 대해 설명해 보라. 투플 변수와는 어떻게 구별할 수 있는가?

 

- As : [SQL] 테이블 별칭(ALIAS) (tistory.com)

 

[SQL] 테이블 별칭(ALIAS)

[SQL] 테이블 별칭(ALIAS) 프로그래머스의 SQL 고득점 키트를 풀어보다가 테이블 별칭을 정하고 입력하는 부분에서 막히는 경우가 많아 한번 정리를 하려고 적게 되었다. ALIAS 테이블 or 테이블의 컬

skyriv312079.tistory.com

- 튜플 변수 

DB 레코드에 대한 참조를 저장하는 변수

 

As는 해당 열 이름에 대해 별칭을 지정하여 사용할  때 쓰는 것이며, 튜플 변수는 해당 레코드를 저장하거나 불러올 때 DB에 정식으로 지정되는 이름이다.

 


5 ) 다음과 같은 릴에이션이 있을 때 아래 질의문을 SQL로 표현해보라

학생
학번 이름 학년
과목
과목번호 과목이름 교수
등록
과목번호 학번  점수

5 - 1 ) 과목 'DBMS'를 수강한 4학년 학생의 이름을 검색하라

  • select s. 이름
  • from 학생 s, 과목 c
  • where c. 과목이름 = 'DBMS' and s. 학년 = 4;

5 - 2 ) 'DBMS' 과목을 삭제하라

  • delete 
  • from 과목
  • where 과목. 과목이름 = 'DBMS';

5 - 3 ) 'AI'과목을 과목 릴레이션에 삽입하라 (단, 과목 번호는 'C419'이다)

  • insert
  • into 과목
  • values ('C419', 'AI', 'OOO');

교수이름은 아직 정해지지 않았기에 기본값이 OOO라 생각하고 지정

 

5 - 4 ) 학번이 12345인 학생의 학년을 4로 변경하라

  • update 학생
  • set 학년 = 4
  • where  학번 = 12345;

6 )  다음과 같은 S ( suppliers , 납품업자 ) , P ( product , 제품 ) , SP ( shipmenets , 발송 ) 릴레이션 스키마가 있다. 

  • S ( Sno , Sname , Status , City ) 
  • P ( Pno , Pname , Colour , Weight )
  • SP ( Sno , Pno , Qty )   

다음 질의문을 SQL로 표현해 보라.

(가) 모든 납품업자의 Sname과 CIty를 검색하라

  • select Sname, City
  • from S;

(나)  "Pno"가 123인 제품을 발송한 납품업자의 Sname을 검색하라

  • select S.Sname
  • form S, SP
  • where S.Sno = Sp.sno and SP.Pno = 123;

(다) 제품의 색(Colour)이 red인 Pname을 검색하라

  • select Pname
  • from P
  • where Colour = 'red';

(라) Nut이라는 이름(Pname)의 제품을 발송한 제품업자의 Sname을 검색하라

  • select S.Sname
  • from S, P, SP
  • where P.Pno = SP.Pno and Pname = Nut;