yeony._.
๐Ÿข์ฝฉ๋ถ€๐Ÿข
yeony._.
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (99)
    • ๐Ÿ’ปProgramming (91)
      • โ˜•๏ธJava (19)
      • ๐Ÿ’ฝOracle (21)
      • ๐Ÿ‘ฉ‍๐ŸŽจHTML&CSS (12)
      • ๐ŸŽจ ์‹ค์Šต (4)
      • ๐Ÿƒ‍โ™€๏ธJavaScript (25)
      • JSP (8)
      • ๐ŸƒSpring (0)
      • ๐Ÿฅงpython (0)
      • API (0)
      • ๐Ÿ˜ˆGit (1)
    • ๐ŸคซPrivate (0)
      • -- (0)
      • + (0)
      • S (0)
      • P (0)
      • B (0)
    • ๐Ÿ˜ŽProject (4)
      • ๐Ÿ—“๏ธwbs ํ”„๋กœ์ ํŠธ (3)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • HTML #CSS #HTML์ด๋ฏธ์ง€ #HTML์ด๋ฏธ์ง€์—๊ธ€์”จ #HTML์ด๋ฏธ์ง€์—์ด๋ฏธ์ง€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
yeony._.

๐Ÿข์ฝฉ๋ถ€๐Ÿข

[Oracle] ๊ธฐ๋ณธ์ ์ธ SQL
๐Ÿ’ปProgramming/๐Ÿ’ฝOracle

[Oracle] ๊ธฐ๋ณธ์ ์ธ SQL

2022. 8. 4. 20:52

1. BETWEEN ์กฐ๊ฑด์‹

ํ•œ์‹์˜ ๊ฐ’์ด ๋‹ค๋ฅธ ๋‘์‹์œผ๋กœ ์ •์˜๋œ ๊ฐ„๊ฒฉ์— ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •

ํ•จ์ˆ˜์ด๋ฏ€๋กœ ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž๊ฐ€ ๋” ํšจ์œจ์  


ํ˜•์‹

์ปฌ๋Ÿผ๋ช… BETWEEN ๊ฐ’ AND ๊ฐ’

 

์‚ฌ์šฉ ์˜ˆ

-- emp ํ…Œ์ด๋ธ” : sal๊ฐ€ 2000000~3000000 ์‚ฌ์ด ์ธ ์ž๋ฃŒ ์ค‘ name, sal ์ปฌ๋Ÿผ ์ถœ๋ ฅ
SELECT name, sal
FROM emp
WHERE sal BETWEEN 2000000 AND 3000000;

SELECT name, sal
FROM emp
WHERE sal>= 2000000 AND sal <= 3000000;


-- emp ํ…Œ์ด๋ธ” : sal๊ฐ€ 2000000~3000000์„ ์ œ์™ธํ•œ ์ž๋ฃŒ ์ค‘ name, sal ์ปฌ๋Ÿผ ์ถœ๋ ฅ
SELECT name, sal
FROM emp
WHERE sal NOT BETWEEN 2000000 AND 3000000;

SELECT name, sal
FROM emp
WHERE sal <2000000 OR sal> 3000000;


-- emp ํ…Œ์ด๋ธ” : hireDate๊ฐ€ 2010๋…„๋„์ธ ์ž๋ฃŒ์ค‘ name, hireDate ์ปฌ๋Ÿผ ์ถœ๋ ฅ
SELECT name, hireDate
FROM emp
WHERE hireDate BETWEEN '2010-01-01' AND '2010-12-31';

SELECT name, hireDate
FROM emp
WHERE TO_CHAR(hireDate, 'YYYY') = 2010;

 

2. IN ์กฐ๊ฑด์‹

list์— ์žˆ๋Š” ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ผ์น˜ํ•˜๋ฉด TRUE

-- emp ํ…Œ์ด๋ธ” : city๊ฐ€ '์„œ์šธ', '์ธ์ฒœ', '๊ฒฝ๊ธฐ' ์ธ  ์ž๋ฃŒ ์ค‘ name, city ์ปฌ๋Ÿผ ์ถœ๋ ฅ
SELECT name, city
FROM emp
WHERE city = '์„œ์šธ' OR city = '๊ฒฝ๊ธฐ' OR city = '์ธ์ฒœ';

