LEE_BOMB 2021. 9. 13. 19:00
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 ๋ณ„์นญ์„ ์ด์šฉํ•ด์„œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋„์ถœํ–ˆ๋˜ ๊ฒƒ์€ ํŽ˜์ดํฌ์„ฑ