본문 바로가기
SQLD

[SQLD] 240523 SQL

by studymode 2024. 5. 23.

문제 33. 다음 중 TEST 사용자가 아래의 작업을 수행 할 수 있도록 권한을 부여하는 DCL로 올바른 것은?

 

UPDATE A_USER SET COL1 = 'TEST' WHERE COL2 = 100;

보기

  1. GRANT UPDATE TO TEST;
  2. REVOKE SELECT ON A_USER FROM TEST;
  3. REVOKE UPDATE ON A_USER TO TEST;
  4. GRANT SELECT, UPDATE ON A_USER TO TEST;

답: 4

GRANT [권한] ON [테이블명] TO [유저명];

 


 

 

문제 35. 주어진 ERD에서 오류가 나지 않는 SQL문을 고르시오.

보기

1) SELECT * FROM 계좌마스터

    WHERE 회원번호 = (SELECT DISTINCT 회원번호 FROM 고객);

2) SELECT * FROM 계좌마스터

    WHERE 회원번호 IN (SELECT DISTINCT 회원번호 FROM 고객);

3) SELECT 회원번호, 종목코드 FROM 일자별주문내역

    WHERE 주문일자 EXISTS (SELECT DISTINCT 주문일자 FROM 계좌마스터);

4) SELECT 회원번호, 종목코드 FROM 일자별주문내역

     WHERE 주문일자 ALL (SELECT DISTINCT 주문일자 FROM 계좌마스터);

 

 

답: 2

WHERE ~ IN (여러개)

여러개와 한개 비교 가능

 

WHERE EXIST가 되어야함. 사이에 다른거 안들어감

 

WHERE 회원번호 = (SELECT DISTINCT 회원번호 FROM 고객); =는 한개씩만 비교 가능, 왼쪽 값은 복수이므로 에러 발생

 

 


 

 

문제 37. 다음 ERD로 작성한 SQL문에서 오류가 발생하는 것은?

 

 

보기

1) SELECT (SELECT SUM(주문금액) FROM 일자별주문내역)

     FROM 고객마스터 GROUP BY 회원번호;

 

2) SELECT SUM(일자별주문내역.주문금액)

     FROM 일자별주문내역

     FULL OUTER JOIN 고객마스터

     ON 고객마스터.회원번호 = 일자별주문내역.회원번호

     GROUP BY 회원번호;

 

3) SELECT SUM(일자별주문내역.주문금액)

     FROM 고객마스터, 일자별주문내역

     WHERE 고객마스터.회원번호 = 일자별주문내역.회원번호

     GROUP BY 회원번호;

 

4) SELECT SUM(주문금액)

     FROM 일자별주문내역

     WHERE EXISTS (SELECT*FROM 고객마스터

                                   UNION ALL SELECT*FROM 일자별주문내역)

     GROUP BY 회원번호;

 

 

정답: 4

 

UNION ALL 사용할 땐 두개의 테이블 크기가 같아야함

일자별주문내역과 고객마스터 테이블의 크기가 달라서 오류