SQL

SQL기출 오답풀이

silver-w 2024. 11. 14. 12:56

3회독 헷갈리는 문항 정리

페이지 문제번호 선택지
7 10 2
12 27 4
21 37 1
24 41 1
57 42 1
75 63 1,2,4
81 69 CUME_DISK .. OVER()의 정의
     

 

1. 데이터 모델링의 이해


8번 선택지 1~ 3 1) 피터첸에 의해 erm 표기법 생성
2) entity 도출 -> 배치 -> 관계 설정 -> 관계명 기술
10번 선택지 2 ~ 3 2) 통계성 엔터티나 코드성 엔터티는 관계를 생략할 수 있다
3) 엔터티는 두개 이상의 인스턴스를 가져야 한다.

" 한 엔터티는 두 개 이상의 인스턴스를 가지고, 하나의 인스턴스는 두 개 이상의 속성을 가진다. 또한 하나의 속성은 하나의 속성값을 가진다"
15번 선택지 1 엔터티의 구체적이고 자세한 정보를 나타냄 (상대적으로 접근)
18번 1번, 3번 (1) 시스템 카탈로그 
 - 사용자 테이블과 별개로 시스템 자체에 관련 있는 데이터
(3) 속성 사전
 - DB 검색을 용이하게 하기 위한 색인용 사전, 속성명에 이용
20번 전체 [데이터 모델링 관계]
(1) ERD 관계 표시
  - 존재/행위에 의한 관계 구분하지 않고 단일화된 표기법 사용
(4) 연관관계는 멤버변수로, 의존관계는 파라미터로 이용
※ 표기법
  - 식별자 관계는 실선 표현 
  - 비식별자 관계는 점선 표현
27번 4번 [식별자 대체 여부에 따른 종유]
 - 원조식별자 / 본질식별자 : 가공 x
 - 대리식별자 / 인조식별자
   :주식별자 속성이 두개 이상일때 하나로 믹스

 

2. 데이터 모델과 SQL p.20


37번 1번 선택지 정규화를 수행하면 데이터에 대한 중복성을 제거할 수 있어( 중복 속성을 제거하여 )
용량을 최소화시킬 수 있다.
38번   前 : 한테이블에 밀어넣었더나 각 칼럼에 null이 빈번히 들어감
- 1차 정규화-> 後 : 두 테이블로 나누어 위 문제를 해결
40번 [정규화 순서 정리 : 비정규 ~ 3NF 까지] 
① 도메인이 원자값 : 비정규 -> 1NF
② 부분적 함수 종속 제거 : 1NF -> 2NF
③ 이행적 함수 종속 제거 : 2NF -> 3NF
41번 정규화는 논리 데이터 단계에서 시행한다.
49번 [NULL]
 - NULL 값에 비교 연산자를 쓴다면 항상 값은 unknown 또는 false이다. (NULL 아님)
 - 집계 함수를 계산할 때 NULL의 값은 배제된다 (0으로 처리 되지 않음)

 

3. SQL 기본 (p.32)


 

8번 WHERE절은 GROUP BY 전에 시행되기 때문에, 집계함수를 사용할 수 없다. 
11번 INSERT INTO TABLE(COL1) VALUES(''); 입력시
오라클은 COL1에 NULL을
SQL server 에서는 COL1에 ''이 들어간다.
15번 다시 풀기
17번 ~ 18번 다시풀기

ORACLE CASE 구문

[1]
CASE 속성
  WHEN '값' THEN '반환값'
  {ELSE '디폴트값'}
END

[2] 
CASE 
  WHEN '속성' = '값' THEN '반환값'
  {ELSE '디폴트값'}
END

