[TEST1]
COL1 COL2 COL3
------------------
A X 1
B Y 2
C Z 3
[TEST2]
COL1 COL2 COL3
------------------
A X 1
B Y 2
C Z 3
D 가 4
E 나 5
[SQL]
MERGE INTO TEST1
USING TEST2
ON (TEST1.COL1 = TEST2.COL1)
WHEN MATCHED THEN
UPDATE SET TEST1.COL3 = 4
WHERE TEST1.COL3 = 2
DELETE WHERE TEST1.COL3 <= 2
WHEN NOT MATCHED THEN
INSERT(TEST1.COL1, TEST1.COL2, TEST1.COL3)
VALUES(TEST2.COL1, TEST2.COL2, TEST2.COL3);
1) 4
2) 3
3) 5
4) 8
[TEST10]
EMPNO NAME MANAGER
--------------------
1 LIM NULL
2 PARK 1
3 KIM 2
[SQL]
SELECT LPAD('**', (LEVEL-1) * 2, ' ')
|| EMPNO AS EMP, NAME
FROM TEST10
WHERE EMPNO <> 3
START WITH EMPNO = 3
CONNECT BY EMPNO = PRIOR MANAGER;
1) 0
2) 1
3) 2
4) 3
이 SQL 문은 Oracle의 계층적 쿼리를 사용하여 TEST10 테이블에서 계층적 데이터를 조회하는 예입니다. 계층적 쿼리를 사용하면, 부모-자식 관계에 있는 행들을 계층적으로 검색할 수 있습니다. 여기서 사용된 키워드의 의미는 다음과 같습니다:
START WITH EMPNO = 3: EMPNO가 3인 행부터 검색을 시작합니다.CONNECT BY EMPNO = PRIOR MANAGER: 현재 행의 EMPNO가 이전 행의 MANAGER와 동일할 때, 이러한 관계를 사용하여 연결합니다.WHERE EMPNO <> 3: EMPNO가 3이 아닌 행만 결과에 포함합니다.그러나, WHERE 절이 START WITH 절보다 먼저 적용되지 않습니다. START WITH에서 검색을 시작하여 CONNECT BY를 통해 계층적으로 연결된 후, 최종 결과에 대해 WHERE 절이 적용됩니다. 따라서, WHERE 절은 START WITH에 의해 이미 선택된 행들에 대해서만 필터링하는 역할을 합니다.
이 쿼리의 경우, EMPNO = 3인 행에서 시작하여 그의 관리자로 거슬러 올라가려고 합니다. 그러나 EMPNO <> 3이라는 조건 때문에 실제로는 EMPNO가 3인 행이 결과에 포함되지 않습니다. 하지만, 이 조건은 START WITH 절이 적용된 후의 결과에 대해 필터링을 적용하기 때문에, EMPNO가 3인 행을 시작점으로 사용할 수 있습니다.
계층 구조는 다음과 같습니다:
따라서, WHERE 조건 (EMPNO <> 3)에 의해 EMPNO가 3인 KIM은 결과에서 제외되고, PARK와 LIM만 결과에 포함됩니다. 결과적으로 결과 건수는 2가 됩니다.
정답은 3) 2입니다.
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 계좌마스터);
SELECT 회원번호, 종목코드
FROM 일자별주문내역
WHERE EXISTS (
SELECT 1 FROM 계좌마스터
WHERE 계좌마스터.주문일자 = 일자별주문내역.주문일자
);
SELECT 회원번호, 종목코드
FROM 일자별주문내역
WHERE 주문일자 >= ALL (
SELECT DISTINCT 주문일자 FROM 계좌마스터
);
1) 원자성(Atomicity) : 트랜잭션 내의 모든 문장이 모두(ALL) 반영되거나, 혹은 일부가 반영 되어야 한다.
2) 영속성 : 트랜잭션의 수행으로 데이터베이스의 무결성은 보장 될 수 없다.
3) 일관성 : 여러 개의 트랜잭션들이 동시에 수행될 때, 한 개의 트랜잭션의 복사본을 유지한다.
4) 지속성 : Commit이 완료되면 영구적으로 저장을 보장해야 한다.
[TEST45]
C1 C2
----------
10 100
10 200
10 NULL
20 100
20 NULL
20 200
[RESULT]
C1 C2
----------
10 200
10 100
10 NULL
20 200
20 100
20 NULL
[SQL]
SELECT C1, C2
FROM SQLD_02
ORDER BY C1, C2 DESC ( );
제 생각에도 14번 결과는 4개가 맞는 것 같아요
정오표에도 안 나와있네요~
글 잘 보고 갑니다 : )