๐SQLD. ์ 30 ํ ๊ธฐ์ถ ๋ฌธ์
๋ฌธ์ 1. ์๋ ๋ด์ฉ์ ํน์ง์ ๋ฌด์์ ์ค๋ช ํ๊ณ ์๋์ง ๊ณ ๋ฅด์์ค.
์ ๋ตํ์ธ๐ผ
[ ์ค๋ช ] ์ํฐํฐ ๋ด์์ ์์ฑ์ ๋ํ ๋ฐ์ดํฐ ํ์ ๊ณผ ํฌ๊ธฐ ๊ทธ๋ฆฌ๊ณ ์ ์ฝ์ฌํญ์ ์ง์ ํ๋ ๊ฒ |
1) ์ ์ฝ์กฐ๊ฑด 2) ๋๋ฉ์ธ 3) ์ ๊ทํ 4) ์๋ณ์ |
๋ฌธ์ 2. ์๋์ ๋ฐ์ ๊ทํ์ ๋ํ ์ค๋ช ์ค ๋ถ์ ์ ํ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
1) ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ๋์คํฌ I/O ๋์ด ๋ง์์ ์ฑ๋ฅ์ด ์ ํ๋๊ฑฐ๋ ๊ฒฝ๋ก๊ฐ ๋๋ฌด ๋ฉ์ด ์กฐ์ธ์ผ๋ก ์ธํ ์ฑ๋ฅ์ ํ๊ฐ ์์๋ ๋ ์ํํ๋ค. 2) ์ปฌ๋ผ์ ๊ณ์ฐํ์ฌ ์ฝ์ ๋ ์ฑ๋ฅ์ด ์ ํ๋ ๊ฒ์ด ์์๋๋ ๊ฒฝ์ฐ ์ํํ๋ค. 3) ๋ฐ์ ๊ทํ๋ฅผ ์ ์ฉํ ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ด ๊นจ์ง ๊ฐ๋ฅ์ฑ์ด ๋ง์ด ์์ผ๋ฏ๋ก ๋ฐ๋์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ ์ ์๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํด์ผํ๋ค. 4) ๋ฐ์ ๊ทํ ์ ์ ํ ์ด๋ธ ์ถ๊ฐ(ํต๊ณ ํ ์ด๋ธ, ์ค๋ณต ํ ์ด๋ธ, ์ด๋ ฅ ํ ์ด๋ธ ์ถ๊ฐ)๋ฅผ ํตํด ๋ฐ์ ๊ทํ๋ฅผ ํํผํ๋ค. |
๋ฌธ์ 3. ๋ฐ์์์ ์ ๋ฐ๋ฅธ ์ํฐํฐ ๋ถ๋ฅ์ ์ํ ์ค์ฌ ์ํฐํฐ๊ฐ ์๋ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
1) ๋งค์ถ 2) ๊ณ์ฝ 3) ์ฌ์ 4) ์ฃผ๋ฌธ |
๋ฌธ์ 4. ๋ฐ์์์ ์ ๋ฐ๋ฅธ ์ํฐํฐ ๋ถ๋ฅ์ ๋ํด์ ์๋์ ๋ด์ฉ ์ค ์๋ชป ์ง์ง์์ง ๊ฒ์?
์ ๋ตํ์ธ๐ผ
A : ๊ธฐ๋ณธ/ํค ์ํฐํฐ : ์กฐ์ง, ์ฌ์ B : ๊ธฐ๋ณธ/ํค ์ํฐํฐ : ๋ถ์ C : ์ค์ฌ ์ํฐํฐ : ์ํ, ์ฃผ๋ฌธ์ํ D : ํ์ ์ํฐํฐ : ์ฃผ๋ฌธ๋ด์ญ, ๊ณ์ฝ์งํ |
1) A 2) B 3) C 4) D |
๋ฌธ์ 5. ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ด ์ต์ข ์ ์ผ๋ก ์๋ฃ๋ ์ํ๋ผ๊ณ ์ ์ํ ์ ์๋, ์ฆ ๋ฌผ๋ฆฌ์ ์ธ ์คํค๋ง ์ค๊ณ๋ฅผ ํ๊ธฐ ์ ๋จ๊ณ๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ง์ ๋ฌด์์ธ๊ฐ?
์ ๋ตํ์ธ๐ผ
1) ๊ฐ๊ด์ ๋ชจ๋ธ๋ง 2) ๊ฐ๋ ์ ๋ชจ๋ธ๋ง 3) ๋ ผ๋ฆฌ์ ๋ชจ๋ธ๋ง 4) ๋ฌผ๋ฆฌ์ ๋ชจ๋ธ๋ง |
๋ฌธ์ 6. ์๋์ ERD ์ ๋ํ ์ค๋ช ์ค ๊ฐ์ฅ ๋ถ์ ์ ํ ๊ฒ์ ๊ณ ๋ฅด์์ค
์ ๋ตํ์ธ๐ผ
1) SQL ์์ฑ ์ B ๋ฅผ ์ ์ธํ ๊ฒฝ์ฐ A ์ C ๋ ์นดํ
์์ ์กฐ์ธ์ด ๋๋ค. 2) 3๊ฐ ํ ์ด๋ธ์ ๋ชจ๋ ์กฐ์ธํ ๊ฒฝ์ฐ ์กฐ์ธ ์ต์ ์กฐ๊ฑด์ 3๊ฐ์ด๋ค. 3) B, C์์ C์ ๋ฐ์ดํฐ๋ ๋ชจ๋ B์ ์กด์ฌํ๋ฏ๋ก Outer Join ์ ์ํด๋ ๋๋ค. 4) B๋ A์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ํฌํจํ์ง ์๋๋ค. |
๋ฌธ์ 7. ์๋์ ์ค๋ช ์ค ๋ฐ์ ๊ทํ ๋์์ด ์๋ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
1) ์์ฃผ ์ฌ์ฉ๋๋ ํ
์ด๋ธ์ ์ ๊ทผํ๋ ํ๋ก์ธ์ค์ ์๊ฐ ๋ง๊ณ ํญ์ ์ผ์ ํ ๋ฒ์๋ง์ ์กฐํํ๋ ๊ฒฝ์ฐ 2) ํ ์ด๋ธ์ ๋๋์ ๋ฐ์ดํฐ๊ฐ ์๊ณ ๋๋์ ๋ฐ์ดํฐ ๋ฒ์๋ฅผ ์์ฃผ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ์ ์ฒ๋ฆฌ๋ฒ์๋ฅผ ์ผ์ ํ๊ฒ ์ค์ด์ง ์์ผ๋ฉด ์ฑ๋ฅ์ ๋ณด์ฅํ ์ ์์ ๊ฒฝ์ฐ 3) ํต๊ณ์ฑ ํ๋ก์ธ์ค์ ์ํด ํต๊ณ ์ ๋ณด๋ฅผ ํ์๋ก ํ ๋ ๋ณ๋์ ํต๊ณ ํ ์ด๋ธ์ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ 4) ํ ์ด๋ธ์ ์ง๋์น๊ฒ ๋ง์ ์กฐ์ธ๊ณผ Sorting, Order by ํ๋ก์ธ์ค๊ฐ ๋ง์ ๊ฒฝ์ฐ |
๋ฌธ์ 8. ์๋์ ์๋ณ์์ ๋ถ๋ฅ์ฒด๊ณ์ ๋ํ ์ค๋ช ์ค ๊ฐ์ฅ ๋ถ์ ์ ํ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
1) ๋ํ์ฑ ์ฌ๋ถ์ ๋ฐ๋ผ ๋ถ๋ฅ๋๋ ์ฃผ์๋ณ์์ ๋ณด์กฐ์๋ณ์์์ ์ฃผ์๋ณ์๋ ๋ํ์ฑ์ ๊ฐ์ง์ง ๋ชปํด ์ฐธ์กฐ๊ด๊ณ ์ฐ๊ฒฐ์ ๋ชปํ๋ค. 2) ์ค์ค๋ก ์์ฑ์ฌ๋ถ์ ๋ฐ๋ผ ๋ถ๋ฅ๋๋ ์๋ณ์๋ ๋ด๋ถ ์๋ณ์์ ์ธ๋ถ ์๋ณ์์ด๋ค. 3) ๋ ์ด์์ ์์ฑ์ผ๋ก ๊ตฌ์ฑ๋ ์๋ณ์๋ฅผ ๋ณตํฉ์๋ณ์๋ผ ํ๋ฉฐ ์์ฑ์ ์์ ๋ฐ๋ฅธ ์๋ณ์ ๋ถ๋ฅ์ด๋ค. 4) ์ ๋ฌด์ ์ผ๋ก ๋ง๋ค์ด์ง์ง๋ ์์ง๋ง ํ์์ ๋ฐ๋ผ ์ธ์์ ์ผ๋ก ๋ง๋ ์๋ณ์๋ฅผ ์ธ์กฐ ์๋ณ์๋ผ ํ๋ค. |
๋ฌธ์ 9. ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํน์ง ์ค ์ฌ์ฉํ๋ ค๋ ๋ฐ์ดํฐ์ ์ ์ฅ ์ฅ์ ๋ช ์๊ฐ ๋ถํ์ํ๋ค๋ ํน์ง์ ๋ฌด์์ธ๊ฐ?
์ ๋ตํ์ธ๐ผ
1) ๋ถํ ํฌ๋ช
์ฑ 2) ์์น ํฌ๋ช ์ฑ 3) ์ง์ญ์ฌ์ ํฌ๋ช ์ฑ 4) ์ค๋ณต ํฌ๋ช ์ฑ |
๋ฌธ์ 10. Row migration๊ณผ Row Chaining ์ ๋ํ ์๋์ ์ค๋ช ์ค ๋ฐ๋ฅธ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
1) Row Chaining ๊ณผ Row Migration ์ด ๋ง์์ง๊ฒ ๋๋๋ผ๋ ์ฑ๋ฅ ์ ํ๋ ์ผ์ด๋์ง ์๋๋ค. 2) ๋ก์ฐ ๊ธธ์ด๊ฐ ๋๋ฌด ๊ธธ์ด์ ๋ฐ์ดํฐ ๋ธ๋ก ํ๋์ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์ ์ฅ๋์ง ์๊ณ ๋ ๊ฐ ์ด์์ ๋ธ๋ก์ ๊ฑธ์ณ ํ๋์ ๋ก์ฐ๊ฐ ์ ์ฅ๋๋ ํ์์ Row Chaining ์ด๋ผ๊ณ ํ๋ค. 3) Row Migration ์ ์ ๊ท ๋ฐ์ดํฐ์ ์ ๋ ฅ์ด ๋ฐ์ํ ๋ ๋ฐ์๋๋ ํ์์ด๋ค. 4) Row Chaining ๊ณผ Row Migration ์ด ๋ฐ์๋๋ฉด ๋์คํฌ I/O ๊ฐ ๋ฐ์ ๋ ๋ I/O๊ฐ ๋ง์์ง๊ฒ ๋์ด ์ฑ๋ฅ์ด ํฅ์๋ ์ ์๋ค. |
๋ฌธ์ 11. ์๋์ ERD๋ฅผ ์ฐธ๊ณ ํ์ฌ ๋ณด๊ธฐ์ SQL์ค ์ค๋ฅ๊ฐ ๋ ์ ์๋ SQL์ ๊ณ ๋ฅด์์ค
์ ๋ตํ์ธ๐ผ
SQLD_30_11_01 SQLD_30_11_02
COL1 VARCHAR2(30) COL1 VARCHAR2(30)
COL2 NUMBER COL3 VARCHAR2(30)
COL4 NUMBER
1)
SELECT A.COL1, A.COL2
FROM SQLD_30_11_01 A WHERE A.COL1 > 0; |
2) SELECT A.COL1, B.COL4
FROM SQLD_30_11_01 A INNER JOIN SQLD_30_11_02 B ON (A.COL1 = B.COL1) WHERE B.COL3 > 'X'; |
3) SELECT COUNT(*)
FROM SQLD_30_11_01 A. WHERE EXISTS (SELECT 'X' FROM SQLD_30_11_02 B WHERE A.COL2 = B.COL4); |
4) SELECT SUM(A.COL2)
FROM SQLD_30_11_01 A INNER JOIN SQLD_30_11_02 B ON (A.COL1 = B.COL1) WHERE B.COL4 > '1'; |
๋ฌธ์ 12. ์๋์ ERD ๋ฅผ ์ฐธ๊ณ ํ์ฌ ๋ณด๊ธฐ์ SQL ์ค ์ค๋ฅ๊ฐ ๋ ์ ์๋ SQL ์ ๊ณ ๋ฅด์์ค
์ ๋ตํ์ธ๐ผ
1) SELECT A.COL1,
(SELECT COL3 FROM SQLD_30_12_02 B WHERE A.COL1 = B.COL1) AS B_COL3 FROM SQLD_30_12_01 A WHERE A.COL2 > 10; |
2) SELECT A.COL1,
(SELECT COL5 FROM SQLD_30_12_03 B WHERE A.COL4 = B.COL4) AS B_COL3 FROM SQLD_30_12_02 A WHERE A.COL4 > 0; |
3) SELECT A.COL1, B.COL3
FROM SQLD_30_12_01 A INNER JOIN SQLD_30_12_02 B ON (A.COL1 = B.COL1) INNER JOIN SQLD_30_12_03 C ON (B.COL4 = C.COL4) WHERE C.COL4 > 5 AND A.COL2 > 10; |
4) SELECT A.COL1, B.COL3
FROM SQLD_30_12_01 A INNER JOIN SQLD_30_12_02 B ON (A.COL1 = B.COL1) WHERE EXISTS (SELECT 'X' FROM SQLD_30_12_03 C WHERE B.COL4 = C.COL4); |
๋ฌธ์ 13. ์๋์ SQL ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ Group by ๋ค ๋น์นธ์ ๋ค์ด๊ฐ๋ ๋ด์ฉ์ ๊ณ ๋ฅด์์ค
์ ๋ตํ์ธ๐ผ
SELECT JOB_ID, MANAGER_ID, SUM(SALARY)
FROM HR.EMPLOYEES
WHERE JOB_ID IN('SH_CLERK','ST_CLERK','SA_REP')
GROUP BY ( );
1) ROLLUP (JOB_ID, MANAGER_ID) 2) CUBE(JOB_ID, MANAGER_ID) 3) GROUPING SET(JOB_ID, MANAGER_ID) 4) ROLLUP (MANAGER_ID, JOB_ID) |
๋ฌธ์ 14. ์๋์ SQL ๊ฒฐ๊ณผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
SQLD_30_14_01
COL1 VARCHAR2(30)
COL2 NUMBER
SQLD_30_14_01
COL1 COL2
--------------
Y 20
X 30
A 40
A 50
SQL>
SELECT COUNT(*)
FROM SQLD_30_14_01
WHERE (COL1, COL2) IN (('A',50));
1) 0 2) 1 3) 2 4) 3 |
๋ฌธ์ 15. ์๋์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง ํ ์ด๋ธ์์ ์๋์ ๊ฐ์ SQL ์ด ์ํ๋์์๋์ ๊ฒฐ๊ณผ๋?
์ ๋ตํ์ธ๐ผ
SQLD_30_15_01
COL1 VARCHAR2(30)
COL2 NUMBER
SQLD_30_15_01
COL1 COL2
--------------
Y 20
X 30
A 40
A 50
10
80
SQL>
SELECT SUM(COL2)
FROM SQLD_30_15_01
WHERE COL1 IN ('A','X',NULL);
1) 210 2) 120 3) 230 4) 90 |
๋ฌธ์ 16. ์๋์ ์คํ๊ณํ์ ๋ํ SQL ์ํ ์์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
[๋ณด๊ธฐ]
0- SELECT ..
1- NESTED LOOP JOIN
2- NESTED LOOP JOIN
3- TABLE ACCESS (FULL)
4- TABLE ACCESS (BY INDEX ROWID)
5- INDEX (RANGE SCAN)
6- TABLE ACCESS (BY INDEX ROWID)
7- INDEX (RANGE SCAN)
1) 3-5-4-2-7-6-1-0 2) 5-3-4-2-7-6-1-0 3) 3-4-5-2-7-6-1-0 4) 3-5-4-2-6-7-1-0 |
๋ฌธ์ 17. ์๋ SQL ์ ์ํ๊ฒฐ๊ณผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
SQLD_30_17_01
COL1 VARCHAR2(30)
COL2 NUMBER
SQLD_30_17_01
COL1 COL2
------------
Y 20
X 30
A 40
A 50
10
80
SQL>
SELECT NVL(COUNT(*), 9999)
FROM SQLD_30_17_01
WHERE 1=2;
1) 0 2) 9999 3) 1 4) ERROR |
๋ฌธ์ 18. ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์๋ SQL์ ์ํ๊ฒฐ๊ณผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
SQLD_30_18_01
COL1 VARCHAR2(30)
COL2 NUMBER
SQLD_30_18_01
COL1 COL2
---------------
1 100
1 NULL
2 100
2 200
SQL>
SELECT COL1, SUM(COL2)
FROM SQLD_30_18_1
GROUP BY COL1;
1) COL1 1 2 |
SUM(COL2) NULL 300 |
2) COL1 1 2 |
SUM(COL2) 100 300 |
3) COL1 2 |
SUM(COL2) 300 |
4) COL1 1 1 2 |
SUM(COL2) 100 NULL 300 |
๋ฌธ์ 19. ์๋์ ๊ฐ์ SQL ์ด ์์๋๋ก ์ํ๋์์ ๋ ์ต์ข ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ์๋ง์ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
SQLD_30_19
COL1 NUMBER
[SQL]
1) INSERT INTO SQLD_30_19 VALUES(1);
2) INSERT INTO SQLD_30_19 VALUES(2);
3) SAVEPOINT SV1;
4) UPDATE SQLD_30_19 SET COL1=4 WHERE COL1=2;
5) SAVEPOINT SV1;
6) DELETE SQLD_30_19 WHERE COL1 >= 2;
7) ROLLBACK TO SV1;
8) INSERT INTO SQLD_30_19 VALUES(3);
9) SELECT MAX(COL1) FROM SQLD_30_19;
1) 1 2) 2 3) 3 4) 4 |
๋ฌธ์ 20. ์๋์ Trigger ์ ๋ํ ์ค๋ช ์ค ๊ฐ์ฅ ๋ถ์ ์ ํ ๊ฒ์ ? ***
์ ๋ตํ์ธ๐ผ
1) DELETE ON TRIGGER ์ ๊ฒฝ์ฐ :OLD ๋ ์ญ์ ์ ๋ฐ์ดํฐ๋ฅผ, :NEW๋ ์ญ์ ํ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ธ๋ค. 2) ํน์ ํ ์ด๋ธ์ DML๋ฌธ์ด ์ํ๋์์ ๋ ์๋์ผ๋ก ๋์ํ๋๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ด๋ค. 3) ํ ์ด๋ธ, ๋ทฐ์๋ง ํธ๋ฆฌ๊ฑฐ๋ฅผ ์์ฑํ ์ ์์ผ๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์๋ ์ ์ํ ์ ์๋ค. 4) UPDATE TRIGGER ์์ :OLD ์๋ ์์ ์ , :NEW ์๋ ์์ ํ ๊ฐ์ด ๋ค์ด๊ฐ๋ค. |
๋ฌธ์ 21. ์๋์ SELECT ๊ฒฐ๊ณผ๊ฐ NULL ์ด ์๋ ๊ฒฝ์ฐ๋?
์ ๋ตํ์ธ๐ผ
1) SELECT COALESCE ('AB','BC','CD') FROM DUAL; 2) SELECT CASE 'AB' WHEN 'BC' THEN 'CD' END FROM DUAL; 3) SELECT DECODE ('AB','CD','DE') FROM DUAL; 4) SELECT NULLIF ('AB','AB') FROM DUAL; |
๋ฌธ์ 22. ์๋์ ๊ฐ์ ํ ์ด๋ธ์ด ์์๋ ์๋์ ๊ฐ์ SQL ์ ์ํ๊ฒฐ๊ณผ์ ๋ํด ์์ฑํ์์ค
์ ๋ตํ์ธ๐ผ
SQLD_30_22
COL1 COL2
--------------
100 100
NULL 60
NULL NULL
SELECT COALESCE(COL1, COL2*50, 50) FROM SQLD_30_22;
1) 100, 3000, 50 2) 100, 60, NULL 3) 100, NULL, NULL 4) 100, 3000, NULL |
๋ฌธ์ 23. ์๋์ DML, DCL, DDL ์ด ์๋ชป ์ง์ง์์ง ๊ฒ์?
์ ๋ตํ์ธ๐ผ
1) DDL : CREATE 2) DML : UPDATE 3) DCL : ROLLBACK 4) DCL : SELECT |
๋ฌธ์ 24. ๋ณด๊ธฐ์ SQL ๋ช ๋ น์ด์ค TCL ์ธ ๊ฒ์ ์ด๋ค ๊ฒ์ธ๊ฐ?
์ ๋ตํ์ธ๐ผ
[๋ณด๊ธฐ]
UPDATE
GRANT
SELECT
COMMIT
1) UPDATE 2) GRANT 3) SELECT 4) COMMIT |
๋ฌธ์ 25. ์๋์ ํน์ง์ ๊ฐ์ง๋ ๋ฐ์ดํฐ ํ์ ์ ๋ฌด์์ธ๊ฐ?
์ ๋ตํ์ธ๐ผ
[๋ณด๊ธฐ]
๊ณ ์ ๊ธธ์ด ๋ฌธ์์ด ์ ๋ณด๋ก S๋งํผ ์ต๋ ๊ธธ์ด๋ฅผ ๊ฐ๊ณ ๊ณ ์ ๊ธธ์ด๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก
ํ ๋น๋ ๋ณ์ ๊ฐ์ ๊ธธ์ด๊ฐ S๋ณด๋ค ์์ ๊ฒฝ์ฐ์๋ ๊ทธ ์ฐจ์ด ๊ธธ์ด ๋งํผ ๊ณต๊ฐ์ผ๋ก ์ฑ์์ง๋ค.
1) CHARACTER 2) VARCHAR 3) NUMERIC 4) DATETIME |
๋ฌธ์ 26. ์๋์ SQL ๊ณผ ํญ์ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๋ SQL์ ๊ณ ๋ฅด์์ค
์ ๋ตํ์ธ๐ผ
SQL>
SELECT TOP(10) FIRST_NAME, JOB_ID
FROM HR.EMPLOYEES
ORDER BY SALARY;
1) SELECT FIRST_NAME, JOB_ID
FROM HR.EMPLOYEES WHERE ROWNUM <= 10 ORDER BY SALARY; |
2) SELECT TOP(10) WITH TIES FIRST_NAME, JOB_ID
FROM HR.EMPLOYEES ORDER BY SALARY; |
3) SELECT FRIST_NAME,JOB_ID
FROM ( SELECT FIRST_NAME, JOB_ID, ROWNUM RN FROM HR.EMPLOYEES
ORDER BY SALARY
WHERE RN <= 10;
|
4) SELECT FRIST_NAME,JOB_ID
FROM ( SELECT FIRST_NAME, JOB_ID FROM HR.EMPLOYEES ORDER BY SALARY ) WHERE ROWNUM <= 10;
|
๋ฌธ์ 27. ์๋์ ๊ณ์ธตํ SQL ์ ์ํํ์ฌ ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ๋ () ์ ๋ง๋ ๊ฒ์ ๊ณ ๋ฅด์์ค
์ ๋ตํ์ธ๐ผ
[SQL]
SELECT LEVEL,
LPAD('** ',(LEVEL -1)*2,'**') || EMPLOYEE_ID AS EMP_TREE,
MANAGER_ID,
EMPLOYEE_ID
FROM HR.EMPLOYEES
WHERE 1 = 1
START WITH ( )
CONNECT BY PRIOT ( );
[RESULT]
LEVEL EMP_TREE MANAGER_ID EMPLOYEE_ID
----------------------------------------------------
1 100 100
2 **101 100 101
3 *** 108 101 108
4 ***** 109 108 109
4 ***** 110 108 110
4 ***** 111 108 111
4 ***** 112 108 112
.
.
.
๋ท ๊ฒฐ๊ณผ ์๋ต
1) MANAGER_ID IS NULL, MANAGER_ID = EMPLOYEE_ID 2) MANAGER_ID IS NOT NULL, MANAGER_ID = EMPLOYEE_ID 3) MANAGER_ID IS NULL, EMPLOYEE_ID = MANAGER_ID 4) MANAGER_ID IS NOT NULL, EMPLOYEE_ID = MANAGER_ID |
๋ฌธ์ 28. SQL Set Operation ์์ ์ค๋ณต ์ ๊ฑฐ๋ฅผ ์ํด ์ ๋ ฌ ์์ ์ ํ์ง ์๋ ์งํฉ ์ฐ์ฐ์๋?
์ ๋ตํ์ธ๐ผ
1) UNION 2) UNION ALL 3) INTERSECT 4) MINUS |
๋ฌธ์ 29. SQL Set Operation ์์ ์ค๋ณต ์ ๊ฑฐ๋ฅผ ์ํด ์ ๋ ฌ ์์ ์ ํ์ง ์๋ ์งํฉ ์ฐ์ฐ์๋?
์ ๋ตํ์ธ๐ผ
[๋ณด๊ธฐ]
๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ์ฌ ์กฐ์ธํ๋ค
๋๋ฑ ์กฐ์ธ, ๋น๋๋ฑ ์กฐ์ธ์์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค
๊ฐ ํ
์ด๋ธ์ ์ ๋ ฌํ ํ ์กฐ์ธํ๋ค.
1) Sort Merge Join 2) Hash Join 3) Nested Loop Join 4) Cartesian Join |
๋ฌธ์ 30. ์๋ ERD ๋ฅผ ์ฐธ๊ณ ํ์ฌ ๋ชจ๋ ํ์์ ์ด ์ฃผ๋ฌธ๊ธ์ก์ ๊ตฌํ๋ SQL ์ค ์๋ชป๋ SQL ์?
์ ๋ตํ์ธ๐ผ
1) SELECT A.๊ณ ๊ฐ๋ช
,
NVL(SUM(C.์๋*B.์ํ๊ฐ๊ฒฉ),0) AS ์ด์ฃผ๋ฌธ๊ธ์ก FROM SQLD_30_30_๊ณ ๊ฐ A INNER JOIN SQLD_30_30_์ฃผ๋ฌธ C ON A.๊ณ ๊ฐID = C.๊ณ ๊ฐID INNER JOIN SQLD_30_30_์ํ B ON C.์ํID = B.์ํID WHERE 1=1 GROUP BY A.๊ณ ๊ฐ๋ช ORDER BY 1,2; |
2) SELECT A.๊ณ ๊ฐ๋ช
,
NVL(SUM(์ด๊ฐ๊ฒฉ),0) AS ์ด์ฃผ๋ฌธ๊ธ์ก FROM SQLD_30_30_๊ณ ๊ฐ A LEFT OUTER JOIN ( SELECT C.๊ณ ๊ฐID, C.์๋ * B.์ํ๊ฐ๊ฒฉ AS ์ด๊ฐ๊ฒฉ FROM SQLD_30_30_์ฃผ๋ฌธ C INNER JOIN SQLD_30_30_์ํ B ON C.์ํID = B.์ํID) D ON A.๊ณ ๊ฐID = D.๊ณ ๊ฐID WHERE 1=1 GROUP BY A.๊ณ ๊ฐ๋ช ORDER BY 1,2; |
3) SELECT A.๊ณ ๊ฐ๋ช
,
NVL(( SELECT SUM(C.์๋ * B.์ํ๊ฐ๊ฒฉ) FROM SQLD_30_30_์ฃผ๋ฌธ C LEFT JOIN SQLD_30_30_์ํ B ON C.์ํID = B.์ํID WHERE C.๊ณ ๊ฐID = A.๊ณ ๊ฐID),0 ) AS ์ด์ฃผ๋ฌธ๊ธ์ก FROM SQLD_30_30_๊ณ ๊ฐ A WHERE 1=1 ORDER BY 1,2; |
4) SELECT A.๊ณ ๊ฐ๋ช
,
NVL(SUM(C.์๋*B.์ํ๊ฐ๊ฒฉ),0) AS ์ด์ฃผ๋ฌธ๊ธ์ก FROM SQLD_30_30_๊ณ ๊ฐ A LEFT OUTER JOIN SQLD_30_30_์ฃผ๋ฌธ C ON A.๊ณ ๊ฐID = C.๊ณ ๊ฐID LEFT OUTER JOIN SQLD_30_30_์ํ B ON C.์ํID = B.์ํID WHERE 1=1 GROUP BY A.๊ณ ๊ฐ๋ช ORDER BY 1,2; |
๋ฌธ์ 31. ์๋์ SQL ์ ๋ก์ฐ์ ๊ฑด์๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
SQLD_30_31_01
COL1 COL2
--------------
1 2
1 2
1 3
SQLD_30_31_02
COL1 COL2
--------------
1 2
1 4
1 5
SQL>
SELECT DISTINCT COL1, COL2
FROM SQLD_30_31_01
UNION ALL
SELECT COL1, COL2
FROM SQLD_30_31_02;
1) 3 2) 4 3) 5 4) 6 |
๋ฌธ์ 32. ์๋์ ๋ฐ์ดํฐ๋ฅผ ์ฐธ๊ณ ํ์ฌ ๋ค์ SQL์ ๋ก์ฐ์ ๊ฑด์๊ฐ ๋ง๋ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
SQLD_30_32_01
COL1 COL2 COL3
-----------------------
1 2 NULL
2 NULL 1
4 NULL NULL
SQLD_30_32_02
COL1 COL2 COL3
-----------------------
1 NULL -1
2 NULL 1
3 5 2
SQL>
SELECT COUNT(*)
FROM SQLD_30_32_01 A, SQLD_30_32_02 B
WHERE A.COL1 = B.COL1
AND NVL(A.COL2, -1) = NVL(B.COL2, -1)
AND NVL(A.COL3, -1) = NVL(B.COL3, -1)
1) 1 2) 2 3) 3 4) 4 |
๋ฌธ์ 33. ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ํ ์ด๋ธ์์ Unique Index Scan ์ ํ ์ ์๋ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
[TABLE]
SQLD_30_33
KEY1 (PK) NUMBER
KEY2 (PK) NUMBER
COL1 VARCHAR2
COL2 VARCHAR2
COL3 VARCHAR2
1) ๋ชจ๋ ์ฌ์ฉํ ์ ์๋ค 2) WHERE KEY1 =1 AND KEY2 = 2 3) WHERE (KEY1, KEY2) IN ( (1,2) ) 4) WHERE KEY1 = 1 |
๋ฌธ์ 34. ์๋์ ERD ์์ ์๋ SQL ๋ฌธ์ ์์๋๋ก ์ํ ํ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ตฌ๊ฐ์?
์ ๋ตํ์ธ๐ผ
[ํ
์ด๋ธ ์ ๋ณด]
์ฃผ๋ฌธ (๊ณ ๊ฐID) REFERENCES ๊ณ ๊ฐ (๊ณ ๊ฐID)
[SQL]
1) INSERT INTO ๊ณ ๊ฐ VALUES ('C001','AAA');
2) INSERT INTO ์ฃผ๋ฌธ VALUES ('O001','C001','XXX');
3) UPDATE ์ฃผ๋ฌธ SET ๊ณ ๊ฐID = NULL WHERE ์ฃผ๋ฌธID = 'O001';
4) INSERT INTO ์ฃผ๋ฌธ VALUES ('O002','C002','YYY');
1) 1 ๋ฒ SQL 2) 2 ๋ฒ SQL 3) 3 ๋ฒ SQL 4) 4 ๋ฒ SQL |
๋ฌธ์ 35. Cross Join ๊ณผ Natural Join ์ ๋ํ ์ฐจ์ด์ ์ ๋ํด์ ๊ฐ์ฅ ๋ถ์ ์ ํ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
1) Cross Join ๊ณผ Natural Join ์ Where ์ ์์ ์กฐ๊ฑด์ ๊ฑธ ์ ์๋ค. 2) Natural Join ์์๋ ํน์ Join ์ปค๋ผ์ ๋ช ์์ ์ผ๋ก ์ ์ ์ ์๋ค. 3) Cross Join ์ Join ์ ์ฐธ์ฌํ๋ ํ ์ด๋ธ์ Join Key ๊ฐ ์์ ๊ฒฝ์ฐ ๋ฐ์ ํ๋ค. 4) Natural Join ์์ Join Key ๋ ์ปฌ๋ผ๋ช ์ผ๋ก ๊ฒฐ์ ๋๋ค. |
๋ฌธ์ 36. ์๋์ ๊ฐ์ด PK์ปฌ๋ผ์ด ๊ตฌ์ฑ๋์ด ์์ ๋ ๊ฐ์ฅ ์ ํฉํ ํํฐ์ ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ?
์ ๋ตํ์ธ๐ผ
[ํ
์ด๋ธ ์ ๋ณด]
ํน์ง : ๋ฐ์ดํฐ์ ์์ด ๋งค์ฐ ๋ง์ ๋์ฉ๋ ํ
์ด๋ธ, ๋ฐ์ดํฐ์ ์์ฑ์ผ์๋ฅผ ๊ตฌ๋ถ์ง๋ ํน์ ์ปฌ๋ผ์ด ์๋ ํํ์ด๋ค.
PK : ์ง์ , ์ฝ๋
1) Range 2) List 3) Hash 4) Interval |
๋ฌธ์ 37. ์๋ 2๊ฐ ํ ์ด๋ธ์ ๋ํ Join ํ ๋ํ๋ ๊ฒฐ๊ณผ์ด๋ค. ํด๋น Join ์ ๋ฐฉ๋ฒ์ ๊ณ ๋ฅด์์ค
์ ๋ตํ์ธ๐ผ
SQLD_30_37_01
COL1 COL2
--------------
1 2
2 2
3 3
SQLD_30_37_02
COL1 COL2
--------------
1 2
2 4
4 5
SQL>
SELECT *
FROM SQLD_30_37_01 A
( ) SQLD_30_37_02 B
ON (A.COL1 = B.COL1)
WHERE 1 = 1;
[RESULT]
A.COL1 A.COL2 B.COL1 B.COL2
------------------------------------
1 2 1 2
2 2 2 4
NULL NULL 4 5
1) LEFT OUTER JOIN 2) RIGHT OUTER JOIN 3) FULL OUTER JOIN 4) INNER JOIN |
๋ฌธ์ 38. ํน์ ๊ทธ๋ฃน์์ ํน์ ์ปฌ๋ผ์ผ๋ก ์ ๋ ฌ๋ ๊ฒฐ๊ณผ์์ ์ฒซ๋ฒ์งธ ๊ฐ์ ๊ตฌํ๋ Window Function ์ ๊ณ ๋ฅด์์ค.
์ ๋ตํ์ธ๐ผ
1) LAST_VALUE () OVER 2) FIRST_VALUE () OVER 3) MAX() OVER 4) ์๋ค |
๋ฌธ์ 39. ์๋์ SQL ๊ตฌ๋ฌธ์ด ์์๋๋ก ์ํ๋ ํ์ ๊ฒฐ๊ณผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
[SQL]
CREATE TABLE SQLD_30_39 (N1 NUMBER); INSERT INTO SQLD_30_39 VALUES(1);
INSERT INTO SQLD_30_39 VALUES(2);
CREATE TABLE TMP_SQLD_30_39 (N1 NUMBER);
INSERT INTO TMP_SQLD_30_39 VALUES(1);
TRUNCATE TABLE TMP_SQLD_30_39; ROLLBACK;
COMMIT;
SELECT SUM(N1) FROM SQLD_30_39;
1) 1 2) 2 3) 3 4) 4 |
๋ฌธ์ 40. ์๋์ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ ๋ SQL ์ ์คํ ๊ฒฐ๊ณผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
SQLD_30_40
COL1 COL2
-------------
1 10
2 20
3 NULL
SQL>
SELECT AVG( NVL (COL2, 0)) AS AVG_COL
FROM SQLD_30_40;
1) 10 2) 15 3) NULL 4) 20 |
๋ฌธ์ 41. ์๋์ SQL ์์ ORDER BY ๋ก ์ฌ์ฉ ํ ์ ์๋ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
[SQL]
SELECT JOB, COUNT(*) AS CNT
FROM TAB_A
GROUP BY JOB;
1) ORDER BY JOB 2) ORDER BY CNT DESC 3) ORDER BY COUNT(*) 4) ORDER BY 3 |
๋ฌธ์ 42. ์๋์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ ๋ ๋ณด๊ธฐ์ SQL ์ ์ํํ ํ SQLD_30_42_01 ํ ์ด๋ธ์ ๊ฑด์๋?
์ ๋ตํ์ธ๐ผ
SQLD_30_42_01
COL1 COL2 COL3
A X 1
B Y 2
C Z 3
X T 1
SQLD_30_42_02
COL1 COL2 COL3
A X 1
B Y 2
C Z 3
D ๊ฐ 4
E ๋ 5
SQL>
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);
1) 3 2) 4 3) 5 4) 6 |
- - - - - - - - ์ฃผ๊ด์ - - - - - - - -
๋ฌธ์ 43. SELECT ABS(-3.8), FLOOR(3.8), TRUNC(3.8), ROUND(3.8) FROM DUAL; ์ ๋ํ ๊ฐ์ ๊ตฌํ์์ค.
์ ๋ตํ์ธ๐ผ
โ๏ธ
๋ฌธ์ 44. ์๋์์ ์ค๋ช ํ๋ ๊ฒ์ ๋ฌด์์ธ๊ฐ?
์ ๋ตํ์ธ๐ผ
[๋ณด๊ธฐ]
๋ณต์กํ ์ง์๋ฅผ ๋จ์ํ๊ฒ ์์ฑํ ์ ์๋ค.๋ํ ํด๋น ํํ์ SQL๋ฌธ์ ์์ฃผ ์ฌ์ฉํ ๋ ์ด์ฉํ๋ฉด ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
์ฌ์ฉ์์๊ฒ ์ ๋ณด๋ฅผ ๊ฐ์ถ ์ ์๋ค ์ค์ ๋ฐ์ดํฐ ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ค |
โ๏ธ
๋ฌธ์ 45. ์๋์ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์๋ ํ ์ด๋ธ์์ ์๋ sql์ด ์ํ๋์์ ๋์ ๊ฒฐ๊ณผ ๊ฑด์๋?
์ ๋ตํ์ธ๐ผ
[TABLE] SQLD_30_45
๊ณ์ธต๋ฒํธ ์์๊ณ์ธต๋ฒํธ
--------------------
1 NULL
2 NULL
4 1
5 1
6 2
7 2
8 4
9 5
10 6
11 7
SQL>
SELECT LEVEL,
LPAD('** ',(LEVEL - 1)*2,' ') || ๊ณ์ธต๋ฒํธ AS ๊ณ์ธตํธ๋ฆฌ,
๊ณ์ธต๋ฒํธ,
์์๊ณ์ธต๋ฒํธ
FROM SQLD_30_45
START WITH ์์๊ณ์ธต๋ฒํธ IS NULL
CONNECT BY ๊ณ์ธต๋ฒํธ = PRIOR ์์๊ณ์ธต๋ฒํธ;
โ๏ธ
๋ฌธ์ 46. ์๋์ SQL ๊ตฌ๋ฌธ์ ์ปฌ๋ผ์ ๋ฐ์ดํฐ ํ์ ์ ๋ณํํ๋ SQL ๊ตฌ๋ฌธ์ด๋ค. SQL ๊ตฌ๋ฌธ์ ์์ฑํ์์ค. (SQL SERVER ๊ธฐ์ค์)
์ ๋ตํ์ธ๐ผ
[SQL] ( ) DEPT ( ) VARCHAR(30) NOT NULL;
โ๏ธ
๋ฌธ์ 47. ์๋์ ๊ฐ์ ํ ์ด๋ธ์ด ์์ ๋ ์๋์ SQL ๊ตฌ๋ฌธ์ด ์์๋๋ก ์ํ๋์์ ๋ ๋ง์ง๋ง SQL์ ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ ์ผ์์ค.
์ ๋ตํ์ธ๐ผ
[TABLE]
SQLD_47
COL1 VARCHAR2(30)
COL2 NUMBER
[SQL]
INSERT INTO SQLD_47(COL1, COL2) VALUES('ABCD',NULL);
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 SUM(COL2) FROM SQLD_47;
โ๏ธ
๋ฌธ์ 48. ํ ์ด๋ธ ์์ฑ์ ์ํ ๊ถํ์ ์ฃผ๊ธฐ ์ํด ์๋์ SQL ์ ์์ฑํ์์ค
์ ๋ตํ์ธ๐ผ
[SQL] ( ) CREATE TABLE TO USER01;
โ๏ธ
๋ฌธ์ 49. ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋๋ก SQL ์ ์์ฑํ์์ค
์ ๋ตํ์ธ๐ผ
[RESULT]
TABLE : SQLD_30_49
ํ์ID RANK ์ฃผ๋ฌธ๊ธ์ก
-----------------------
B 1 450
G 2 255
F 2 255
H 3 100
SQL>
SELECT ํ์ID,
DENSE_RANK() OVER(ORDER BY ( )),
์ฃผ๋ฌธ๊ธ์ก
FROM SQLD_30_49;
โ๏ธ
๋ฌธ์ 50. ์๋์ SQL ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ์์ค
์ ๋ตํ์ธ๐ผ
[SQL] SELECT UPPER("Sqldeveloper") FROM DUAL;
โ๏ธ
๐SQLD. ์ 30 ํ ๊ธฐ์ถ ๋ฌธ์ (์ด 50) - ์ ๋ต / ํด์ค
1. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค :
๊ตฌ๋ถ | ์ค๋ช |
๋๋ฉ์ธ | ๋ฐ์ดํฐํ์ , ํฌ๊ธฐ, ์ ์ฝ์ฌํญ ์ง์ |
์ ์ฝ์กฐ๊ฑด | PK(๊ธฐ๋ณธํค), Unique Key(๊ณ ์ ํค), Foreign Key(์ธ๋ํค), Check(์ ๋ ฅ๊ฐ ๋ฒ์์ ํ) |
์๋ณ์ | ์ฃผ์๋ณ์ํน์ง : ์ ์ผ์ฑ, ์ต์์ฑ, ๋ถ๋ณ์ฑ(๊ฐ์ด ๋ฐ๋์ง ์์), ์กด์ฌ์ฑ(Not null) |
์ ๊ทํ | ํจ์์ ์ข ์์ฑ์ ์ด์ฉํด ๋ฌด์์ค ๋ถํดํ๋ค. (์ ๋ ฅ/์์ /์ญ์ ์ฑ๋ฅ ํฅ์) *๋ฐ์ ๊ทํ๋ ์กฐ์ธ์ฑ๋ฅ ํฅ์ |
2. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : ๋ฐ์ ๊ทํ ์ ์ ํ ์ด๋ธ ์ถ๊ฐ (ํต๊ณ, ์ค๋ณต, ์ด๋ ฅ ํ ์ด๋ธ ์ถ๊ฐ) ๋ฅผ ํตํด ๋ฐ์ ๊ทํ๋ฅผ ํํผํ๋ค. - ํด๋น๋ด์ฉ์ ๋ฐ์ ๊ทํ ๊ธฐ๋ฒ์.
3. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : ์ฌ์ (๊ธฐ๋ณธ ์ํฐํฐ์ด๋ค.)
4. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : ์ค์ฌ ์ํฐํฐ : ์ํ, ์ฃผ๋ฌธ์ํ -> ์ํ์ ๊ธฐ๋ณธ ์ํฐํฐ์ด๋ค.
5. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : ๋ ผ๋ฆฌ์ ๋ชจ๋ธ๋ง
6. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : N๊ฐ ํ ์ด๋ธ์ ์กฐ์ธํ ๊ฒฝ์ฐ ์กฐ์ธ ์ต์ ์กฐ๊ฑด์ N-1๊ฐ์ด๋ค.
7. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : ํ ์ด๋ธ์ ์ง๋์น๊ฒ ๋ง์ ์กฐ์ธ๊ณผ Sorting, Order by ํ๋ก์ธ์ค๊ฐ ๋ง์ ๊ฒฝ์ฐ
8. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : ๋ํ์ฑ ์ฌ๋ถ์ ๋ฐ๋ผ ๋ถ๋ฅ๋๋ ์ฃผ์๋ณ์์ ๋ณด์กฐ์๋ณ์์์ ์ฃผ์๋ณ์๋ ๋ํ์ฑ์ ๊ฐ์ง์ง ๋ชปํด ์ฐธ์กฐ๊ด๊ณ ์ฐ๊ฒฐ์ ๋ชปํ๋ค.
9. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค :
๊ตฌ๋ถ | ์ค๋ช |
๋ถ์ฐ DB | ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ฐ์ ์์คํ , ๋ฌผ๋ฆฌ์ ๋ถ์ฐ, ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ํด์นจ |
๋ถํ ํฌ๋ช ์ฑ | ๋ถํ ๋์ ์ฌ๋ฌ๊ตฐ๋ฐ ์ ์ฅ |
์์น ํฌ๋ช ์ฑ | ์ ์ฅ์ฅ์ ๋ช ์ ๋ถํ์, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค์ ์์น๋ฅผ ์ ํ์์์ด ๋จ์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ผ๋ฆฌ์ ์ธ ๋ช ์นญ๋ง์ผ๋ก ์์ธ์ค ํ ์ ์๋ค. |
์ง์ญ์ฌ์ ํฌ๋ช ์ฑ | ์ง์ญ DBMS์ ๋ฌผ๋ฆฌ์ DB ์ฌ์ด Mapping ๋ณด์ฅ |
์ค๋ณต ํฌ๋ช ์ฑ | ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ๊ณณ์ ์ค๋ณต๋์ด ์๋๋ผ๋ ์ฌ์ฉ์๋ ๋ง์น ํ๋์ ๋ฐ์ดํฐ๋ง ์กด์ฌํ๋ ๊ฒ์ฒ๋ผ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. |
์ฅ์ ํฌ๋ช ์ฑ | ํธ๋์ญ์ , DBMS, ๋คํธ์ํฌ, ์ปดํจํฐ ์ฅ์ ์๋ ํธ๋์ญ์ ์ ์ ํํ๊ฒ ์ฒ๋ฆฌํ๋ค. |
๋ณํ ํฌ๋ช ์ฑ | ๋ค์์ ํธ๋์ญ์ ์ด ๋์์ ์คํ๋๋๋ผ๋ ๊ทธ ๊ฒฐ๊ณผ๋ ์ํฅ์ ๋ฐ์ง ์๋๋ค. |
10. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : Row Chaining (row ์ ๊ธธ์ด๊ฐ ๋๋ฌด ๊ธธ๋ ์ฌ๋ฌ ๋ธ๋ก์ ๊ฑธ์ณ์ ์ ์ฅํ๋ค.)
11. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : ORA-01722: ์์น๊ฐ ๋ถ์ ํฉํฉ๋๋ค. (VARCHAR : ๊ฐ๋ณ ๋ฌธ์์ด์ด๋ฏ๋ก ๋น๊ต์ฐ์ฐ์ ํ ์์๋ค.)
12. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : ORA-01427: ๋จ์ผ ํ ํ์ ์ง์์ 2๊ฐ ์ด์์ ํ์ด ๋ฆฌํด๋์์ต๋๋ค. ( ์๋ธ์ฟผ๋ฆฌ๋ ๋จ 1๊ฐ์ ํ๋ง ๊ฐ์ ธ์ฌ์์๋ค. )
SQL> SELECT A.COL1,
(SELECT COL3 FROM SQLD_30_12_02 B
WHERE A.COL1 = B.COL1) AS B_COL3
FROM SQLD_30_12_01 A
WHERE A.COL2 > 10;
ERROR:
ORA-01427: single-row subquery returns more than one row
no rows selected
SQL> SELECT A.COL1,
(SELECT COL5 FROM SQLD_30_12_03 B
WHERE A.COL4 = B.COL4) AS B_COL3
FROM SQLD_30_12_02 A
WHERE A.COL4 > 0;
COL1 B_COL
----- -----
1 A
2 B
3 C
A D
SQL> SELECT A.COL1, B.COL3
FROM SQLD_30_12_01 A
INNER JOIN SQLD_30_12_02 B
ON (A.COL1 = B.COL1)
INNER JOIN SQLD_30_12_03 C
ON (B.COL4 = C.COL4)
WHERE C.COL4 > 5
AND A.COL2 > 10;
COL1 COL3
----- -----
1 ABC
2 DEF
3 XY
SQL> SELECT A.COL1, B.COL3
FROM SQLD_30_12_01 A
INNER JOIN SQLD_30_12_02 B
ON (A.COL1 = B.COL1)
WHERE EXISTS (SELECT 'X'
FROM SQLD_30_12_03 C
WHERE B.COL4 = C.COL4);
COL1 COL3
----- -----
1 ABC
2 DEF
3 XY
A 1
13. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : ROLLUP (JOB_ID, MANAGER_ID)
14. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : COL1 = A , COL2 = 50 ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ฏ๋ก ๋ต์ 1๊ฐ์ด๋ค.
15. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : COL1 ์ด A or X or Null ์ธ COL2 ์ ์ปฌ๋ผ๊ฐ์ ํฉํด์ฃผ์ธ์.(X, 30) (A,40) (A,50) Null์ ํฌํจ๋์ง์๋๋ค X
30+40+50 = 120
16. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : (๊ณ์ธต๊ตฌ์กฐ) ์ ํํ ์ด๋ธ -> ์ธ๋ฑ์ค ->์กฐ์ธ
17. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : WHERE 1 = 2 ( count(*) = 0 ๊ณต์งํฉ์ด๋ค. )
NVL -> ( count(*) is null ์ด๋ฉด 9999, ์๋๋ฉด count(*) ๋ฐํ 0์ด๋ฏ๋ก ์ ๋ต 0 )
18. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ์ง๊ณํจ์ SUM์ NULL ์ ํฌํจํ์ง์๋๋ค.
19. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : SAVEPOINT ์ด๋ฆ์ด ๊ฐ์๋ ๋ง์ง๋ง์ ์ ์ฅํ ๊ฐ์ผ๋ก ROLLBACK ํ๋ค.
20. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : ํธ๋ฆฌ๊ฑฐ๋ DB ์์ฒด์ ์ ์ฅ, ํ ์ด๋ธ, ๋ทฐ์ ์ฌ์ฉ๊ฐ๋ฅ
Procedure | Trigger |
EXECUTE ๋ช ๋ น์ด๋ก ์คํ | ์๋ ์คํ(์ด๋ฒคํธ ๋ฐ์ํ ๋) |
CREATE Procedure | CREATE Trigger |
COMMIT, ROLLBACK ๊ฐ๋ฅ | COMMIT, ROLLBACK ๋ถ๊ฐ๋ฅ |
๋ฐ๋์ ๊ฐ RETURN ํ์ X | DML ์ ์ฃผ๋ก ์ฌ์ฉ |
21. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : COALESCE ํจ์๋ ์ฒ์์ผ๋ก NULL์ด ์๋ ์ปฌ๋ผ ๊ฐ์ ๋ง๋๋ฉด ๊ทธ ์ปฌ๋ผ ๊ฐ์ ๋ฆฌํด ํ๋ค. coalesce(ํฉ์น๋ค)
22. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : COALESCE(ํํ์1, ํํ์2, โโโ) : ์์์ ๊ฐ์ ํํ์์์ NULL์ด ์๋ ์ต์ด์ ํํ์์ ์ถ๋ ฅ
(๋ชจ๋ ํํ์์ด NULL ์ด๋ฉด NULL ๋ฆฌํด)
SELECT COALESCE(COL1, COL2*50, 50) FROM SQLD_30_11;
-> (100, 100) COL1 = 100 ์ด๋ฏ๋ก 100
-> (NULL, 60) COL1 = NULL ์ด๋ฏ๋ก pass, COL2 = 60 ์ด๋ฏ๋ก 60*50 = 3000
-> (NULL, NULL) ์ด๋ฉด pass, 50
( 100, 3000, 50 )
23. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : SELECT ๋ ๋ฐ์ดํฐ ์กฐ์์ด(Data Manipulation Language) DML ์ ์ํ๋ค.
๊ตฌ๋ถ | ์ข ๋ฅ |
DDL | CREATE, DROP, MODIFY(์ค๋ผํด), ALTER(SQL์๋ฒ) |
DML | SELECT, INSERT, DELETE, UPDATE |
DCL | GRANK, REVOKE |
TCL | COMMIT, ROLLBACK, SAVEPOINT |
DCL์ ํธ๋์ญ์ ์ ์ ์ดํ๋๋ฐ ํนํ๋ ๋ช ๋ น์ด๋ฅผ TCL(Transaction Control Language) 'ํธ๋์ญ์ ์ ์ ์ดํ๋ SQL ์ธ์ด' ๋ผ๊ณ ํ๋ค.
์ธ๋ถ์ ์ผ๋ก๋ DCL์ด TCL์ ํฌํจํ๊ณ ์๋ค.
24. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : TCL(Transaction Control Language) - COMMIT, ROLLBACK, SAVEPOINT
25. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : CHARACTER (๊ณ ์ ๊ธธ์ด ๋ฌธ์์ด, S๋งํผ ์ต๋๊ธธ์ด(๊ทธ๋ณด๋ค ์์์ ๊ณต๋ฐฑ์ผ๋ก ์ฑ์ด๋ค.)
26. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : ROWNUM( ์์ N๊ฐ ์ถ์ถ ) , TOP( ORDER BY๊ฐ ์์์ ์ ๋ ฌ ํ ์์ N๊ฐ ์ถ์ถ )
27. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค :
28. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : UNION ALL (ํฉ์งํฉ & ์ค๋ณตํ์ฉ)
29. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : Sort Merge Join ( ์ ๋ ฌ ๋ณํฉ ์กฐ์ธ )
30. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค :
31. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : DISTINCT(์ค๋ณต์ ๊ฑฐ), UNION ALL(์ค๋ณต ํ์ฉ ํฉ์งํฉ)
32. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค :
33. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : WHERE KEY 1 = 1
34. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : 'C002' ๊ณ ๊ฐID ๊ฐ ์ฃผ๋ฌธ์๋ง ์์ ์ ์์ -- ORA-02291 : ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด(LSS.๊ณ ๊ฐ_FK)์ด ์๋ฐฐ... - ๋ถ๋ชจ Key๊ฐ ์์ต๋๋ค.
35. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : Cross Join ์ Where ์ ์์ ์กฐ๊ฑด์ ๊ฑธ ์ ์๋ค.
36. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : LIST ( ๋๋ ๋ฐ์ดํฐ / ํน์ ์ปฌ๋ผ(์์ฑ์ผ์) ์์ / PK )
37. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : RIGHT OUTER JOIN
38. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค :
1) LAST_VALUE() OVER : ๊ฐ์ฅ ๋ง์ง๋ง ๊ฐ
2) FIRST_VALUE () OVER : ์ ์ผ ์ฒ์๊ฐ
3) MAX() OVER : ์ ์ผ ํฐ ๊ฐ
39. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค :
40. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : 10
41. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค :
42. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : 6 -- MERGE ์์์ DELETE ๊ตฌ๋ฌธ์ DELETE ๋จ๋ ๊ตฌ๋ฌธ์ด ์๋ UPDATE ๊ตฌ๋ฌธ์ ์ข ์๋จ UPDATE ์คํ๋ ๊ฑด์ ํํด์ DELETE ๊ตฌ๋ฌธ์ด ์ํ๋๋ค.
- - - - - - - - ์ฃผ๊ด์ - - - - - - - -
43. ์ ๋ต : 3.8 , 3 , 3 , 4
๐๋ฌธ์ ํ์ธ
ํด์ค : ABS(์ ๋๊ฐ), FLOOR(ceil์ ๋ฐ๋, ์ ์๋ก ๋ด๋ฆผ), TRUNC(์์์ ๋ฒ๋ฆผ), ROUND(๋ฐ์ฌ๋ฆผ)
44. ์ ๋ต : View
๐๋ฌธ์ ํ์ธ
ํด์ค : view (ํ๋ ์ด์์ ๊ธฐ๋ณธ ํ ์ด๋ธ์ด๋ ๋ค๋ฅธ ๋ทฐ๋ฅผ ์ด์ฉํ์ฌ ์์ฑ๋๋ ๊ฐ์ ํ ์ด๋ธ)
45. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค :
-> FROM ํด๋นํ ์ ํ
-> START WITH ์์๊ณ์ธต๋ฒํธ IS NULL(1, 2 ์ ํ)
-> CONNECT BY ๊ณ์ธต๋ฒํธ = PRIOR ์์๊ณ์ธต๋ฒํธ
PRIOR ์์ = ๋ถ๋ชจ
-> PRIOR ์์๊ณ์ธต๋ฒํธ = NULL์ธ ๊ณ์ธต๋ฒํธ๊ฐ ์์ผ๋ฏ๋ก ์ข ๋ฃ
-> 2๊ฑด ์ถ๋ ฅ
46. ์ ๋ต : ALTER TABLE, ALTER COLUMN
๐๋ฌธ์ ํ์ธ
ํด์ค :
47. ์ ๋ต : 10
๐๋ฌธ์ ํ์ธ
ํด์ค :
48. ์ ๋ต : GRANT
๐๋ฌธ์ ํ์ธ
ํด์ค : GRANT( ๊ถํ๋ถ์ฌ ) / REVORK( ๊ถํํ์ )
49. ์ ๋ต : ์ฃผ๋ฌธ๊ธ์ก DESC
๐๋ฌธ์ ํ์ธ
ํด์ค : DENSE_RANK() (๋์ผ ์์, ์์ ๊ฑด๋๋ฐ๊ธฐ X (1์, 2์, 2์, 3์)
-> ์ฃผ๋ฌธ๊ธ์ก์ ๋ฐ๋ผ ์์๋ถ์ฌ
-> DENSE_RANK() OVER(ORDER BY ์ฃผ๋ฌธ๊ธ์ก DESC) ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
50. ์ ๋ต : SQLDEVELOPER
๐๋ฌธ์ ํ์ธ
ํด์ค : UPPER ( ๋๋ฌธ์๋ก ๋ณํ ), LOWER ( ์๋ฌธ์๋ก ๋ณํ ), INITCAP ( ์ฒซ ๋ฒ์งธ ๋ฌธ์๋ง ๋๋ฌธ์๋ก ๋ณํ )
'IT์๊ฒฉ์ฆ ๊ณต๋ถ > SQLD ๊ธฐ์ถ๋ฌธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQLD] 38ํ ๊ธฐ์ถ ๋ฌธ์ ( 50๋ฌธ์ / ์ ๋ต ) + ํด์ค์ถ๊ฐ (24) | 2022.05.25 |
---|---|
[SQLD] 39ํ ๊ธฐ์ถ ๋ฌธ์ ( 50๋ฌธ์ / ์ ๋ต,ํด์คํฌํจ ) (62) | 2022.05.19 |
[SQLD] 35ํ ๊ธฐ์ถ ๋ฌธ์ ( 50๋ฌธ์ / ์ ๋ต,ํด์คํฌํจ ) (27) | 2022.05.13 |
[SQLD] 34ํ ๊ธฐ์ถ ๋ฌธ์ ( 50๋ฌธ์ / ์ ๋ต,ํด์คํฌํจ ) (19) | 2022.04.26 |
[SQLD] 30ํ ๊ธฐ์ถ๋ฌธ์ 1๊ณผ๋ชฉ ( 10๋ฌธ์ / ์ ๋ต ) (1) | 2022.04.07 |