SELECT name, city
FROM emp
WHERE city IN ('์„œ์šธ', '๊ฒฝ๊ธฐ', '์ธ์ฒœ');


-- emp ํ…Œ์ด๋ธ” : city๊ฐ€ '์„œ์šธ', '์ธ์ฒœ', '๊ฒฝ๊ธฐ' ๋ฅผ ์ œ์™ธํ•œ  ์ž๋ฃŒ ์ค‘ name, city ์ปฌ๋Ÿผ ์ถœ๋ ฅ
SELECT name, city
FROM emp
WHERE city NOT IN ('์„œ์šธ', '๊ฒฝ๊ธฐ', '์ธ์ฒœ');


-- emp ํ…Œ์ด๋ธ” : city์™€ pos๊ฐ€ '์„œ์šธ  ์ด๋ฉด์„œ '๋ถ€์žฅ'์ด๊ฑฐ๋‚˜ '๊ฒฝ๊ธฐ' ์ด๋ฉด์„œ '๊ณผ์žฅ' ์ธ ์ž๋ฃŒ ์ค‘ name,  city, pos ์ปฌ๋Ÿผ ์ถœ๋ ฅ
SELECT name, city, pos
FROM emp
WHERE (city ='์„œ์šธ' AND POS = '๋ถ€์žฅ') OR (city ='๊ฒฝ๊ธฐ' AND POS = '๊ณผ์žฅ');

SELECT name, city, pos
FROM emp
WHERE (city, pos) IN (('์„œ์šธ', '๋ถ€์žฅ'), ('๊ฒฝ๊ธฐ','๊ณผ์žฅ'));


-- emp ํ…Œ์ด๋ธ” : city์™€ pos๊ฐ€ '์„œ์šธ' ์ด๋ฉด์„œ '๋ถ€์žฅ' ์ธ ์ž๋ฃŒ ์ค‘ name, city, pos ์ปฌ๋Ÿผ ์ถœ๋ ฅ(subquery)
SELECT name, city, pos 
FROM emp
WHERE (city = '์„œ์šธ' AND pos ='๋ถ€์žฅ');

SELECT name, city, pos 
FROM emp
WHERE (city,pos) IN(('์„œ์šธ','๋ถ€์žฅ'));

 


3.  LIKE ์กฐ๊ฑด์‹

์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์ด ํŒจํ„ด๊ณผ ์ผ์น˜ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€ ํ™•์ธ 

ํŒจํ„ด ๋ฌธ์ž

% : 0๋ฌธ์ž ์ด์ƒ ๊ณตํ†ต (null๊ณผ๋Š” ์ผ์น˜ํ•  ์ˆ˜ X)
_ : 1๋ฌธ์ž ์ด์ƒ ๊ณตํ†ต 

-- emp ํ…Œ์ด๋ธ” : name์ด '๊น€'์”จ์ธ  ์ž๋ฃŒ ์ค‘ empNo, name ์ปฌ๋Ÿผ ์ถœ๋ ฅ
SELECT empNo, name, tel FROM emp
WHERE tel LIKE '๊น€%';  -- 3์ด ์กด์žฌํ•˜๋Š” ์ „ํ™”๋ฒˆํ˜ธ 


-- emp ํ…Œ์ด๋ธ” : LIKE ์˜ˆ           
SELECT empNo, name, tel FROM emp
WHERE tel LIKE '%3%'; -- 3์ด ์กด์žฌํ•˜๋Š” ์ „ํ™”๋ฒˆํ˜ธ 

SELECT empNo, name, tel FROM emp
WHERE tel LIKE '%3'; -- 3์œผ๋กœ ๋๋‚˜๋Š” ์ „ํ™”๋ฒˆํ˜ธ 

SELECT empNo, name, tel, rrn FROM emp
WHERE rrn LIKE '_0%'; -- ์ƒ๋…„์›”์ผ์—์„œ ๋…„๋„๊ฐ€ 10์˜ ๋ฐฐ์ˆ˜์ธ ์‚ฌ๋žŒ 


-- ์ „ํ™”๋ฒˆํ˜ธ์— 3๋˜๋Š” 5๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ(empNo, name, tel)
SELECT empNo, name, tel FROM emp
WHERE tel LIKE '%3%' OR '%5%' ; 


