728x90
MERGE INTO 코드
일단 대강 명령어들 위치는 이해됬는데 구체적으로 안에서 어떻게 작동하는지는
이번 한번으로는 이해가 안되서 또 봐야할 것 같다
ALTER로 DEFAULT값을 지정해줬어도 해당 컬럼값에 NULL을 넣는다고 하면
DEFAULT가 안들어가고 NULL값이 그대로 들어가며,
(CO1)처럼 값 하나만 지정하고 다른 컬럼값을 지정안하면 이때 DEFAULT값이 들어간다
--------------------------------------------------------------------
---------------------- SQLD 30회 기출 42번 -------------------------
-- MERGE INTO 코드
CREATE TABLE SQLD_30_42_01(
COL1 VARCHAR2(10),
COL2 VARCHAR2(10),
COL3 NUMBER
);
CREATE TABLE SQLD_30_42_02(
COL1 VARCHAR2(10),
COL2 VARCHAR2(10),
COL3 NUMBER
);
INSERT INTO SQLD_30_42_01 VALUES('A', 'X', 1);
INSERT INTO SQLD_30_42_01 VALUES('B', 'Y', 2);
INSERT INTO SQLD_30_42_01 VALUES('C', 'Z', 3);
INSERT INTO SQLD_30_42_01 VALUES('X', 'T', 1);
SELECT * FROM SQLD_30_42_01;
INSERT INTO SQLD_30_42_02 VALUES('A', 'X', 1);
INSERT INTO SQLD_30_42_02 VALUES('B', 'Y', 2);
INSERT INTO SQLD_30_42_02 VALUES('C', 'Z', 3);
INSERT INTO SQLD_30_42_02 VALUES('D', '가', 4);
INSERT INTO SQLD_30_42_02 VALUES('E', '나', 5);
SELECT * FROM SQLD_30_42_02;
MERGE INTO SQLD_30_42_01 A
USING SQLD_30_42_02 B
ON(A.COL1 = B.COL1)
WHEN MATCHED THEN
UPDATE SET A.COL3 = 4
WHERE A.COL3 = 2
DELETE WHERE A.COL3 <= 2
WHEN NOT MATCHED THEN
INSERT(A.COL1, A.COL2, A.COL3)
VALUES(B.COL1, B.COL2, B.COL3);
--------------------------------------------------------------------
---------------------- SQLD 30회 기출 47번 -------------------------
/*
ALTER로 DEFAULT값을 지정해줬어도 해당 컬럼값에 NULL을 넣는다고 하면
DEFAULT가 안들어가고 NULL값이 그대로 들어가며,
(CO1)처럼 값 하나만 지정하고 다른 컬럼값을 지정안하면 이때 DEFAULT값이 들어간다
*/
CREATE TABLE SQLD_47(
COL1 VARCHAR2(30),
COL2 NUMBER
);
INSERT INTO SQLD_47(COL1, COL2) VALUES('BC',NULL);
ALTER TABLE SQLD_47 MODIFY COL2 DEFAULT 10;
INSERT INTO SQLD_47(COL1, COL2) VALUES('XY',NULL);
INSERT INTO SQLD_47(COL1) VALUES('EXD');
SELECT * FROM SQLD_47;
SELECT SUM(COL2) FROM SQLD_47;
SELECT * FROM SQLD_47;
rollback;
--------------------------------------------------------------------
-------------- SQLD 34회 기출 26번 -----------------------
DROP TABLE T1;
DROP TABLE T2;
DROP TABLE T3;
DROP TABLE T4;
CREATE TABLE T1(
COL1 NUMBER
);
CREATE TABLE T2(
COL1 NUMBER
);
CREATE TABLE T3(
COL1 NUMBER
);
CREATE TABLE T4(
COL1 NUMBER
);
INSERT INTO T1 VALUES(1);
INSERT INTO T1 VALUES(2);
INSERT INTO T1 VALUES(3);
INSERT INTO T1 VALUES(4);
SELECT * FROM T1;
INSERT INTO T2 VALUES(1);
INSERT INTO T2 VALUES(2);
INSERT INTO T2 VALUES(3);
INSERT INTO T2 VALUES(NULL);
SELECT * FROM T2;
INSERT INTO T3 VALUES(1);
INSERT INTO T3 VALUES(NULL);
INSERT INTO T3 VALUES(3);
INSERT INTO T3 VALUES(5);
SELECT * FROM T3;
INSERT INTO T4 VALUES(1);
INSERT INTO T4 VALUES(2);
INSERT INTO T4 VALUES(5);
INSERT INTO T4 VALUES(6);
SELECT * FROM T4;
SELECT *
FROM T1 ,T2, T3
WHERE T1.COL1 = T2.COL1(+)
AND T2.COL1 = T3.COL1(+);
SELECT COUNT(*)
FROM T1 ,T2, T3
WHERE T1.COL1 = T2.COL1(+)
AND T2.COL1 = T3.COL1(+);
SELECT *
FROM T2, T3
WHERE T2.COL1 = T3.COL1(+);
SELECT COUNT(*)
FROM T1 ,T2, T3, T4
WHERE T1.COL1 = T2.COL1(+)
AND T2.COL1 = T3.COL1(+)
AND T3.COL1 = T4.COL1;
SELECT *
FROM T1 ,T2, T3, T4
WHERE T1.COL1 = T2.COL1(+)
AND T2.COL1 = T3.COL1(+)
AND T3.COL1 = T4.COL1;
728x90
반응형
'small steps > 1일 1코딩 - 코딩을 내 몸처럼' 카테고리의 다른 글
[1일1코딩][Java] Collection : Set 3rd practice (0) | 2022.09.03 |
---|---|
[1일1코딩][Java] Object Array practice 7th (0) | 2022.09.02 |
[1일1코딩][Java] Object Array practice 6th (0) | 2022.08.31 |
[1일1코딩][Java] Array 8th practice (0) | 2022.08.30 |
[1일1코딩][Java] 컬렉션 List 7th (0) | 2022.08.29 |