[SQLD] SQL 기본 문풀 2회차

·2023년 5월 31일
0

SQLD

목록 보기
16/18
post-thumbnail

6번 - 제약조건 저장

💡정답 : 4번

🤔내가 택한 답은 1번

1번이 틀린 이유

ALTER TABLE PRODUCT ADD CONSTRAINT PRIMARY KEY PRODUCT_PK ON (PROD_ID);
제약조건을 추가한다는 키워드가 빠졌음

13번

💡정답 : 3번

🤔내가 택한 답은 1번

COUNT(*) : NULL을 포함한 행의 수
COUNT(표현식) : NULL을 포함하지 않는 행의 수

SELECT COUNT(학번) FROM 학생
학번은 PK로 NULL이 들어올 수 없음. 따라서 SQL1과 SQL2는 같은 실행 결과를 가져옴.

22번

💡정답 : 1, 3번

2번이 틀린 이유

INSERT INTO 주문 VALUES ('0005', 'C003', '2013-12-28');
고객 테이블에 'C003' 값을 가지는 고객ID가 존재하지 않아 오류가 발생한다.

4번이 틀린 이유

문제에 나온 SQL문을 보면
ALTER TABLE 주문 .... REFERENCES 고객 (고객ID) ON DELETE SET NULL;

고객 테이블이 삭제되면 주문 테이블의 FK값으로 들어간 데이터는 NULL로 SET한다는 걸 알 수 있다.

🤔근데 뭐가 문제..?

주문 ERD를 확인하면 고객ID에 NOT NULL 제약조건이 걸려있다. 따라서 NULL로 변경되면 오류가 발생한다.

26번

💡정답 : 1, 4번

DROPTRUNCATEDELETE
DDLDDL
(일부 DML 성격을 가짐)
DML
ROLLBACK 불가ROLLBACK 불가COMMIT 이전 ROLLBACK 가능
AUTO COMMITAUTO COMMIT수동 COMMIT
테이블이 사용했던 Storage 모두 Release테이블이 사용했던 Storage 중 최초 테이블 생성 시 할당된 Storage만 남기고 Release데이터를 모두 Delete해도 사용했던 Storage는 Release되지 않음
테이블의 정의 자체를 완전 삭제테이블을 최초 생성된 초기상태로 만듬데이터만 삭제
로그 X로그 X로그 O

1번이 부적절한 이유

DROP,TRUNCATE, DELETE가 삭제하는 범위(저장 공간)는 각각 다르기 때문에 똑같은 결과를 얻을 수 없다.

29번

💡 정답 : 3번

오라클AUTO COMMIT이 FALSE더라도 DDL(CREATE)문장 수행 후에 AUTO COMMIT을 함!!

SQL Server는 DDL(CREATE) 문장 수행 후에는 AUTO COMMIT을 지원하지 않고 DML(UPDATE) 문장 수행 후에는 AUTO COMMIT을 하지만 현재 AUTO COMMIT은 FALSE 상태이기 때문에 UPDATE문도 ROLLBACK에 의해 취소

40번

💡 정답 : 2번

다가 틀린 이유

1:M 조인이라 하더라도 M쪽에서 출력된 행이 하나씩 단일행 함수의 입력값으로 사용되므로 사용할 수 있다.

라가 틀린 이유

다중행 함수도 단일행 함수와 동일하게 하나의 출력값을 가진다.

56번

💡 정답 : 3번

ORDER BY절은 SELECT에 지정하지 않은 컬럼도 사용할 수 있지만, GROUP BY절로 기준(범위?)가 묶여 있을 경우 GROUP BY 절에 기준이 되는 컬럼이거나 그룹 함수에 대한 컬럼이 아닌 컬럼이 ORDER BY절에 오면 오류가 발생한다.

틀린거 또 틀리고...😵 정신 차려~

profile
🧑‍💻백엔드 개발자, 조금씩 꾸준하게

0개의 댓글