-- ์ฃผ๋ฏผ๋ฒˆํ˜ธ(rrn)๋ฅผ ์ด์šฉํ•˜์—ฌ 2์›”์— ์ถœ์ƒํ•œ ์„œ์šธ, ๊ฒฝ๊ธฐ ์‚ฌ๋žŒ(empNo, name, rrn, city)

SELECT empNo, name, rrn, city FROM emp
WHERE rrn LIKE '__02%' AND (city ='์„œ์šธ' OR  city ='๊ฒฝ๊ธฐ' ); 

   
-- ์„ฑ์”จ๊ฐ€ 'ใ„ฑ' ์ธ ๋ชจ๋“  ์ด๋ฆ„ ์ถœ๋ ฅ(๋‚˜์”จ๋Š” ์ถœ๋ ฅ ์•ˆ๋จ)
SELECT name FROM emp
WHERE name > '๊ฐ€' AND name < '๋‚˜';



ESCAPE : '%' ๋‚˜ '_' (ํŒจํ„ด ๋ฌธ์ž)๊ฐ€ ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด ํ™œ์šฉ

WITH : ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ๋ธ”๋Ÿญํ™” ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ
 

WITH tb AS (
	SELECT '๊ฐ€๊ฐ€๊ฐ€' name, '์šฐ๋ฆฌ_๋‚˜๋ผ' content  FROM dual
		UNION ALL
	SELECT '๋‚˜๋‚˜๋‚˜' name, '์ž๋ฐ”%์Šคํ”„๋ง' content  FROM dual
    	UNION ALL
	SELECT '๋‹ค๋‹ค๋‹ค' name, '์šฐ๋ฆฌ๋‚˜๋ผ' content  FROM dual
		UNION ALL
	SELECT '๋ผ๋ผ๋ผ' name, '๋ชจ๋ฐ”์ผ' content  FROM dual
		UNION ALL
	SELECT '๋งˆ๋งˆ๋งˆ' name, '์•ˆ๋“œ๋กœ์ด๋“œ%๋ชจ๋ฐ”์ผ' content  FROM dual
    ) 
	SELECT * FROM  tb;
-- content ์ปฌ๋Ÿผ์—์„œ %๋ฅผ ๊ฒ€์ƒ‰ 
 WITH tb AS (
 	SELECT '๊ฐ€๊ฐ€๊ฐ€' name, '์šฐ๋ฆฌ_๋‚˜๋ผ' content  FROM dual
		UNION ALL
	SELECT '๋‚˜๋‚˜๋‚˜' name, '์ž๋ฐ”%์Šคํ”„๋ง' content  FROM dual
		UNION ALL
	SELECT '๋‹ค๋‹ค๋‹ค' name, '์šฐ๋ฆฌ๋‚˜๋ผ' content  FROM dual
		UNION ALL	
    SELECT '๋ผ๋ผ๋ผ' name, '๋ชจ๋ฐ”์ผ' content  FROM dual
		UNION ALL
	SELECT '๋งˆ๋งˆ๋งˆ' name, '์•ˆ๋“œ๋กœ์ด๋“œ%๋ชจ๋ฐ”์ผ' content  FROM dual
    ) 
    SELECT * FROM  tb 
    WHERE content LIKE '%#%%' ESCAPE '#';
WITH tb AS (
	SELECT '๊ฐ€๊ฐ€๊ฐ€' name, '์šฐ๋ฆฌ_๋‚˜๋ผ' content  FROM dual
    	UNION ALL
	SELECT '๋‚˜๋‚˜๋‚˜' name, '์ž๋ฐ”%์Šคํ”„๋ง' content  FROM dual
		UNION ALL
	SELECT '๋‹ค๋‹ค๋‹ค' name, '์šฐ๋ฆฌ๋‚˜๋ผ' content  FROM dual
  		UNION ALL
	SELECT '๋ผ๋ผ๋ผ' name, '๋ชจ๋ฐ”์ผ' content  FROM dual
		UNION ALL
	SELECT '๋งˆ๋งˆ๋งˆ' name, '์•ˆ๋“œ๋กœ์ด๋“œ%๋ชจ๋ฐ”์ผ' content  FROM dual
	) 
    SELECT * FROM  tb 
    WHERE INSTR(content, '%')>=1;

 

