본문 바로가기
IT/SQLP

[SQLP] 자격검정 실전문제 (12-14번 문제풀이)

by by디디 2022. 4. 5.
반응형

2022.04.05 - [IT] - [SQLP] 자격검정 실전문제 (9-11번 문제)

 

[SQLP] 자격검정 실전문제 (9-11번 문제)

2022.04.05 - [IT] - [SQLP] 자격검정 실전문제 (7-8번 문제) [SQLP] 자격검정 실전문제 (7-8번 문제) 2022.04.05 - [IT] - [SQLP] 자격검정 실전문제 (4-6) [SQLP] 자격검정 실전문제 (4-6) 2022.04.05 - [IT] -..

zaop.tistory.com

 

SQLP 자격검정 실전문제 풀이

 

12. 테이블 구조 정의

1. 부서가 정의되지 않은 사원의 기본부서는 '0000'

2. 입사일자에 INDEX 생성

해설 :

DEFAULT 를 추려 보면

1,3,4번은 DEFAULT '0000' NOT NULL

2번은 DEFAULT '0000'

* 모델을 보면 DEPT_CODE NOT NULL로 정의했다. DEFAULT 유무에 상관없이 모델의 NULLABLE과 동일하게 처리하면 됩니다.

* 중요 *

DEFAULT는 값이 NULL일 때 사용자가 정의한 기본값이 입력됩니다.

NOT NULL 컬럼은 NULL이 들어올 수 없으니까 무의미 하다고 생각할 수도 있습니다.

ex) INSERT EMP ( DEPT_CODE ) VALUES ( NULL )

위와 같은 INSERT문을 보면 DEFAULT 조건으로 인해 '0000' 기본값이 입력될거라 착각할 수 있습니다.

NULL도 하나의 값으로 인정되어 NULL로 입력됩니다.

NOT NULL 컬럼의 제약은 이때 NULL이 들어오는걸 막으면서 에러를 발생시킵니다.

같이 쓰는게 의미가 없다고 생각할 수 있지만 2개의 역할이 다릅니다.

PRIMARY KEY

1. 컬럼에 PRIMARY KEY

2. ALTER TABLE 테이블명 ADD CONSTRAINT PK PRIMARY KEY (컬럼명, 컬럼명...)

중복으로만 사용하지 않으면 둘 다 상관없습니다.

INDEX 생성

CREATE INDEX 인덱스명 ON 테이블명 ( 컬럼명....)

13번 문제

CREATE TABLE 학생(

학번 CHAR(8) PRIMARY KEY,

장학금 INTERGER )

SQL1 : SELECT COUNT(*) FROM 학생

SQL2 : SELECT COUNT(학번) FROM 학생

SQL의 실행 결과는?

해설 :

우선 학번 컬럼이 PK인걸 눈여겨 봐야합니다. PK특징은 중복없음, not null 입니다.

그러므로 2개의 SQL은 항상 동일한 값을 보여줍니다.

SELECT COUNT(DISTINCT 학번) FROM 학생 << 동일한 결과 * PK컬럼이라 중복이 없음

SELECT COUNT(장학금) FROM 학생 << NULL을 제외한 건수 * 장학금이 NOT NULL컬럼이면 동일한 결과

SELECT COUNT( NVL(장학금,0)) FROM 학생 << 동일한 결과

 

14. 외래키 설명으로 부적절한 것을 2개 고르기

1. 테이블 생성 시 설정할 수 있다.

2. 외래키 값은 null을 가질 수 없다.

3. 한 테이블에 하나만 존재해야 한다.

4. 외래키 값은 참조 무결성 제약을 받을 수 있다.

해설 :

1. 테이블 생성 시 설정할수도 있고, 생성 후 설정도 가능합니다.

- 테이블 생성 시 설정

CONSTRAINTS 외래키 이름 FOREIGN KEY(컬럼명)

REFERENCES 참조 테이블명(참조컬럼)

- 테이블 생성 후 설정

ALTER TABLE 테이블명

ADD CONSTRAINTS 외래키 이름 FOREIGN KEY (참조컬럼)

REFERENCES 참조 테이블명(참조컬럼)

2. 외래키 값은 null 값을 가질수 있습니다.

3. 한 테이블에 여러개 만들 수 있습니다.

4. 외래키 값은 참조 무결성 제약을 받을수 있습니다.

* 참조 무결성 :

외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 한다. 즉 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.

* 아래 구문을 해석해보면 FK 제약 조건에 의해서 emp 테이블의 dept_no컬럼의 값은 dept 테이블의 dept_no 컬럼의 값만 가져야한다.

CREATE TABLE EMP (

EMP_NO VARCHAR2(20) NOT NULL,

DEPT_NO VARCHAR2(20) NOT NULL,

CONSTRAINT FK_EMP_DEPT_NO FOREIGN KEY(DEPT_NO)

REFERENCES DEPT(DEPT_NO)

);

 

SQLP 자격검정 실전문제 풀이
SQLP 자격검정 실전문제 풀이

반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

댓글