DAY03. SQL Basic (Sort, Subquery)
SQL Sort (๋ ์ฝ๋ ์ ๋ ฌ)
1. Order by
default ์ ๋ ฌ์ ์ค๋ฆ์ฐจ์ (์ซ์:์ ์ ๊ฐ, ๋ ์ง:๋น ๋ฅธ ๊ฐ, ๋ฌธ์:์ํ๋ฒณ ์์)
null ๊ฐ์ ์ค๋ฆ์ฐจ์์์ ์ ์ผ ๋์ค์, ๋ด๋ฆผ์ฐจ์์์๋ ์ ์ผ ๋จผ์
โ
ASC : ํ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ (default)
DESC : ํ์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ (Order by ์ ์์ ์ด ์ด๋ฆ ๋ค์ ๋ช ์)โ
โ
โ
โ
1) ๋ ์ฝ๋ ์ ๋ ฌ(sort)
SELECT hiredate,empno,ename,job,sal,deptno
FROM emp
ORDER BY hiredate; -- ๋ ์งํ : ์ค๋ฆ์ฐจ์(default)
SELECT hiredate,empno,ename,job,sal,deptno
FROM emp
ORDER BY hiredate desc; -- ๋ ์งํ : ๋ด๋ฆผ์ฐจ์
SELECT hiredate,empno,ename,job,sal,deptno
FROM emp
ORDER BY sal; -- ์ซ์ํ : ์ค๋ฆ์ฐจ์
SELECT hiredate,empno,ename,job,sal,deptno
FROM emp
ORDER BY sal desc; -- ์ซ์ํ : ๋ด๋ฆผ์ฐจ์
โ
2) ์ฐ๋ด์ ๋ํ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ๋ฐฉ์ ( ๊ธฐ๋ณธ ์์น์ ์นผ๋ผ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ)
SELECT empno,ename,job,sal,sal*12 annsal FROM emp ORDER BY annsal; -- ๋ณ์นญ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
SELECT empno,ename,job,sal,sal*12 annsal FROM emp ORDER BY sal*12; -- ์์์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
SELECT empno,ename,job,sal,sal*12 annsal FROM emp ORDER BY 5; -- SELECT ์ ์ 5๋ฒ์งธ ์นผ๋ผ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
โ
โ3) 2๊ฐ ์ด์ ์นผ๋ผ์ ์ด์ฉํ ์ ๋ ฌ
SELECT deptno,sal,empno,ename,job
FROM emp
ORDER BY deptno, sal DESC; -- 1์ฐจ ์ ๋ ฌ : deptno (ASC ์๋ต) 2์ฐจ ์ ๋ ฌ : sal DESC
์ฐ์ต๋ฌธ์
1. EMP ํ ์ด๋ธ์์ hiredate๊ฐ 1981๋ 2์ 20๊ณผ 1981๋ 5์ 1์ผ ์ฌ์ด์ ์ ์ฌํ ์ฌ์์ ename, job, hiredate์ ์ถ๋ ฅํ๋ SELECT ๋ฌธ์ฅ์ ์์ฑ(๋จ hiredate ์์ผ๋ก ์ ๋ ฌ)
SELECT ename, job, hiredate
FROM emp
WHERE hiredate BETWEEN '1981/02/20' AND '1981/05/01'
ORDER BY hiredate;
โ
2. EMP ํ ์ด๋ธ์์ deptno๊ฐ 10, 20์ธ ์ฌ์์ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ SELECT ๋ฌธ์ฅ์์์ฑ (๋จ ename์์ผ๋ก ์ ๋ ฌ)
SELECT *
FROM emp
WHERE deptno IN (10,20)
ORDER BY ename;
์ฐ์ต๋ฌธ์
[๋ฌธ1] emp์์ 30๋ฒ ๋ถ์์ ๊ทผ๋ฌดํ๋ ์ฌ์์ ์ด๋ฆ, ๊ธ์ฌ, ์ฌ๋ฒ ์ถ๋ ฅํ๊ธฐ
-- ์ฌ์ฉ ์นผ๋ผ๋ช : ์ด๋ฆ(ename),๊ธ์ฌ(sal),์ฌ๋ฒ(empno) ์ถ๋ ฅํ๊ธฐ
SELECT * FROM emp;
SELECT empno, ename, sal
FROM emp
WHERE deptno = 30;
โ
[๋ฌธ2] student ํ ์ด๋ธ์ ์ ์ฒด ํ์๋ค์ ๋์์ผ๋ก ๋ค์ ์)์ ๊ฐ์ด ์ถ๋ ฅํ๊ธฐ
-- ์) ํ๊ธธ๋์ ํค๋ 175cm, ๋ชธ๋ฌด๊ฒ๋ 65kg์ ๋๋ค.
-- ์ฌ์ฉ ์ปฌ๋ผ๋ช : ํค(height), ๋ชธ๋ฌด๊ฒ(weight)
SELECT * FROM student;
SELECT name ||'์ ํค๋'|| height ||'cm, ๋ชธ๋ฌด๊ฒ๋'||weight||'kg ์
๋๋ค.'
FROM student;
โโ
[๋ฌธ3] student ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ 2ํ๋ ์ค์์ ํค๊ฐ 180cm ๋ณด๋ค ํฌ๊ณ ,
-- ๋ชธ๋ฌด๊ฒ๊ฐ 70kg ๋ณด๋ค ํฐ ํ์๋ค์ ์ด๋ฆ,ํ๋ ,ํค,๋ชธ๋ฌด๊ฒ ์ถ๋ ฅํ๊ธฐ
-- ์ฌ์ฉ ์ปฌ๋ผ๋ช : ์ด๋ฆ(name), ํ๋ (grade), ํค(height), ๋ชธ๋ฌด๊ฒ(weight)
SELECT * FROM student;
SELECT name, grade, height, weight
FROM student
WHERE grade = 2 AND (height >180 AND weight > 70);
โโ
[๋ฌธ4] student ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ 1ํ๋ ํ์์ ์ด๋ฆ, ํค, ๋ชธ๋ฌด๊ฒ ์ถ๋ ฅํ๊ธฐ
-- (๋จ, ํค๋ ์ค๋ฆ์ฐจ์, ๋ชธ๋ฌด๊ฒ๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅ)
SELECT * FROM student;
SELECT name, weight, height
FROM student
WHERE grade=1
ORDER BY weight, height DESC; -- 1์ฐจ ์ ๋ ฌ์์ ๋์ผํ ํค๋ฅผ ๊ฐ๋ ํ์์ด ์๊ธฐ ๋๋ฌธ์ 2์ฐจ ์ ๋ ฌ ์ ์ฉ๋์ง ์์์
โโ
[๋ฌธ5] student ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ 1ํ๋ ํ์์ '์ด๋ฆ'๊ณผ 'ํค' ์ถ๋ ฅ(๋ณ์นญ ์ด์ฉ)
-- (๋จ, ์ด๋ฆ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ)
SELECT * FROM student;โ
SELECT name AS "์ด๋ฆ", height "ํค" -- ์นผ๋ผ(์ด)์ ์ด๋ฆ ๋ณ๊ฒฝ
FROM student
WHERE grade=1
ORDER BY ์ด๋ฆ; --๋ณ์นญ์ผ๋ก ์ ๋ ฌ
โโ
[๋ฌธ6] professor ํ ์ด๋ธ์์ ๊ต์๋ค์ ์ด๋ฆ์ ์กฐํํ์ฌ
-- ์ฑ ๋ถ๋ถ์ '๊น'์ด ํฌํจ๋ ์ฌ๋์ ์ด๋ฆ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ถ๋ ฅ
SELECT * FROM professor;
SELECT *
FROM professor
WHERE name LIKE '๊น%'
ORDER BY name;
โโ
[๋ฌธ7] professor ํ ์ด๋ธ๋ฅผ ๋์์ผ๋ก '์ ์'์ผ๋ก ๊ฒ์ํ์ฌ ์ ์๊ฐ์ฌ๋ฅผ ๋ชจ๋ ๊ฒ์ํ๊ธฐ
-- ์ฌ์ฉ ์นผ๋ผ๋ช : position
SELECT * FROM professor;
SELECT *
FROM professor
WHERE position LIKE '์ ์%';
โโ
[๋ฌธ8] ์ฅ๋ฐ๊ตฌ๋์ '์ฐ์ '์ '๋นต'๋ฅผ ๋์์ ๊ตฌ์ ํ ์ฅ๋ฐ๊ตฌ๋ ID ์ถ๋ ฅ(table ๋ณ์นญ ์ด์ฉ)
โ/*
* <์ฅ๋ฐ๊ตฌ๋ ID>
* 101
* 103
*/
SELECT * FROM cart_products;
SELECT *
FROM cart_products
WHERE NAME = '์ฐ์ ' AND NAME = '๋นต'; -- SELECT ํน์ฑ๋๋ฌธ์ ๊ฒ์ ๋ ์ฝ๋ ์์.
-- ์ ํ์ฌ๊ฑด '์ฐ์ '๋ฅผ ๋จผ์ ์กฐํ -> ์ปค์์ด๋(์์๋๋ก) -> ๊ฒ์ ํ ์ปค์ 8๋ฒ์ ์์น -> ํํ์ฌ๊ฑด ์กฐํ -> ๋ ์ฝ๋๊ฐ ์์ผ๋ฏ๋ก ๊ฒ์๊ฒฐ๊ณผ ์กฐํ ์ ๋จ
โ
-- table ๋ณ์นญ
-- ํ๋์ ๋ฌผ๋ฆฌ ํ ์ด๋ธ์ ๋ ๊ฐ๋ก ์ชผ๊ฐ์ด ๊ฐ๊ฐ์ ์ฌ๊ฑด๋๋ก ์ ํ์ฌ๊ฑด๊ณผ ํํ์ฌ๊ฑด์ ๊ฒ์ํ๊ณ AND๋ก ๋ฌถ์ด์ฃผ์ด์ผ ํจ
SELECT DISTINCT c1.cart_id
FROM cart_products c1, cart_products c2 -- (๋ฌผ๋ฆฌ์ ๊ตฌ๋ถ ์นดํ
๊ณ ๋ฆฌ)c1, c2๋ ์นผ๋ผ๊ณผ ํ
์ด๋ธ์์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ
WHERE c1.name='์ฐ์ ' AND c2.name='๋นต' -- ์ ํ์ฌ๊ฑด c1 ์กฐํ -> ํํ์ฌ๊ฑด c2 ์กฐํ
ORDER BY c1.cart_id;
* AND ์ฐ์ฐ์๊ฐ ์๋ํ ๊ฒ์ด ์๋๋ผ, '์ฐ์ '๋ฅผ ๊ตฌ๋งคํ id๋ฅผ ์ถ๋ ฅํ๊ณ , '๋นต'์ ๊ตฌ๋งคํ id๋ฅผ ์ถ๋ ฅํ ๊ฒ์ด๋ค.
โ์๋ธ์ฟผ๋ฆฌ
์๋ธ์ฟผ๋ฆฌ?
์ง๋ฌธํ ์ ์๋ ์ฟผ๋ฆฌ.
๋ฉ์ธ ์ฟผ๋ฆฌ ์์์ ๊ดํธ๋ก ๋ฌถ์ฌ ์ฐ์ ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ ์ฟผ๋ฆฌ๋ฌธ.
โ
์ ์ฌ์ฉํ๋?
๋ ๋ฒ ์ด์ ๋จ์ผ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผํ๋ ๋ฌธ์ฅ์ ํ ๋ฒ์ ์ฒ๋ฆฌํ ์ ์์.
โ
โ
โ
โ
1. ํ ์ด๋ธ ์์ฑ
ํ์1) main query AS sub query;
ํ์1) ํ ์ด๋ธ ์์ฑ (๋ด์ฉ+๊ตฌ์กฐ)
CREATE table dept01
AS
SELECT * FROM dept; -- ์กฐ๊ฑด์ ํด๋นํ๋ ๊ฒ๋ง ์ ํ
์ด๋ธ๋ก ์์ฑํ ์ ์์
ํ์2) main query SQL์ฐ์ฐ์ (sub query);
ex) main : dept(๋ถ์์ ๋ณด), sub : emp(์ฌ์์ ๋ณด) ->์ฌ์์ ๋ณด๋ฅผ ์ด์ฉํด์ ๋ถ์์ ๋ณด๋ฅผ ์ฐพ๊ณ ์ ํ ๋
WHERE deptno =
(SELECT deptno FROM emp WHERE ename='SCOTT'); -- SCOTT ๋์๋ฌธ์ ๊ตฌ๋ถ
โ
โ
โ
โ
2. ๋จ์ผํ ์๋ธ์ฟผ๋ฆฌ (์๋ธ์ฟผ๋ฆฌ์์ SELECTํ ๋จ์๊ฐ ํ ๊ฐ์ง์ผ ๋)
ํ์) main query ๋น๊ต์ฐ์ฐ์ (sub query);
โ
1. ์ค์ต
-- 1. SCOTT๊ณผ ๊ฐ์ ๋ถ์์์ ๊ทผ๋ฌดํ๋ ์ฌ์์ ์ด๋ฆ๊ณผ ๋ถ์ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ SQL ๋ฌธ์ ์์ฑํด ๋ณด์์ค. (EMP)
SELECT ename, deptno -- ์๋ธ์ฟผ๋ฆฌ์์ ๋์ด ์จ ๊ฒฐ๊ณผ๊ฐ 20์ 2์ฐจ ์ฒ๋ฆฌ
FROM emp
WHERE deptno =
(SELECT deptno FROM emp WHERE ename='SCOTT'); -- ์๋ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ 20
FROM emp
WHERE deptno =
(SELECT deptno FROM emp WHERE ename='SCOTT'); -- ์๋ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ 20
โ
-- SCOTT์ ์ ์ธํ ์ฌ์ ์ด๋ฆ ์ถ๋ ฅ&์ ๋ ฌ
SELECT ename, deptno -- ์๋ธ์ฟผ๋ฆฌ์์ ๋์ด ์จ ๊ฒฐ๊ณผ๊ฐ 20์ 2์ฐจ ์ฒ๋ฆฌ
FROM emp
WHERE deptno =
(SELECT deptno FROM emp WHERE ename='SCOTT')
AND ename != 'SCOTT' -- ์ฌ๊ธฐ๊น์ง WHERE์ . ๊ดํธ ๋ฐ๊นฅ์ ๋ฌด์กฐ๊ฑด ๋ฉ์ธ ์ฟผ๋ฆฌ์ ํด๋น๋๋ค.
ORDER BY ename;
FROM emp
WHERE deptno =
(SELECT deptno FROM emp WHERE ename='SCOTT')
AND ename != 'SCOTT' -- ์ฌ๊ธฐ๊น์ง WHERE์ . ๊ดํธ ๋ฐ๊นฅ์ ๋ฌด์กฐ๊ฑด ๋ฉ์ธ ์ฟผ๋ฆฌ์ ํด๋น๋๋ค.
ORDER BY ename;
โ
-- 2. SCOTT์ ๋์ผํ ์ง์์๊ด(MGR)์ ๊ฐ์ง ์ฌ์์ ์ถ๋ ฅํ๋ SQL๋ฌธ์ ์์ฑํด ๋ณด์์ค. (EMP)
SELECT *
FROM emp
WHERE mgr =
(SELECT mgr FROM emp WHERE ename='SCOTT');
FROM emp
WHERE mgr =
(SELECT mgr FROM emp WHERE ename='SCOTT');
โ
-- 3. SCOTT์ ๊ธ์ฌ์ ๋์ผํ๊ฑฐ๋ ๋ ๋ง์ด ๋ฐ๋ ์ฌ์ ๋ช ๊ณผ ๊ธ์ฌ๋ฅผ ์ถ๋ ฅํ์์ค.(EMP)
SELECT ename, sal
FROM emp
WHERE sal >=
(SELECT sal FROM emp WHERE ename='SCOTT');
FROM emp
WHERE sal >=
(SELECT sal FROM emp WHERE ename='SCOTT');
โ
-- 4. DALLAS์์ ๊ทผ๋ฌดํ๋ ์ฌ์์ ์ด๋ฆ, ๋ถ์ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ์์ค. (์๋ธ์ฟผ๋ฆฌ : DEPT01, ๋ฉ์ธ์ฟผ๋ฆฌ : EMP)
SELECT ename, deptno
FROM emp
WHERE deptno = -- ์ฌ์ ์ ๋ณด ์กฐํ
(SELECT deptno FROM dept01 WHERE loc = 'DALLAS'); -- ๋ถ์ ์ ๋ณด (20๋ฒ ๋ถ์) ์กฐํ
-- ๋ชจ๋ ํ
์ด๋ธ์ ์๋ธ์ฟผ๋ฆฌ๋ก ๋๋ ์๋ ์์. ๊ณตํต ์นผ๋ผ์ด ์์ด์ผ๋ง ๊ฐ๋ฅํ๋ค.
-- JOIN ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ ์์
FROM emp
WHERE deptno = -- ์ฌ์ ์ ๋ณด ์กฐํ
(SELECT deptno FROM dept01 WHERE loc = 'DALLAS'); -- ๋ถ์ ์ ๋ณด (20๋ฒ ๋ถ์) ์กฐํ
-- ๋ชจ๋ ํ ์ด๋ธ์ ์๋ธ์ฟผ๋ฆฌ๋ก ๋๋ ์๋ ์์. ๊ณตํต ์นผ๋ผ์ด ์์ด์ผ๋ง ๊ฐ๋ฅํ๋ค.
-- JOIN ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ ์์
โ
-- 5. SALES(์์ ๋ถ) ๋ถ์์์ ๊ทผ๋ฌดํ๋ ๋ชจ๋ ์ฌ์์ ์ด๋ฆ๊ณผ ๊ธ์ฌ๋ฅผ ์ถ๋ ฅํ์์ค.(์๋ธ์ฟผ๋ฆฌ : DEPT01, ๋ฉ์ธ์ฟผ๋ฆฌ : EMP)
SELECT ename, sal
FROM emp
WHERE deptno =
(SELECT deptno FROM dept01 WHERE dname = 'SALES');
โ
โ
2. ๋จ์ผํ ์๋ธ์ฟผ๋ฆฌ (๊ทธ๋ฃนํจ์ ์ฌ์ฉ ์)
SELECT ename, sal
FROM emp
WHERE sal > (SELECT AVG(sal) FROM emp);
โโ
โ
3. ๋ค์คํ ์๋ธ์ฟผ๋ฆฌ (์๋ธ์ฟผ๋ฆฌ์์ SELECTํ ๋จ์๊ฐ 2ํ ์ด์์ธ ๊ฒฝ์ฐ)
ํ์) main query IN/ANY/ALL
โ
1) IN ์ฐ์ฐ์ : ๋ฉ์ธ ์ฟผ๋ฆฌ์ ๋น๊ต์กฐ๊ฑด์ด ์๋ธ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ ์ค์์ ํ๋๋ผ๋ ์ผ์นํ๋ฉด TURE
SELECT ename, sal, deptno
FROM emp
WHERE deptno IN
(SELECT DISTINCT deptno
FROM emp
WHERE sal>=3000);
ํ๊ดํ = ๋ค์ค ํ
โ
-- ๋จ์ผ SQL๋ฌธ
SELECT ename, sal, deptno
FROM emp
WHERE deptno IN (10,20);
โ
--7. ์ง๊ธ(JOB)์ด MANAGER์ธ ์ฌ๋์ด ์ํ ๋ถ์์ ๋ถ์ ๋ฒํธ์ ๋ถ์๋ช ๊ณผ ์ง์ญ์ ์ถ๋ ฅํ์์ค.(DEPT01๊ณผ EMP ํ ์ด๋ธ ์ด์ฉ)
SELECT deptno, dname, loc
FROM dept01
WHERE deptno IN
(SELECT deptno FROM emp WHERE job = 'MANAGER')
ORDER BY deptno;
โ
-- ๋จ์ผ SQL๋ฌธ
SELECT deptno, dname, loc
FROM dept01
WHERE deptno IN (10, 20, 30);
โโ
2) ALL ์ฐ์ฐ์ : ์๋ธ ์ฟผ๋ฆฌ์ ๊ฒ์ ๊ฒฐ๊ณผ์ ๋ชจ๋ ๊ฐ์ด ์ผ์นํ๋ฉด TURE (AND์ ์ ์ฌ)
-- ๋ค์คํ -> ์ต๋๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋น๊ต๋ฅผ ํ ๋ ์ฌ์ฉ
SELECT ename, sal
FROM emp
WHERE sal >
ALL(SELECT sal -- ๊ธ์ฌ๊ฐ 30๋ฒ ๋ถ์์ ์ต๋๊ฐ๋ณด๋ค ํฐ ์ฌ์
FROM emp
WHERE deptno =30); --30๋ฒ ๋ถ์์ ์๋ ์ฌ์๋ค ์ค (์ต๋๊ฐ:2850์ด ๊ธฐ์ค์ด ๋จ)
โ
-- 8. ์์ ์ฌ์๋ค ๋ณด๋ค ๊ธ์ฌ๋ฅผ ๋ง์ด ๋ฐ๋ ์ฌ์๋ค์ ์ด๋ฆ๊ณผ ๊ธ์ฌ์ ์ง๊ธ
-- ์ถ๊ฐ ์ฌํญ (๋ด๋น ์ ๋ฌด)๋ฅผ ์ถ๋ ฅํ๋ ANALYST๋ ์ถ๋ ฅํ์ง ์์ต๋๋ค.
SELECT ename, sal, job
FROM emp
WHERE sal >
ALL(SELECT sal
FROM emp
WHERE job='SALESMAN')
AND job != 'ANALYST';
โโ
3. ANY ์ฐ์ฐ์ : ์๋ธ ์ฟผ๋ฆฌ์ ๊ฒ์ ๊ฒฐ๊ณผ์ ํ๋ ์ด์์ด ์ผ์นํ๋ฉด TURE (OR์ ์ ์ฌ)
-- ๋ค์คํ -> ์ต์๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋น๊ต๋ฅผ ํ ๋ ์ฌ์ฉ
SELECT ename, sal
FROM emp
WHERE sal > ANY
(SELECT sal
FROM emp
WHERE deptno = 30); -- 950~2850 ์ค ์ต์๊ฐ 950์ด ๊ธฐ์ค์ด ๋จ
โ
-- 9. ์์ ์ฌ์๋ค์ ์ต์ ๊ธ์ฌ๋ณด๋ค ๋ง์ด ๋ฐ๋ ์ฌ์๋ค์ ์ด๋ฆ๊ณผ ๊ธ์ฌ์ ์ง๊ธ (๋ด๋น ์ ๋ฌด)๋ฅผ ์ถ๋ ฅํ๋
-- ์ถ๊ฐ ์ฌํญ : ์์ ์ฌ์์ ์ถ๋ ฅํ์ง ์์ต๋๋ค.
SELECT ename, sal
FROM emp
WHERE sal > ANY
(SELECT sal
FROM emp
WHERE job = 'SALESMAN')
AND job != 'SALESMAN';
์ฐ์ต๋ฌธ์
select * from STUDENT; -- profno(๊ต์๋ฒํธ), deptno01(์ฃผ์ ๊ณต)
select * from PROFESSOR; -- ๊ณตํต์นผ๋ผ : profno(๊ต์๋ฒํธ)
โ
-- [๋ฌธ1] STUDENT ํ ์ด๋ธ ๊ฒ์ ๊ฒฐ๊ณผ(sub)๋ฅผ ์ด์ฉํ์ฌ STUDENT01 ํ ์ด๋ธ ์์ฑ(main)
-- Sub(STUDENT), Main(STUDENT01)
CREATE TABLE student01
AS
SELECT * FROM student;
โ
-- [๋ฌธ2] ๊ต์๋ฒํธ๊ฐ 2001์ธ ์ง๋๊ต์๋ฅผ ๋ชจ์๋ ์ ์ฒด ํ์ ๋ช ๋ถ ์ถ๋ ฅ
-- Sub(PROFESSOR), Main(STUDENT01)
SELECT *
FROM student01
WHERE profno =
(SELECT profno FROM professor WHERE profno = 2001);
โ
-- [๋ฌธ3] ๋ณด๋์ค๋ฅผ ๋ฐ๋ ๊ต์๋ค์ ์ด๋ฆ, ์ง์, ๊ธ์ฌ, ๋ณด๋์ค ์ถ๋ ฅ
-- ์กฐ๊ฑด) IN()ํจ์ ์ด์ฉ : ๋ค์ค ํ ์ฒ๋ฆฌ
SELECT name, position, pay, bonus
FROM professor
WHERE profno IN
(SELECT profno FROM professor WHERE bonus IS NOT NULL);
โ
-- [๋ฌธ4] 301 ํ๊ณผ(DEPTNO) ๊ต์๋ค ๋ณด๋ค ๋ ๋ง์ ๊ธ์ฌ๋ฅผ ๋ฐ๋ ๊ต์๋ค์ ์ด๋ฆ, ์ง์, ๊ธ์ฌ, ํ๊ณผ ์ถ๋ ฅ
-- ์กฐ๊ฑด) ALL()ํจ์ ์ด์ฉ : ๋ค์ค ํ ์ฒ๋ฆฌ
SELECT name, position, pay, deptno
FROM professor
WHERE pay > ALL
(SELECT pay FROM professor WHERE deptno=301);
โโ
--[๋ฌธ5] ์ฅ๋ฐ๊ตฌ๋์ '์ฐ์ '์ '๋นต'๋ฅผ ๋์์ ๊ตฌ์ ํ ์ฅ๋ฐ๊ตฌ๋ ID ์ถ๋ ฅ(subQuery ์ด์ฉ)
/*
* <์ฅ๋ฐ๊ตฌ๋ ID>
* 101
* 103
*/
select * from CART_PRODUCTS;
SELECT DISTINCT cart_id
FROM cart_products
WHERE cart_id IN
(SELECT cart_id FROM cart_products WHERE name = '๋นต')
AND name = '์ฐ์ '
ORDER BY cart_id;
-- [ํด์ค] ์๋ธ์ฟผ๋ฆฌ์์ '๋นต'์ ๊ตฌ๋งค์(1001,1002,1003)์ ๋ฉ์ธ์ฟผ๋ฆฌ์์ '์ฐ์ ' ๊ตฌ๋งค์(1001,1003) ๋์ AND์ฐ์ฐ
* table ๋ณ์นญ์ ์ด์ฉํด์ ๊ฒฐ๊ณผ๊ฐ์ ๋์ถํ๋ ๊ฒ์ ํ์ดํฌ์ฑ