4. NULL

์˜ค๋ผํด์—์„œ๋Š” null๊ณผ '' ๋Š” ๋ชจ๋‘ null

-- ์ฃผ์˜์‚ฌํ•ญ 
SELECT 10 + NULL FROM dual; -- null 

-- emp ํ…Œ์ด๋ธ” : tel์ด NULL ์ธ ์ž๋ฃŒ ์ค‘ name, tel ์ปฌ๋Ÿผ ์ถœ๋ ฅ
SELECT name, tel FROM emp;
SELECT name, tel FROM emp WHERE tel = NULL: -- ์ž˜๋ชป๋œ ํ‘œํ˜„
SELECT name, tel FROM emp WHERE tel IS NULL: 

-- emp ํ…Œ์ด๋ธ” : tel์ด NULL ์•„๋‹Œ ์ž๋ฃŒ ์ค‘ name, tel ์ปฌ๋Ÿผ ์ถœ๋ ฅ
SELECT name, tel FROM emp WHERE tel is NOT NULL:

 

5. CASE ํ‘œํ˜„์‹(Expressions)

IF~THEN~ELSE ๋…ผ๋ฆฌ์™€ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ํ‘œํ˜„์‹์„ ์ž‘์„ฑํ•ด์„œ SQL์˜ ๋น„๊ต ์—ฐ์‚ฐ ๊ธฐ๋Šฅ์„ ๋ณด์™„ ํ•˜๋Š” ์—ญํ• 

 

ํ˜•์‹1  ๊ฐ„๋‹จํ•œ CASE ํ‘œํ˜„์‹

 SELECT empNo, name, rrn,
 	CASE SUBSTR(rrn, 8, 1)
		WHEN '1' THEN '๋‚จ์ž'  -- WHEN 1 THEN '๋‚จ์ž' ๋ผ๊ณ  ์ฝ”๋”ฉํ•˜๋ฉด ์˜ค๋ฅ˜
		WHEN '2' THEN '์—ฌ์ž'
		WHEN '3' THEN '๋‚จ์ž'
		WHEN '4' THEN '์—ฌ์ž'
	END AS ์„ฑ๋ณ„
FROM emp;

SELECT empNo, name, rrn,
	CASE MOD(SUBSTR(rrn, 8, 1), 2)
		WHEN 0 THEN '์—ฌ์ž'
		WHEN 1 THEN '๋‚จ์ž'
	END AS ์„ฑ๋ณ„
FROM emp;

ํ˜•์‹2  ์กฐ๊ฑด CASE ํ‘œํ˜„์‹

-- empNo, name, sal, bonus, ์ด๊ธ‰์—ฌ, ์„ธ๊ธˆ
-- ์„ธ๊ธˆ์€ ์ด๊ธ‰์—ฌ๊ฐ€ 300๋งŒ์›์ด์ƒ์ด๋ฉด 3%
-- ์„ธ๊ธˆ์€ ์ด๊ธ‰์—ฌ๊ฐ€ 200๋งŒ์›์ด์ƒ์ด๋ฉด 2%
-- ๋‚˜๋จธ์ง€ ์„ธ๊ธˆ์€ 0

SELECT empNo, name, sal, bonus, (sal+bonus) tot,
	CASE
		WHEN (sal+bonus) >= 3000000 THEN (sal+bonus) * 0.03
		WHEN (sal+bonus) >= 2000000 THEN (sal+bonus) * 0.02
		ELSE 0
	END ์„ธ๊ธˆ
FROM emp;

 

 

6. DECODE ํ•จ์ˆ˜

 

DECODE(a, 'b', 1, 2) : aํ•ญ๋ชฉ ๊ฐ’์ด 'b' ์ด๋ฉด 1, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด 2๋ฅผ ๋ฐ˜ํ™˜

DECODE(a, 'b', 1) : aํ•ญ๋ชฉ ๊ฐ’์ด 'b' ์ด๋ฉด 1, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด null์„ ๋ฐ˜ํ™˜

