2022.04.05 - [IT] - [SQLP] 자격검정 실전문제 (9-11번 문제)
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)
);
'IT > SQLP' 카테고리의 다른 글
SQLP 객관식 문제 (10문제) (0) | 2022.04.05 |
---|---|
SQLP 실습 문제 (1-2번) (0) | 2022.04.05 |
[SQLP] 자격검정 실전문제 (9-11번 문제) (0) | 2022.04.05 |
[SQLP] 자격검정 실전문제 (7-8번 문제) (0) | 2022.04.05 |
[SQLP] 자격검정 실전문제 (4-6) (0) | 2022.04.05 |
댓글