[3] 
 DECODE (속성,'값1','반환값1',[,'디폴트값])
20번 NULL 구문
[1] NVL(n1,n2) = n1이 널이면 n2로
[2] NULLIF(n1,n2) = n1 = n2 이면 null로
[3] NVL2(n1,n2,n3) = n1이 널이면 n2, n2가 널이면 n3
22번 %x% : x가 문자열에 포함됨
%x : 맨뒤에 x로 끝남 
x% : x로 시작
x%y : x로 시작하여 y로 문장이 끝남

29번 3번, 4번 group by를 한 순간 새로운 view로 만들어지므로, 본래의 칼럼은 select절에 정의하지 않는 이상 order by 절에서는 사용할 수 없다. 
+ group by로 도출될 수 있는 집계함수는 select절에 정의되어 있지 않아도, order by 절에 올 수 있다.
34번 1번과 4번 조인의 중심이 되는 테이블명(조인이 필요없는, Main table)은
속성명 앞에 테이블을 지정해주지 않는다.
35번 (나) DBMS 옵티마이저는 FROM 절에 나열된 테이블을 항상 2개로 짝을 지어 JOIN 한다.
(라) EQUI JOIN 은 (=)조건으로 JOIN / NON EQUI JOIN 은 그 외의 조건으로 JOIN
40번 다시풀기 
42번 [JOIN... USING(칼럼명)] : using의 매개값인 칼럼의 값이 일치하면 natural join 한다.

 

 

4. SQL 활용 (p.66)


 

60번 다시풀기
62번, 63번,64번  계층쿼리
66번  self-join A.일자 >=B.일자 
69번  - Ratio_To_Report : 전체의 몇퍼센트 차지?
 - Percent_Rank : 1이면 꼴등
 - Cume_Disk : 누적비율
 - NTILE
71번 (이해안되서 향후 다시 볼 것)
HAVING 절로 인해 메일 발송이 안된 회원으로 좁혀짐. 다시 봐볼 것
74번 문제 의도 재파악 및 다시 풀어볼것 (2번 + 4번)
77번 MAX(칼럼) OVER(ORDER BY 칼럼 DESC ROWS CURRENT ROW) 
rows current row = rows between current row and current row
78번 GROUPING(DATE WHEN '1' THEN '합계') 
GROUPING 결과가 1인게 집계된 결과이다.
88번 RANGE between "10 Preceding" and current row : 10 前 ~ 현재행
Rows between current Row And "5 FOLLOWING" : 현재행 ~ 5 後
91번 2번  [GRANT 시스템 권한명 ON 테이블명 TO PUBLIC]
- PUBLIC : 시스템권한, 또는 데이터베이스 역할을 모든 사용자에게 부여할 수 있다.

[GRANT 권한 명 ON 테이블명 TO USERNAME WITH GRANT OPTION]

 - 특정 권한과 그 권한을 부여할 수 있는 권한까지 준다.
    이를 부여한 사람이 REVOKE를 하면 권한을 받은사람이 권한을 GRANT한건 다 취소된다.
- WITH ADMIN OPTION : 권한을 부여 받은 사용자도 부여 받은 권한을 다른 사용자 또는 역할로 부여할 수 있게된다.
93번 4번  DROP Schema EMP RESTRICT
   RESTRICT - EMP를 삭제할 때 참조하는 개체가 있으면 삭제를 취소한다.
DROP Schema EMP CASCADE
   CASCADE - EMP를 삭제할 때 참조하는 개체가 있으면 같이 삭제한다.

96번  INTERSACT는 중복된 값을 없앤다. 

 

 

5. 관리구문 (p.112)


 

100번 칼럼의 타입과 Contraints를 바꿀 때는 각각 따로 ALTER문을 사용해야한다.
ALTER TABLE 기관분류 ALTER COLUMN
(분류명 VARCHAR(30) NOT NULL, 등록일자 DATE NOT NULL) 은 오류나는 구문

§ 옳은 표현
 ALTER TABLE 기관분류 ALTER COLUMN (분류명 VARCHAR(30) NOT NULL)
 ALTER TABLE 기관분류 ALTER COLUMN (등록일자 DATE NOT NULL) 
102번 [① 테이블 설정]
[S테이블] ① Delete CASCADE
[R테이블] ① DELETE SET NULL

[② T테이블 DROP TABLE ]
[S테이블]  ②-1. FK 참조 및 CASCADE로 테이블 T를 참조하는 인스턴스 삭제
[R테이블]  ②-2. Cascade 옵션인 C를 참조했다면 해당 인스턴스 자체가 사라질텐데, B를 참조하면서, 삭제할때 단순히 NULL로 변경됨을 명시했으므로 B행만 NULL로 변경, A는 변경 없음

잘정리된 관련 블로그 포스팅
- https://blog.naver.com/PostView.nhn?blogId=ebzzang1905&logNo=222313954749
107번 § Count()
  - count(*) = NULL값을 포함하여 count
  - count(특정컬럼) = 특정컬럼이 NULL이면 count에서 제외
113번  ● 관계형 DB 제약 조건 

  - INSERT 제약 
   1. DEPENDENT : 참조대상인 부모테이블 인스턴스가 없으면(PK가 없음) 자식테이블 INSERT 불가
   2. AUTOMATIC :  참조대상인 부모테이블 인스턴스가 없다면 부모PK를 자동 생성해서라도
                                자식테이블 INSERT

  - UPDATE, DELETE 제약
    1. RESTRICT : 참조하는 자식테이블이 있다면 부모테이블의 인스턴스 UPDATE, DELETE 불가 
    2. CASCADE : 부모테이블 UPDATE, DELETE시, 참조하는 자식테이블의 참조 인스턴스 삭제
118번 113번 제약 조건들 위치 (= 외래키 설정 뒤에 ON D/U/I 제약조건)
「Foreign eky(컬럼) references 참조대상테이블(컬럼) ON DELETE CASCADE
125번 SELECT TOP(3) 순위
FROM 팀별성적
ORDER BY 승리건수 DESC;

 -> 팀별로 승리건수가 많은 순서대로 3등까지 출력한다. (동점자있을때는 동일하게 보지않고 테이블에 출력된 다음 순서로 넘겨버림

SELECT TOP(3) WITH TIES 순위
FROM 팀별성적
ORDER BY 승리건수 DESC;

-> 팀별로 승리건수가 많은 순서대로 3등까지 출력하는데, 동점자가 있다면 같은 순위로 본다.

 

 

기출변형


페이지 번호  
348 4 § 복합속성 : 속성값을 세부 의미로 쪼갤 수 있는 속성
 - 주소 ( ~시 ~군/구 ~동/읍...)
§ 더이상 쪼갤 수 없으면 단순속성
350 9 § 모델링의 세 가지 관점
 - 데이터 관점
 - 프로세스 관점 
 - 데이터와 프로세스 상관 관점