DECODE(a, 'b', 1, 'c', 2) :  aํ•ญ๋ชฉ ๊ฐ’์ด 'b' ์ด๋ฉด 1, 'c' ์ด๋ฉด 2, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด null์„ ๋ฐ˜ํ™˜

 DECODE(a, 'b', 1, 'c', 2, 3) : aํ•ญ๋ชฉ ๊ฐ’์ด 'b' ์ด๋ฉด 1, 'c' ์ด๋ฉด 2, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด 3 ์„ ๋ฐ˜ํ™˜
SELECT empNo, name, rrn,
	DECODE(SUBSTR(rrn, 8, 1), 1, '๋‚จ์ž') 
FROM emp;  -- ์„ฑ๋ณ„์ด 1์ด๋ฉด ๋‚จ์ž ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด null

SELECT empNo, name, rrn,
	DECODE(SUBSTR(rrn, 8, 1), 1, '๋‚จ์ž', 2, '์—ฌ์ž', 3, '๋‚จ์ž', 4, '์—ฌ์ž', '์™ธ๊ตญ์ธ')
FROM emp;

SELECT empNo, name, rrn,
	DECODE(MOD(SUBSTR(rrn, 8, 1), 2), 0, '์—ฌ์ž', '๋‚จ์ž') ์„ฑ๋ณ„
FROM emp;



7. SELECT ๊ตฌ๋ฌธ์˜ ์˜ต์…˜

ALL ์˜ต์…˜ - ๋ชจ๋“  ํ–‰ ๋ฐ˜ํ™˜, ์ƒ๋žต ๊ฐ€๋Šฅ 
SELECT ALL dept FROM emp;
SELECT dept FROM emp;

DISTINCT | UNIQUE ์˜ต์…˜ - ์ค‘๋ณต์ ์ธ ํ–‰์€ ํ•˜๋‚˜๋งŒ ์ถœ๋ ฅ 
SELECT DISTINCT dept FROM emp;
SELECT UNIQUE dept FROM emp;

SELECT DISTINCT dept, pos FROM emp;
-- ์˜์—…๋ถ€ ๋ถ€์žฅ 
-- ์˜์—…๋ถ€ ๊ณผ์žฅ

 

8. SELECT ๊ตฌ๋ฌธ์˜ ORDER BY ์ ˆ

--sal ์˜ค๋ฆ„์ฐจ์ˆœ
SELECT name, dept, sal, bonus, sal + bonus pay 
FROM emp ORDER BY sal; 

--sal ์˜ค๋ฆ„์ฐจ์ˆœ (ASC ์ƒ๋žต ๊ฐ€๋Šฅ)
SELECT name, dept, sal, bonus, sal + bonus pay 
FROM emp ORDER BY sal ASC;  

--sal ๋‚ด๋ฆผ์ฐจ์ˆœ
SELECT name, dept, sal, bonus, sal + bonus pay 
FROM emp ORDER BY sal DESC;  

-- dept ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ  dept ๊ฐ€ ๊ฐ™์œผ๋ฉด sal ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
SELECT name, dept, sal, bonus, sal + bonus pay 
FROM emp ORDER BY dept, sal DESC ;  

-- dept ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ  dept ๊ฐ€ ๊ฐ™์œผ๋ฉด sal ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
SELECT name, dept, sal, bonus, sal + bonus pay 
FROM emp ORDER BY dept DESC, sal ; 

-- dept ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ  dept ๊ฐ€ ๊ฐ™์œผ๋ฉด sal ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
SELECT name, dept, sal, bonus, sal + bonus pay 
FROM emp ORDER BY dept DESC, sal DESC ; 

-- dept ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ  dept ๊ฐ€ ๊ฐ™์œผ๋ฉด sal ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
SELECT name, dept, sal, bonus, sal + bonus pay 
FROM emp ORDER BY dept, sal; 

-- sal + bonus ๋‚ด๋ฆผ์ฐจ์ˆœ 
SELECT name, dept, sal, bonus, sal + bonus pay 
FROM emp ORDER BY pay DESC ;


๊ตฌ๋ฌธ๋ถ„์„

FROM ์ ˆ -> WHERE์ ˆ -> SELECT์ ˆ -> ORDER BY
๋”ฐ๋ผ์„œ SELECT ์ ˆ์˜ ๋ณ„๋ช…์€ ORDER BY์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ 

