SELECT๋ฌธ
ํ ์ด๋ธ์ด๋ ๋ทฐ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ์ฌ 0๊ฐ ์ด์์ ํ์ ๋ฐํํ๋ค.
SELECT๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ DQL(data query language) ๋ช ๋ น์ด๋ฉฐ, DML(data manipulation language)์ ๊ตฌ์ฑ ์์๋ก ๊ฐ์ฃผ๋๊ธฐ๋ ํ๋ค.
SELECT๋ฌธ์ ๋ฐ๋์ SELECT์ FROM์ ๋ ๊ฐ์ ํค์๋๋ก ๊ตฌ์ฑ๋๋ค.
SELECT์ ๋ค์์๋ ์ถ๋ ฅํ ์ปฌ๋ผ๋ช ์ด๋ ํํ์์ ๊ธฐ์ ํ๊ฑฐ๋ ํน์ ์ปฌ๋ผ๋ช ๋์ '*' ๊ธฐ์ ํ์ฌ ํ ์ด๋ธ(๋ทฐ) ๋ด์ ๋ชจ๋ ์ปฌ๋ผ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ ์ ์๋ค.
FROM์ ๋ค์์๋ ์กฐํํ ํ ์ด๋ธ(๋ทฐ)์ ์ด๋ฆ์ ๊ธฐ์ ํ๋ค.
SELECT๋ฌธ ํ์
- ํ ์ด๋ธ ๋ชฉ๋กํ์ธ : SELECT * FROM tab;
- ํ ์ด๋ธ์ ์ปฌ๋ผ ๋ชฉ๋ก ํ์ธ : SELECT * FROM col WHERE tname = 'EMP' / DESC emp;
- ํน์ ํ ์ด๋ธ๋ง ํ์ธ : SELECT empNO,name,sal FROM emp;
- ์กด์ฌ ํ์ง ์๋ ์ปฌ๋ผ ํ์ธ : SELECT no, name, sal FROM emp;
- ๋ชจ๋ ์ปฌ๋ผ ์ถ๋ ฅ : SELECT * FROM emp;
- ์ปฌ๋ผ๋ช ์ ๋ณ๊ฒฝ ํ์ฌ ์ถ๋ ฅ : SELECT empNO AS ์ฌ๋ฒ, name AS ์ด๋ฆ, sal AS ๊ธ์ฌ FROM emp; / SELECT empNO ์ฌ๋ฒ, name ์ด๋ฆ, sal ๊ธ์ฌ FROM emp; -- AS ์๋ต ๊ฐ๋ฅ
SELECT๋ฌธ ๊ตฌํ ์์ ๋ฐ ์คํ ์์
- FROM ์ ์์ ํ ์ด๋ธ์ ๋ชฉ๋ก์ ๊ฐ์ ธ์จ๋ค.
- WHERE ์ ์์ ๊ฒ์ ์กฐ๊ฑด์ ๋ถ์ผ์น ํ๋ ํ์ ์ ์ธํ๋ค.
- ROWNUM์ ์ฌ์ฉํ ๊ฒฝ์ฐ ROWNUM์ ํ ๋นํ๋ค.
- GROUP BY ์ ์์ ๋ช ์๋ ํ์ ๊ฐ์ ๊ทธ๋ฃนํํ๋ค.
- HAVING ์ ์์ GROUP BY์ ์ ๊ฒฐ๊ณผ ํ ์ค ๊ฒ์ ์กฐ๊ฑด์ ๋ถ์ผ์น ํ๋ ํ์ ์ ์ธํ๋ค.
- SELECT ์ ์์ ๋ช ์๋ ์ปฌ๋ผ(ํํ์)์ ์ฒ๋ฆฌํ๋ค.
- ORDER BY ์ ์์ ์ปฌ๋ผ(ํํ์)์ ๊ธฐ์ค์ผ๋ก ์ถ๋ ฅํ ๋์์ ์ ๋ ฌ ํ ์ถ๋ ฅํ๋ค.
WHERE ์กฐ๊ฑด
์ ํํ ํ์ ํ๋ ์ด์์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ์ผ๋ก ์ ํํ๋ค. WHERE์ ์ ์๋ตํ๋ฉด, FROM์ ์ ํ ์ด๋ธ ๋๋ ๋ทฐ์์ ๋ชจ๋ ํ์ ๋ฆฌํด ํ๋ค.
์กฐ๊ฑด์(Condition) : ์กฐ๊ฑด ๋๋ ์กฐ๊ฑด์์ ํ ๊ฐ ์ด์์ ํํ์๊ณผ ๋ ผ๋ฆฌ ์ฐ์ฐ์๊ฐ ๊ฒฐํฉ๋ ์์ผ๋ก TRUE, FALSE, UNKNOWN์ธ ๊ฐ์ง ํ์ ์ ๋ฐํํ๋ค.
SELECT ์ปฌ๋ผ๋ช
, ์ปฌ๋ผ๋ช
FROM ํ
์ด๋ธ๋ช
WHERE ์กฐ๊ฑด;
๋น๊ต ๋ฐ ๋ ผ๋ฆฌ์ฐ์ฐ์
ANY(SOME), ALL
- ANY(SOME)
- ๊ฐ์ ๋ชฉ๋ก์ ๊ฐ ๊ฐ๊ณผ ๋น๊ตํ๊ฑฐ๋ ์ฟผ๋ฆฌ์์ ๋ฐํํ๋ค.(OR ๊ฐ๋ ๊ณผ ์ ์ฌ)
- =,!=,>,<,<=,>= ์์ ๊ธฐ์ ํ๋ฉฐ, ํ๋ ์ด์์ ๊ฐ์ ๋ฆฌํดํ๋ ํํ์ ๋๋ ์๋ธ ์ฟผ๋ฆฌ๊ฐ ์ฌ ์ ์๋ค.
- ALL
- ๊ฐ์ ๋ชฉ๋ก์ ๋ชจ๋ ๊ฐ๊ณผ ๋น๊ตํ๊ฑฐ๋ ์ฟผ๋ฆฌ์์ ๋ฐํํ๋ค.(AND ๊ฐ๋ ๊ณผ ์ ์ฌ)
- =,!=,>,<,<=,>= ์์ ๊ธฐ์ ํ๋ฉฐ, ํ๋ ์ด์์ ๊ฐ์ ๋ฆฌํดํ๋ ํํ์ ๋๋ ์๋ธ ์ฟผ๋ฆฌ๊ฐ ์ฌ ์ ์๋ค.
emp ํ ์ด๋ธ : city๊ฐ '์์ธ', '๊ฒฝ๊ธฐ', '์ธ์ฒ' ์ธ ์๋ฃ ์ค empNo, name, city ์ปฌ๋ผ ์ถ๋ ฅ
SELECT empNO,name,city
FROM emp
WHERE city= ANY('์์ธ','๊ฒฝ๊ธฐ','์ธ์ฒ');
emp ํ ์ด๋ธ : sal๊ฐ 2000000์ ์ด์์ธ ์๋ฃ ์ค empNo, name, sal ์ปฌ๋ผ ์ถ๋ ฅ
SELECT empNO,name,city
FROM emp
WHERE sal >= 2000000;
SQL ์ฐ์ฐ์
- BETWEEN ์กฐ๊ฑด์
- BETWEEN ์กฐ๊ฑด์ ํ ์์ ๊ฐ์ด ๋ค๋ฅธ ๋ ์์ผ๋ก ์ ์ ๋ ๊ฐ๊ฒฉ์ ์๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ค.
- ์ธ๊ฐ์ง ํํ์์ ๋ชจ๋ ์ซ์, ๋ฌธ์ ๋๋ ๋ ์ง / ์๊ฐ ํํ์์ด์ด์ผ ํ๋ค.
- ํํ์์ด ๋ชจ๋ ๋์ผํ ๋ฐ์ดํฐ ์ ํ์ด ์๋ ๊ฒฝ์ฐ ์์์ ์ผ๋ก ํํ์์ ๊ณตํต ๋ฐ์ดํฐ ์ ํ์ผ๋ก ๋ณํํ๋ค. ๊ทธ๋ ๊ฒ ํ ์ ์์ผ๋ฉด ์ค๋ฅ๋ฅผ ๋ฐํํ๋ค.
emp ํ ์ด๋ธ : sal๊ฐ 2000000~3000000 ์ฌ์ด ์ธ ์๋ฃ ์ค name, sal ์ปฌ๋ผ ์ถ๋ ฅ
SELECT name,sal
FROM emp
WHERE sal BETWEEN 2000000 AND 3000000;
emp ํ ์ด๋ธ : hireDate๊ฐ 2022๋ ๋์ธ ์๋ฃ์ค name, hireDate ์ปฌ๋ผ ์ถ๋ ฅ
SElECT name,hireDate
FROM emp
WHERE hireDate BETWEEN '2022-01-01' AND '2022-12-31'
- IN ์กฐ๊ฑด์
- list์ ์๋ ๊ฐ ์ค ํ๋๋ผ๋ ์ผ์นํ๋ฉด TRUE๋ค.
emp ํ ์ด๋ธ : city๊ฐ '์์ธ', '์ธ์ฒ', '๊ฒฝ๊ธฐ' ์ธ ์๋ฃ ์ค name, city ์ปฌ๋ผ ์ถ๋ ฅ
SELECT empNO,city
FROM emp
WHERE city in('์์ธ', '๊ฒฝ๊ธฐ', '์ธ์ฒ');
emp ํ ์ด๋ธ : city์ pos๊ฐ '์์ธ ์ด๋ฉด์ '๋ถ์ฅ'์ด๊ฑฐ๋ '๊ฒฝ๊ธฐ' ์ด๋ฉด์ '๊ณผ์ฅ' ์ธ ์๋ฃ ์ค name, city, pos ์ปฌ๋ผ ์ถ๋ ฅ
SELECT empNO,city,pos
FROM emp
WHERE (city,pos)IN(('์์ธ','๋ถ์ฅ'),('๊ฒฝ๊ธฐ','๊ณผ์ฅ'));
- LIKE ์กฐ๊ฑด์
- LIKE ์กฐ๊ฑด์ ํจํด ์ผ์น์ ๊ด๋ จ๋ ์กฐ๊ฑด์ ์ง์ ํ๋ค.
- ํจํด ๋ฌธ์
- _ : ๋ฐ์ค(_)์ ๊ฐ์์ ์ ํํ ํ๋์ ๋ฌธ์
- % : ํผ์ผํธ ๋ถํธ(%)๋ ๊ฐ์์ 0 ๊ฐ ์ด์์ ๋ฌธ์. null๊ณผ๋ ์ผ์น ํ ์ ์๋ค.
- ๋ฌธ์์ด ์ฒ๋ฆฌ์ ์ค๋ผํด ๋ด๋ถ ์๊ณ ๋ฆฌ์ฆ์ LIKE์กฐ๊ฑด์ ๋ณด๋ค๋ INSTRํจ์๊ฐ ๋ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋๋ค
emp ํ ์ด๋ธ : LIKE ์
SELECT empNO, name
FROM emp
WHERE tel Like '%3%'; -- 3์ด ์กด์ฌํ๋ ์ ํ๋ฒํธ
SELECT empNO, name
FROM emp
WHERE name LIKE '%3'; -- 3์ผ๋ก ๋๋๋ ์ ํ๋ฒํธ
SELECT empNO, name, rrn
FROM emp
WHERE rrn LIKE '_0%'; -- ์๋ ์์์ ์ฐ๋๊ฐ 10์ ๋ฐฐ์
NULL
ํ์ ์ด์ ๊ฐ์ด ์์ผ๋ฉด ์ด์ null์ด๊ฑฐ๋ null์ ํฌํจํ๋ค๊ณ ํ๋ค
NOT NULL ๋๋ PRIMARY KEY ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด์ ์ํด ์ ํ๋์ง ์๋ ๋ชจ๋ ๋ฐ์ดํฐ ์ ํ์ ์ด์๋ ๋์ด ๋ํ๋ ์ ์๋ค.
์ค์ ๊ฐ์ ์ ์ ์๊ฑฐ๋ ๊ฐ์ด ์๋ฏธ๊ฐ ์๋ ๊ฒฝ์ฐ ๋์ ์ฌ์ฉํ๋ค. ๊ธธ์ด๊ฐ 0์ธ ๋ฌธ์ ๊ฐ์ ๋๋ก ์ฒ๋ฆฌํ๋ค. 0์ด ์๋ ์ซ์ ๊ฐ์ ๋ํ๋ด๋๋ฉด null์ ์ฌ์ฉํ์ง ์๋๋ค
SELECT 10+NULL FROM dual; -- NULL
emp ํ ์ด๋ธ : tel์ด NULL ์ธ ์๋ฃ ์ค name, tel ์ปฌ๋ผ ์ถ๋ ฅ
SELECT name,tel
FROM emp
WHERE tel is NULL;
CASEํํ์
IF ~ THEN ~ELSE ๋ ผ๋ฆฌ์ ์ ์ฌํ ๋ฐฉ์์ผ๋ก ํํ์์ ์์ฑํด์ SQL์ ๋น๊ต ์ฐ์ฐ ๊ธฐ๋ฅ์ ๋ณด์ํ๋ ์ญํ ์ ํ๋ค.
- Simple Case Expression (๊ฐ๋จํ CASE ํํ์)
ํ์1 : ๊ฐ๋จํ CASE ํํ์
SELECT name,rrn, CASE SUBSTR(rrn,8,1)
WHEN '1' THEN '๋จ์'
WHEN '2' THEN '์ฌ์'
WHEN '3' THEN '๋จ์'
WHEN '4' THEN '์ฌ์'
END "์ฑ๋ณ"
FROM emp;
SELECT name,rrn, CASE MOD(SUBSTR(rrn,8,1),2)
WHEN 0 THEN '์ฌ์'
WHEN 1 THEN '๋จ์'
END "์ฑ๋ณ"
FROM emp;
- Searched Case Expression
emp : name,sal+bonus, ์ธ๊ธ(sal+bonus >= 300๋ง์ด๋ฉด 3%, sal+bonus>=200๋ง 2%, ๋๋จธ์ง 0)
SELECT name,sal+bonus ์ด๊ธ์ฌ,
CASE
WHEN sal+bonus >= 3000000 THEN (sal+bonus) * 0.03
WHEN sal+bonus >= 2000000 THEN (sal+bonus) * 0.02
ELSE 0
END AS ์ธ๊ธ
FROM emp;
SELECT name,sal+bonus ์ด๊ธ์ฌ,
CASE
WHEN sal+bonus >= 3000000 THEN 0.03
WHEN sal+bonus >= 2000000 THEN 0.02
ELSE 0 END *(sal+bonus) AS ์ธ๊ธ
FROM emp;
DECODE ํจ์
๊ฐ์ ๊ฐ ๊ฒ์๊ณผ ๋น๊ตํ์ฌ ๊ฐ์ผ๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ
DECODE (a,'b',1,2) -- a๊ฐ 'b'์ด๋ฉด 1์ ๋ฐํํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด 2๋ฅผ ๋ฐํ
DECODE (a,'b',1) -- a๊ฐ 'b'์ด๋ฉด 1์ ๋ฐํํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด NULL์ ๋ฐํ
DECODE (a,'b',1,'c',2,3) -- a๊ฐ 'b'์ด๋ฉด 1์ ๋ฐํํ๊ณ , a๊ฐ 'c'์ด๋ฉด 2๋ฅผ ๋ฐํํ๋ฉฐ ๊ทธ๋ ์ง ์์ผ๋ฉด 3์ ๋ฐํ
SELECT name,rrn,
DECODE(MOD(SUBSTR(rrn,8,1),2),1,'๋จ์','์ฌ์')์ฑ๋ณ
FROM emp; -- ์ฃผ๋ฏผ๋ฒํธ 8๋ฒ์งธ๊ฐ ํ์๋ฉด ๋จ์, ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ์ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ
ALL ๊ณผ DISTNCT
ALL ์ต์
์ ํ๋ ๋ชจ๋ ํ์ ๋ฐํํ๋ ์ต์ ์ผ๋ก ๊ธฐ๋ณธ ๊ฐ์ ALL.
SELECT All dept FROM emp;
SELECT dept FROM emp;
DISTINCT , UNIQUE ์ต์
์ ํ๋ ํ ์ค์์ ์ค๋ณต์ ์ธ ํ์ ํ๋๋ง ๋ฐํํ๊ธฐ ์ํด DISTINCT๋ฅผ ์ฌ์ฉํ๋ค. ์ค๋ณต ํ์ SELECT ๋ชฉ๋ก์ ๊ฐ ํํ์์ ๋ํด ์ผ์นํ๋ ๊ฐ์ ๊ฐ๋ ํ์ด๋ค. DISTINCT๋ UNIQUE์ ๋์ผํ๋ฏ๋ก ์ด๋ ๊ฒ์ ์ฌ์ฉํด๋ ์๊ด ์๋ค.
SELECT DISTINCT dept FROM emp; -- ํ์ค
SELECT UNIQUE dept FROM emp;
ORDER BY์
SQL ๋ฌธ์ฅ์ผ๋ก ์กฐํ๋ ๋ฐ์ดํฐ๋ค์ ๋ค์ํ ๋ชฉ์ ์ ๋ง๊ฒ ํน์ ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋๋ฐ ์ฌ์ฉํ๋ค. ORDER BY์ ์ ์ปฌ๋ผ(column)๋ช ๋์ ์ SELECT ์ ์์ ์ฌ์ฉํ ALIAS๋ช ์ด๋ ์ปฌ๋ผ ์์๋ฅผ ๋ํ๋ด๋ ์ ์๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
SELECT name,dept,sal
FROM emp
ORDER BY sal asc; -- sal ์ค๋ฆ์ฐจ์ ์๋ต๊ฐ๋ฅ
SELECT name,dept,sal
FROM emp
ORDER BY sal DESC; --sal ๋ด๋ฆผ์ฐจ์
์งํฉ ์ฐ์ฐ์
๋ ๊ฐ์ ๊ตฌ์ฑ ์์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋จ์ผ ๊ฒฐ๊ณผ๋ก ๊ฒฐํฉํ๋ค. ์งํฉ ์ฐ์ฐ์๋ฅผ ํฌํจํ๋ ์ฟผ๋ฆฌ๋ฅผ ๋ณตํฉ ์ฟผ๋ฆฌ๋ผ๊ณ ํ๋ค.
UNIONS(ํฉ์งํฉ)
์ฒซ ๋ฒ์งธ SQL๋ฌธ์ ๊ฒฐ๊ณผ์ ๋ ๋ฒ์งธ SQL๋ฌธ์ ๊ฒฐ๊ณผ ์ค ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๋ค.
SELECT name, dept, pos, city FROM emp WHERE city = '์์ธ'
UNION
SELECT name, dept, pos, city FROM emp WHERE city = '๊ฐ๋ฐ๋ถ';
UNION ALL
์ฒซ ๋ฒ์จฐ SQL๋ฌธ์ ๊ฒฐ๊ณผ์ ๋ ๋ฒ์งธ SQL๋ฌธ์ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋ ์ถ๋ ฅํ๋ค.
SELECT name, dept, pos, city FROM emp WHERE city = '์์ธ'
UNION ALL
SELECT name, dept, pos, city FROM emp WHERE dept = '๊ฐ๋ฐ๋ถ';
MINUS (์ฐจ์งํฉ)
์ฒซ ๋ฒ์งธ SQL๋ฌธ ๊ฒฐ๊ณผ์๋ ์๊ณ , ๋ ๋ฒ์งธ SQL๋ฌธ์ ๊ฒฐ๊ณผ์๋ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ค.
SELECT name, dept, pos, city FROM emp WHERE city = '์์ธ'
MINUS
SELECT name, dept, pos, city FROM emp WHERE dept = '๊ฐ๋ฐ๋ถ';
INTERSECT(๊ต์งํฉ)
์ธํฐ์นํธ๋ ๋๋ฒ์งธ SQL๋ฌธ์ ๊ฒฐ๊ณผ์ ์ฒซ๋ฒ์งธ SQL๋ฌธ์ ๊ฒฐ๊ณผ์ ์ค๋ณต๋ ํ๋ง ์ถ๋ ฅํ๋ค.
SELECT name, dept, pos, city FROM emp WHERE city = '์์ธ'
INTERSECT
SELECT name, dept, pos, city FROM emp WHERE dept = '๊ฐ๋ฐ๋ถ';
pseudo ์ปฌ๋ผ
์ค๋ผํด์์ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ปฌ๋ผ์ ์๋์ฐ ์ปฌ๋ผ์ด๋ผ๊ณ ํ๋ฉฐ, ROWID, UROWID,ROWNUM๋ฑ์ด ์๋ค. ํ ์ด๋ธ ์ด์ฒ๋ผ ๋์ํ์ง๋ง ์ค์ ๋ก ํ ์ด๋ธ์๋ ์ ์ฅ๋์ง ์๋๋ค. pseudo ์ปฌ๋ผ์ค์์ ์ ํํ ์ ์์ง๋ง, ์ฝ์ ,์์ ,์ญ์ ํ ์ ์๋ค. pseudo์ปฌ๋ผ์ ์ธ์๊ฐ ์๋ ํจ์์ ๋น์ทํ๋ค. ์ธ์๊ฐ ์๋ ํจ์๋ ์ผ๋ฐ์ ์ผ๋ก ๊ฒฐ๊ณผ ์งํฉ์ ๋ชจ๋ ํ์ ๋์ผํ ๊ฐ์ ๋ฐํํ์ง๋ง pseudo ์ปฌ๋ผ์ ๊ฐ ํ์ ๋ํด ๋ค๋ฅธ ๊ฐ์ ๋ฐํํ๋ค.
ROWID
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ ํ์ ๋ํด ROWID๋ ํ์ ์ฃผ์๋ฅผ ๋ฐํํ๋ค. ROWID ๊ฐ์๋ ํ์ ์ฐพ๋๋ฐ ํ์ํ ์ ๋ณด๊ฐ ํฌํจ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ROWID ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ์ ๊ณ ์ ํ๊ฒ ์๋ณํ๋ค. ๊ทธ๋ฌ๋ ๋์ผํ ํด๋ฌ์คํฐ์ ํจ๊ป ์ ์ฅ๋ ๋ค๋ฅธ ํ ์ด๋ธ์ ํ์ ๋์ผํ ROWID๋ฅผ ๊ฐ์ง์ ์๋ค. ROWID์ ์ด์ฉํ์ฌ ํ์๋ฅผ ์ ํ ํ ์ ์๋ค.
SELECT ROWID, name,dept FROM emp;
ROWNUM
์ฟผ๋ฆฌ์์ ๋ฐํ ๋ ๊ฐ ํ์ ๋ํด ROWNUM์ ํ ์ด๋ธ ๋๋ ์กฐ์ธ๋ ํ ์งํฉ์์ ํ์ ์ ํํ๋ ์์๋ฅผ ๋ํ๋ด๋ ์ซ์๋ฅผ ๋ฐํํ๋ค. ์ฆ, ์ ํ๋ ์ฒซ ๋ฒ์งธ ํ์ ROWNUM ์ 1์ด๊ณ ๋๋ฒ์งธ ํ์ 2์ด๋ค.
SELECT * FROM emp WHERE ROWNUM <11; -- ์์๋ณด๋ค ํฐ ROWNUM ๊ฐ์ ๋ํ ์กฐ๊ฑด ํ ์คํธ๋ ํญ์ ๊ฑฐ์ง SELECT * FROM emp WHERE ROWNUM >1; -- ๊ฑฐ์ง, ์๋ฌด๊ฒ๋ ์ถ๋ ฅ์๋จ 1๋ณด๋ค ํฐ์์ ROWNUM์ ๋ํ ๋๋ฑ ๋น๊ต๋ ํญ์ ๊ฑฐ์ง
SELECT * FROM emp WHERE ROWNUM =10; -- ๊ฑฐ์ง, ์๋ฌด๊ฒ๋ ์ถ๋ ฅ์๋จ 1๊ณผ ROWNUM์ ๋ํ ๋๋ฑ ๋น๊ต๋ ๊ฐ๋ฅ
SELECT * FROM emp WHERE ROWNUM =1; -- ๊ฑฐ์ง, ์๋ฌด๊ฒ๋ ์ถ๋ ฅ์๋จ ORDER BY์ด ์๋ ๊ฒฝ์ฐ ROWNUM๊ณผ ๋น๊ตํด์๋ ์๋๋ค
SUB QUERY ์ฌ์ฉ
SELECT * FROM( -- sal ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ์ฌ ์์์ 10๊ฐ๋ง ์ถ๋ ฅ
SELECT * FROM emp
ORDER By sal
) WHERE ROWNUM <11;
ํ์ด์ง ์ฒ๋ฆฌ์์ ์์ฃผ ์ฌ์ฉ
SELECT * FROM(
SELECT ROWNUM rnum,tb.*FROM(
SELECT empNO, name, dept, sal
FROM emp
ORDER BY sal DESC
) tb WHERE ROWNUM <= 30
)WHERE rnum >=21;
'๐ป > ORACLE' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ORACLE] 5์ผ์ฐจ : SQLํจ์(์ง๊ณ ํจ์) - 2 (0) | 2024.03.15 |
---|---|
[ORACLE] 4์ผ์ฐจ : SQLํจ์(์ง๊ณ ํจ์) (1) | 2024.03.14 |
[ORACLE] 4์ผ์ฐจ : SQLํจ์ (๋จ์ผํ ํจ์) - 2 (0) | 2024.03.14 |
[ORACLE] 3์ผ์ฐจ : SQLํจ์ (๋จ์ผํ ํจ์) (0) | 2024.03.14 |
[ORACLE] 1์ผ์ฐจ : ๋ฐ์ดํฐ๋ฒ ์ด์ค(Database) (0) | 2024.03.11 |