-- sal + bonus ๋‚ด๋ฆผ์ฐจ์ˆœ : ์ˆซ์ž๋กœ ์ปฌ๋Ÿผ์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜์—ฌ ์ •๋ ฌ 
SELECT name, dept, sal, bonus, sal + bonus pay
FROM emp ORDER BY 5 DESC;


-- ๋‚จ์ž์ค‘ city ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ  city ๊ฐ€ ๊ฐ™์œผ๋ฉด ๋‚จ์ž๋ฅผ ๋จผ์ € ์ถœ๋ ฅ : name, rrn, dept, sal
SELECT name, rrn, city, sal
FROM emp 
WHERE MOD(SUBSTR(rrn, 8, 1),2) = 1
ORDER BY city, sal DESC;
     
SELECT name, rrn, city, sal
FROM emp 
WHERE SUBSTR(rrn, 8, 1) IN (1,3,5,7,9)
ORDER BY city, sal DESC;


-- dept ๊ฐ€ ๊ฐœ๋ฐœ๋ถ€์ธ ์‚ฌ๋žŒ์ค‘ ๋‚จ์ž๋ฅผ ๋จผ์ € ์ถœ๋ ฅํ•˜๊ณ  ์„ฑ๋ณ„์ด ๊ฐ™์œผ๋ฉด ๊ธ‰์—ฌ ๋‚ด๋ฆผ์ฐจ์ˆœ  : name, rrn, dept, sal 
SELECT name, rrn, dept, sal 
FROM emp 
WHERE dept ='๊ฐœ๋ฐœ๋ถ€'
ORDER BY MOD(SUBSTR(rrn, 8, 1),2) DESC, sal DESC;

SELECT name, rrn, dept, sal, MOD(SUBSTR(rrn, 8, 1),2) ์„ฑ๋ณ„
FROM emp 
WHERE dept ='๊ฐœ๋ฐœ๋ถ€'
ORDER BY ์„ฑ๋ณ„ DESC, sal DESC;
     

-- dept ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ  dept๊ฐ€ ๊ฐ™์œผ๋ฉด ๋‚จ์ž๋ฅผ ๋จผ์ € ์ถœ๋ ฅ: name, rrn, dept, sal 
SELECT name, rrn, dept, sal 
FROM emp 
ORDER BY dept DESC, MOD(SUBSTR(rrn, 8, 1),2) DESC;


-- dept๋Š” ์˜์—…๋ถ€๋ฅผ ๋จผ์ € ์ถœ๋ ฅ : name, dept
-- ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์—์„œ๋Š” NULL์ด ๋‚˜์ค‘์— ์ถœ๋ ฅ 
SELECT name, tel FROM emp;
SELECT name, tel FROM emp ORDER BY tel;

SELECT name, dept, CASE WHEN dept = '์˜์—…๋ถ€' THEN 0 END
FROM emp;

SELECT name, dept
FROM emp
ORDER BY CASE WHEN dept = '์˜์—…๋ถ€' THEN 0 END; -- ์˜ค๋ฆ„์ฐจ์ˆœ์—์„œ NULL์€ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์—

 

9. SQL ๋ฌธ์ œ

pos ๊ฐ€ ๋ถ€์žฅ, ๊ณผ์žฅ, ๋Œ€๋ฆฌ, ์‚ฌ์›์ˆœ์œผ๋กœ ์ถœ๋ ฅ : name, dept, pos

SELECT name, dept, pos
FROM emp
ORDER BY CASE
         WHEN pos = '๋ถ€์žฅ' THEN 1 
         WHEN pos = '๊ณผ์žฅ' THEN 2
         WHEN pos = '๋Œ€๋ฆฌ' THEN 3
         WHEN pos = '์‚ฌ์›' THEN 4        
         END;
SELECT name, dept, pos 
FROM emp
ORDER BY DECODE(pos, '๋ถ€์žฅ', 1, '๊ณผ์žฅ', 2, '๋Œ€๋ฆฌ', 3, '์‚ฌ์›', 4);


์—ฌ์ž๋ฅผ ๋จผ์ € ์ถœ๋ ฅํ•˜๊ณ  ์„ฑ๋ณ„์ด ๋™์ผํ•˜๋ฉด sal ๋‚ด๋ฆผ์ฐจ์ˆœ : name, rrn, sal

SELECT name, rrn, sal
FROM emp
ORDER BY MOD(SUBSTR(rrn, 8,1),2), sal DESC;


์„œ์šธ ์‚ฌ๋žŒ์ค‘์—์„œ ๊ธฐ๋ณธ๊ธ‰+์ˆ˜๋‹น ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ : name, city, sal+bonus

SELECT name, city, sal+bonus
FROM emp
WHERE city = '์„œ์šธ'
ORDER BY sal+bonus DESC;
SELECT name, city, sal+bonus pay
FROM emp
WHERE city = '์„œ์šธ'
ORDER BY sal+bonus DESC;

 

 

์—ฌ์ž์ค‘ ๋ถ€์„œ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ๋ถ€์„œ๊ฐ€ ๊ฐ™์œผ๋ฉด ๊ธฐ๋ณธ๊ธ‰ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ : name, rrn, dept, sal

SELECT name, rrn, dept, sal
FROM emp
WHERE MOD(SUBSTR(rrn, 8,1), 2) = 0
ORDER BY dept, sal DESC;


์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ NULL ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์ถœ๋ ฅ

SELECT name, tel FROM emp ORDER BY tel DESC;

 

์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ NULL ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜์ค‘์— ์ถœ๋ ฅ

SELECT name, tel FROM emp ORDER BY tel;

 

๋žœ๋คํ•˜๊ฒŒ 5๊ฐœ ์ถ”์ถœ(์ด๋ฒคํŠธ ๋‹น์ฒจ๋“ฑ)
SELECT empNo, name, DBMS_RANDOM.VALUE
FROM emp; 

SELECT empNo, name
FROM emp
ORDER BY DBMS_RANDOME.RANK;

SELECT * FROM emp (
SELECT empNo, name 
FROM emp
WHERE DBMS_RANDOME.RANK;
) WHERE ROWNUM <=5;


SELECT empNo, name (
FROM emp
ORDER BY DBMS_RANDOME.RANK
FETCH FIRST 5 ROWS ONLY; --12C์ด์ƒ์—์„œ๋งŒ ๊ฐ€๋Šฅ 

 


10. ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž(Set Operators)

- UNION  ํ•ฉ์ง‘ํ•ฉ ๊ต์ง‘ํ•ฉ์€ ํ•œ๋ฒˆ๋งŒ ์ถœ๋ ฅ

SELECT name, city, dept FROM emp WHERE dept = '๊ฐœ๋ฐœ๋ถ€'
	UNION
SELECT name, city, dept FROM emp WHERE city = '์ธ์ฒœ';


- UNION ALL  ํ•ฉ์ง‘ํ•ฉ ์ค‘๋ณต์ ์ธ ๋ฐ์ดํ„ฐ๋„ ์ถœ๋ ฅ

SELECT name, city, dept FROM emp WHERE dept = '๊ฐœ๋ฐœ๋ถ€'
	UNION ALL
SELECT name, city, dept FROM emp WHERE city = '์ธ์ฒœ';


 - MINUS  ์ฐจ์ง‘ํ•ฉ (์ฒซ ๋ฒˆ์งธ SQL๋ฌธ ๊ฒฐ๊ณผ์— ์žˆ๊ณ , ๋‘ ๋ฒˆ์žฌ SQL ๋ฌธ์˜ ๊ฒฐ๊ณผ์—๋Š” ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ

SELECT name, city, dept FROM emp WHERE dept = '๊ฐœ๋ฐœ๋ถ€'
	MINUS
SELECT name, city, dept FROM emp WHERE city = '์ธ์ฒœ';


 - INTERSECT ๊ต์ง‘ํ•ฉ ๋‘ ๋ฒˆ์งธ SQL๋ฌธ์˜ ๊ฒฐ๊ณผ์™€ ์ฒซ ๋ฒˆ์งธ SQL๋ฌธ์˜ ๊ฒฐ๊ณผ์— ์ค‘๋ณต๋œ ํ–‰๋งŒ ์ถœ๋ ฅ

SELECT name, city, dept FROM emp WHERE dept = '๊ฐœ๋ฐœ๋ถ€'
	INTERSECT
SELECT name, city, dept FROM emp WHERE city = '์ธ์ฒœ';


11. pseudo ์ปฌ๋Ÿผ(์˜์‚ฌ ์ปฌ๋Ÿผ)

์˜ค๋ผํด์—์„œ ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ

ํ…Œ์ด๋ธ” ์—ด์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ํ…Œ์ด๋ธ”์—๋Š” ์ €์žฅ X

 ROWID : ํ–‰์˜ ์ฃผ์†Œ 

SELECT ROWID, empNo, name FROM emp;


ROWNUM : ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜ค๋Š” ๊ฐ๊ฐ์˜ ํ–‰๋“ค์— ๋Œ€ํ•œ ์ˆœ์„œ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ์˜์‚ฌ ์ปฌ๋Ÿผ
ROWNUM์„ ์‚ฌ์šฉํ•˜์—ฌ ํ–‰์ˆ˜๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Œ

SELECT ROWNUM, empNo, name, dept, pos, sal FROM emp
WHERE ROWNUM <=10;


์–‘์˜ ์ •์ˆ˜๋ณด๋‹ค ํฐ ROWNUM ๊ฐ’์— ๋Œ€ํ•ด์„œ ํ•ญ์ƒ ๊ฑฐ์ง“ 

SELECT empNo, name, dept, pos, sal FROM emp
WHERE ROWNUM >1; -- ํ•œํ–‰๋„ ์ถœ๋ ฅX


- ORDER BY ์ ˆ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ROWNUM์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํ–‰ ์—‘์„ธ์Šค ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง  - ์‚ฌ์šฉ ๊ธˆ์ง€ 

SELECT empNo, name, dept, pos, sal FROM emp
ORDER BY sal DESC;
SELECT empNo, name, dept, pos, sal FROM emp
WHERE ROWNUM <=10 
ORDER BY sal DESC; --์˜๋„์™€ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค


- ORDER BY ์ ˆ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ROWNUM์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค 

SELECT * FROM (
SELECT empNo, name, dept, pos, sal FROM emp
ORDER BY sal DESC
) WHERE ROWNUM <=10;


- sal ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ด์„œ 6๋ฒˆ์งธ 10๋ฒˆ์งธ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ 

SELECT * FROM (
	SELECT empNo, name, dept, pos, sal 
    	FROM emp
	ORDER BY sal DESC
)WHERE ROWNUM >= 6 AND ROWNUM <=10; -- ์˜ค๋ฅ˜. ํฌ๋‹ค๋Š” ๋น„๊ต ๋ถˆ๊ฐ€๋Šฅ

 

SELECT * FROM (
	SELECT ROWNUM rnum, tb.* FROM (
    	SELECT empNo, name, dept, pos, sal
        FROM emp
     	ORDER BY sal DESC
	) tb WHERE ROWNUM <= 10
) WHERE rnum >= 6;







'๐Ÿ’ปProgramming > ๐Ÿ’ฝOracle' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Oracle] ๋ฐ์ดํ„ฐ ๋”•์…”๋„ˆ๋ฆฌ(Data Dictionary)  (0) 2022.08.10
[ORACLE] ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ธ์–ด(DML)  (0) 2022.08.09
[ORACLE] ๋ฐ์ดํ„ฐ ์ •์˜์–ธ์–ด (DDL)  (0) 2022.08.09
[ORACLE] SQL ํ•จ์ˆ˜ - ๋‹จ์ผํ–‰ ํ•จ์ˆ˜  (0) 2022.08.05
[Oracle] DQL - Select  (0) 2022.08.04
    '๐Ÿ’ปProgramming/๐Ÿ’ฝOracle' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ORACLE] ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ธ์–ด(DML)
    • [ORACLE] ๋ฐ์ดํ„ฐ ์ •์˜์–ธ์–ด (DDL)
    • [ORACLE] SQL ํ•จ์ˆ˜ - ๋‹จ์ผํ–‰ ํ•จ์ˆ˜
    • [Oracle] DQL - Select
    yeony._.
    yeony._.
    ํž˜ ์„ธ์ง€๋Š” ์•Œ์•ฝ๐Ÿ’Š๐Ÿ’Š๐Ÿ’Š

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”