โ๏ธOracle Database Express Edition (XE) Release 11.2.0.2.0 (11gR2)
โ๏ธScott ๊ณ์ ์ ํ์ฌ๋์ด ์๋ ๊ธฐ๋ณธ ํ ์ด๋ธ์ ์ด์ฉํ์ฌ ์ค์ต(EMP, DEPT, BONUS, SALGRADE)
โ ๏ธ CRUD(Create, Read, Update, Delete) ์ค Read์ ์ํ๋ DQL(SELECT๋ฌธ)
๐ก SELECT (DQL)
- SQL๋ฌธ ์ค ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ฉฐ ํ ์ด๋ธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ธฐ ์ํ ๋ช ๋ น์ด
- SELECT๋ฌธ์๋ ๋ฐ๋์ FROM ํค์๋๊ฐ ์์ผ ํจ.
SELECT * FROM ์กฐํํ ํ
์ด๋ธ;
SELECT ์กฐํํ ์ด, ์กฐํํ ์ด ... FROM ์กฐํํ ํ
์ด๋ธ;
๐ธ ์ฌ์ ๋ฒํธ, ๋ถ์ ๋ฒํธ๋ง ๋์ค๋๋ก ์ฟผ๋ฆฌ๋ฌธ ์์ฑ
SELECT EMPNO, DEPTNO FROM EMP;
๐ธ ๋ณ์นญ(ALIAS) ์ฌ์ฉํ๊ธฐ
SELECT EMPNO "๋ฒ ํธ", ENAME "์ด ๋ฆ" FROM EMP;
SELECT EMPNO ๋ฒํธ, ENAME ์ด๋ฆ FROM EMP;
SELECT EMPNO AS ๋ฒํธ, ENAME AS ์ด๋ฆ FROM EMP;
๐ธ ์ด ์ถ๊ฐํ๊ธฐ
SELECT ENAME, SAL, SAL*12+COMM, COMM FROM EMP;
SELECT ENAME, SAL, SAL*12+COMM AS ์ฐ๋ด, COMM FROM EMP;
์ค๋ณต ์ ๊ฑฐ(DISTINCT)
- ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ๊ฐ์ด ์ค๋ณต๋๋ ํ์ด ์ฌ๋ฌ๊ฐ ์กฐํ๋๋๋ฐ, ๊ฐ์ด ์ค๋ณต๋ ํ์ ํ ๊ฐ์ฉ๋ง ์ ํํ๊ณ ์ ํ ๋ ์ฌ์ฉ
SELECT DISTINCT DEPTNO FROM EMP;
SELECT DISTINCT JOB, DEPTNO FROM EMP;
์ปฌ๋ผ๊ฐ ๊ณ์ฐํ๋ ์ฐ์ ์ฐ์ฐ์(+, -, *, /)
- ์๋ฃํ์ด ์ซ์์ธ ์ปฌ๋ผ๊ฐ๋ค์ ๊ณ์ฐํ ๊ฐ ์กฐํ
SELECT ENAME, SAL, SAL * 12 AS "์ฐ๋ด" FROM EMP;
WHERE ๊ตฌ๋ฌธ
- ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ฌ์ฉ์๊ฐ ์ํ๋ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ง ์กฐํ
SQL์์ ๊ฐ์์ง ๋น๊ตํ๋ ์ฐ์ฐ์๋ '=' ์ ๋๋ค.
์ฐ์ต๋ฌธ์
๐ธ WHERE ๊ตฌ๋ฌธ์ ์ฌ์ฉํด ์ฌ์ ๋ฒํธ๊ฐ 7500 ๋ณด๋ค ํฐ ์ฌ๋๋ง ๊ณจ๋ผ์ ์ฌ์๋ฒํธ, ์ฌ์์ด๋ฆ, ์ ์ฌ์ผ, ๋ถ์๋ฒํธ ์ถ๋ ฅ
SELECT EMPNO, ENAME, HIREDATE, DEPTNO FROM EMP WHERE EMPNO > 7500;
๐ธ ๊ธ์ฌ๊ฐ 2500 ์ด์์ ์ฌ์ ๋ฒํธ, ์ด๋ฆ, ์ง๋ฌด, ๊ธ์ฌ ์ถ๋ ฅ
SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE SAL >= 2500;
๐ธ ์ ์ฌ์ผ์ด 81๋ 1์ 1์ผ ์ดํ์ธ ์ฌ๋์ ๋ชจ๋ ์ถ๋ ฅ
๋ ์ง๋ฅผ ๋น๊ตํ๊ฑฐ๋ ๋ฌธ์์ด์ ๋น๊ตํ ๋๋ ' '(์์๋ฐ์ดํ)๋ก ๊ฐ์ธ์ฃผ์ด์ผ ํฉ๋๋ค.
SELECT * FROM EMP WHERE HIREDATE >= '81/01/01';
๐ธ ์ง์ ์ด SALESMAN์ธ ์ฌ๋๋ง ์ถ๋ ฅ
SELECT * FROM EMP WHERE JOB = 'SALESMAN';
๋ ผ๋ฆฌ์ฐ์ฐ์(AND, OR, NOT)
์ฐ์ต๋ฌธ์
๐ธ ๊ธ์ฌ๊ฐ 2500๊ณผ ๊ฐ๊ฑฐ๋ ํฌ๊ณ , ๋ถ์๊ฐ 20๋ฒ์ธ ์ฌ๋ ์ถ๋ ฅ
SELECT * FROM EMP WHERE SAL >= 2500 AND DEPTNO = 20;
๐ธ ๊ธ์ฌ๊ฐ 2500 ์ด์์ด๊ฑฐ๋ ๋ถ์๊ฐ 20๋ฒ์ธ ์ฌ๋ ์ถ๋ ฅ
SELECT * FROM EMP WHERE SAL >= 2500 OR DEPTNO = 20;
๐ธ ๊ธ์ฌ๊ฐ 2500 ์ด์์ด๊ณ , ๋ถ์๊ฐ 20๋ฒ์ด๊ณ , ์ ์ฌ์ผ์ด 82๋ 1์ 1์ผ ์ด์ ์ ์ฌ์ ์ถ๋ ฅ
SELECT * FROM EMP WHERE SAL >= 2500 AND DEPTNO = 20 AND HIREDATE < '82/01/01';
๐ธ ๊ธ์ฌ๊ฐ 2500 ์ด์์ด๊ณ ์ง์ ์ด MANAGER์ธ ์ฌ์์ ์ฌ์๋ฒํธ, ์ด๋ฆ, ์ง์ , ๊ธ์ฌ, ๋ถ์๋ฒํธ ์ถ๋ ฅ
SELECT EMPNO, ENAME, JOB, SAL, DEPTNO
FROM EMP
WHERE SAL >= 2500 AND JOB = 'MANAGER';
๋ถ์ ์ฐ์ฐ์
- != , NOT, <>, !=
4๊ฐ์ง ๋ค ์ธ ํ์๋ ์๊ณ ์ด ์ค ํธํ ๋ฐฉ๋ฒ์ผ๋ก ์ฐ๋ฉด ๋จ.
์ฐธ๊ณ ๋ก ์ ๋ ์ง์ ์ JAVA๋ฅผ ๋ฐฐ์ด์ง๋ผ.. != ์ด ๋ฐฉ๋ฒ์ผ๋ก ์ฐ๋ ค๊ณ ํฉ๋๋ค.
๐ธ ๊ธ์ฌ๊ฐ 2500 ์ด์์ด๊ณ , ์ง์ฑ ์ด SALESMAN์ด ์๋ ์ฌ๋ ์ถ๋ ฅ
SELECT * FROM EMP WHERE SAL >= 2500 AND JOB != 'SALESMAN';
IN ์ฐ์ฐ์
- ํน์ ์ด์ ํฌํจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ๊ฐ ์กฐํ
๐ ์ด์ ์ ํ๋ ๋ฐฉ์
SELECT *
FROM EMP
WHERE JOB = 'MANAGER'
OR JOB = 'SALESMAN'
OR JOB = 'CLERK';
๐ IN ์ ๋ก ๋ณ๊ฒฝ
SELECT *
FROM EMP
WHERE JOB IN('MANAGER','SALESMAN','CLERK');
๐ธ IN ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ์๋ฒํธ๊ฐ 10,20๋ฒ ์ฌ์์ ์ฌ์๋ฒํธ, ์ด๋ฆ, ์ ์ฌ์ผ, ๊ธ์ฌ ์ถ๋ ฅ
SELECT EMPNO, ENAME, HIREDATE, SAL FROM EMP WHERE DEPTNO IN(10,20);
BETWEEN ์ฐ์ฐ์
- ์ผ์ ํ ๋ฒ์ ์กฐํ
BETWEEN A AND B
- A ์ด์ B ์ดํ
๐ธ ๊ธ์ฌ๊ฐ 2000์์ 3000 ์ฌ์ด์ ์๋ ์ฌ์ ํ์
SELECT *
FROM EMP
WHERE SAL BETWEEN 2000 AND 3000;
๐ธ BETWEEN ์ ์ ์ฌ์ฉํด์ ๊ธ์ฌ๊ฐ 1000์์ 2500 ์ฌ์ด์ด๊ณ ๋ถ์๊ฐ 10๊ณผ 30์ธ ์ฌ์ ์ถ๋ ฅ
SELECT * FROM EMP WHERE SAL BETWEEN 1000 AND 2500 AND DEPTNO IN(10,30);
๐ธ BETWEEN ์ ์ ์ฌ์ฉํด์ ๊ธ์ฌ๊ฐ 1000์์ 2500 ์ฌ์ด์ด๊ณ , ๋ถ์๊ฐ 10,20์ด ์๋ ์ฌ์ ์ถ๋ ฅ
SELECT *
FROM EMP
WHERE SAL BETWEEN 1000 AND 2500
AND DEPTNO NOT IN(10,20);
๐ธ BETWEEN ์ ์ ์ฌ์ฉํด์ ์ฌ์๋ฒํธ๊ฐ 7000์์ 7999 ์ฌ์ด์ด๊ณ , ์ ์ฌ์ผ์ด 81/05/01 ์ดํ์ธ ์ฌ์ ์ถ๋ ฅ
SELECT * FROM EMP WHERE EMPNO BETWEEN 7000 AND 7999 AND HIREDATE > '81/05/01';
๐ธ 1980๋ ์ด ์๋ ํด์ ์ ์ฌํ ์ฌ์์ ์กฐํํด์ ์ถ๋ ฅ
SELECT * FROM EMP WHERE HIREDATE NOT BETWEEN '80/01/01' AND '80/12/31';
โ ๏ธ EXTRACT ์ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ(์ถํ ๋ฐฐ์ธ ์์ )
SELECT * FROM EMP WHERE EXTRACT(YEAR FROM HEREDATE) != 1980;
LIKE ์ฐ์ฐ์
- ์ผ๋ถ ๋ฌธ์์ด์ด ํฌํจ๋์ด ์์ผ๋ฉด ํด๋น ๋ฌธ์์ด์ด ํฌํจ๋ ๋ฐ์ดํฐ ์กฐํ
%
: ๊ธธ์ด์ ์๊ด์์ด ๋ชจ๋ ๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธ_
: ๋ฌธ์ 1์๋ฅผ ์๋ฏธ
SELECT * FROM EMP WHERE ENAME LIKE '%S%'; -- ์ด๋ฆ์ S๊ฐ ํฌํจ๋ ๋ชจ๋ ๋ฐ์ดํฐ ์ถ๋ ฅ
SELECT * FROM EMP WHERE ENAME LIKE 'S____'; -- ์์ S๊ฐ ์ค๊ณ ๋ค์ 4์๋ฆฌ
SELECT * FROM EMP WHERE ENAME LIKE '_L%'; -- ์ด๋ฆ์ 2๋ฒ์งธ๊ฐ 'L'์ธ ์ฌ๋ ์ถ๋ ฅ
๐ธ ์ด๋ฆ์ AM์ด ํฌํจ๋์ด ์๋ ์ฌ์ ์ถ๋ ฅ
SELECT * FROM EMP WHERE ENAME LIKE '%AM%';
๐ธ ์ด๋ฆ์ AM์ด ํฌํจ๋์ง ์์ ์ฌ์ ์ถ๋ ฅ
SELECT * FROM EMP WHERE ENAME NOT LIKE '%AM%';
๐ก์กฐํํ๋ ค๋ ๋ฐ์ดํฐ์ ์์ผ๋์นด๋ ๋ฌธ์๊ฐ ์์ ๊ฒฝ์ฐ : \ ์ ๋ฃ์ด์ฃผ๊ณ ๋ค์ ESCAPE '\'
๐ ์์ผ๋ ์นด๋ ๋ฌธ์ : % _ * ? ~ ๋ฑ๋ฑ
SELECT * FROM EMP WHERE ENAME LIKE '%\%%' ESCAPE '\';
IS NULL / IS NOT NULL
- NULL : 0๋ ์๋๊ณ , ๋น ๊ณต๊ฐ๋ ์๋์ ์๋ฏธํจ.
์ฆ, ๋ฏธํ์ ๊ฐ์ผ๋ก ์ฐ์ฐ ๋ฐ ๋น๊ต, ํ ๋น์ด ๋ถ๊ฐ๋ฅ!
SELECT * FROM EMP WHERE COMM IS NULL;
SELECT * FROM EMP WHERE COMM IS NOT NULL;
ORDER BY
- ํน์ ์ปฌ๋ผ(์ด) ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์์ด๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ
- ๋ฐ.๋.์. ๊ฐ์ฅ ๋ง์ง๋ง์ ๊ธฐ์ ๋์ด์ผ ํ๋ฉฐ, ๋จ๋ฐํ๋ฉด ์ฑ๋ฅ์ ์ํฅ์ ๋ผ์นจ
- ์ ๋ ฌ ์กฐ๊ฑด์ ๊ธฐ์ ํ์ง ์์ผ๋ฉด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
- ASC : ์ค๋ฆ์ฐจ์, DESC : ๋ด๋ฆผ์ฐจ์
- ์ ๋ ฌ ์กฐ๊ฑด ์ปฌ๋ผ์ ์์๋ฅผ ์ ๋ ฅํด๋ ๋จ(1๋ถํฐ ์์)
๐ธ ์ฌ์๋ฒํธ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
SELECT * FROM EMP ORDER BY EMPNO;
๐ธ ๊ธ์ฌ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๊ณ , ๊ธ์ฌ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ ์ด๋ฆ ๊ธฐ์ค
SELECT * FROM EMP ORDER BY SAL, ENAME;
๐ธ ๊ธ์ฌ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๊ณ , ๊ธ์ฌ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ ์ด๋ฆ์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
SELECT * FROM EMP ORDER BY SAL, ENAME DESC;
๐ธ ๋ณ์นญ ์ฌ์ฉ๊ณผ ORDER BY
SELECT EMPNO AS ์ฌ์๋ฒํธ, ENAME AS ์ฌ์๋ช
, SAL AS ์๊ธ, HIREDATE AS ์
์ฌ์ผ
FROM EMP ORDER BY ์๊ธ DESC, ์ฌ์๋ช
ASC;
์ฐ๊ฒฐ ์ฐ์ฐ์ (||)
- SELECT ์กฐํ์ ์ปฌ๋ผ ์ฌ์ด์ ํน์ ํ ๋ฌธ์๋ฅผ ๋ฃ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ์ฐ์ฐ์
SELECT ENAME || 'S JOB IS ' || JOB AS EMPLOYEE FROM EMP;
๐ธ์ฐ์ต๋ฌธ์ ๐ถ
โ๏ธ EMPํ ์ด๋ธ ๊ธฐ์ค
- COMM์ ๊ฐ์ด NULL์ด ์๋ ์ ๋ณด ์กฐํ
- ์ปค๋ฏธ์ ์ ๋ฐ์ง ๋ชปํ๋ ์ง์ ์กฐํ
- ๊ด๋ฆฌ์๊ฐ ์๋ ์ง์ ์ ๋ณด ์กฐํ
- ๊ธ์ฌ๋ฅผ ๋ง์ด ๋ฐ๋ ์ง์ ์์ผ๋ก ์กฐํ
- ๊ธ์ฌ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ ์ปค๋ฏธ์ ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ ์กฐํ
- ์ฌ์๋ฒํธ, ์ฌ์๋ช , ์ง๊ธ, ์ ์ฌ์ผ ์กฐํ (๋จ, ์ ์ฌ์ผ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ)
- ์ฌ์๋ฒํธ, ์ฌ์๋ช ์กฐํ (์ฌ์๋ฒํธ ๊ธฐ์ค ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ)
- ์ฌ์๋ฒํธ, ์ ์ฌ์ผ, ์ฌ์๋ช , ๊ธ์ฌ ์กฐํ (๋ถ์๋ฒํธ๊ฐ ๋น ๋ฅธ ์, ๊ฐ์ ๋ถ์๋ฒํธ ์ผ ๋๋ ์ต๊ทผ ์ ์ฌ์ผ ์์ผ๋ก ์ฒ๋ฆฌ)
-- 1.
SELECT * FROM EMP WHERE COMM IS NOT NULL;
-- 2.
SELECT * FROM EMP WHERE COMM IS NULL OR COMM = 0;
-- 3.
SELECT * FROM EMP WHERE MGR IS NULL;
-- 4.
SELECT * FROM EMP ORDER BY SAL DESC;
-- 5.
SELECT * FROM EMP ORDER BY SAL DESC,COMM DESC;
-- 6.
SELECT EMPNO, ENAME, JOB, HIREDATE FROM EMP ORDER BY HIREDATE;
-- 7.
SELECT EMPNO, ENAME FROM EMP ORDER BY EMPNO DESC;
-- 8.
SELECT DEPTNO, HIREDATE, ENAME, SAL FROM EMP ORDER BY DEPTNO,HIREDATE DESC;
'๐๏ธ Backend > Oracle' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ค๋ผํด(Oracle) - (DQL) : ์กฐ์ธ(JOIN) (0) | 2023.02.17 |
---|---|
์ค๋ผํด(Oracle) - (DQL) : ์งํฉ ์ฐ์ฐ์ (0) | 2023.02.17 |
์ค๋ผํด(Oracle) - (DQL) : ํจ์(๋ค์คํ ํจ์) (1) | 2023.02.16 |
์ค๋ผํด(Oracle) - ๊ธฐ๋ณธ HR ๊ณ์ ์ฐ์ต ๋ฌธ์ (1) | 2023.02.16 |
์ค๋ผํด(Oracle) - (DQL) : ํจ์(๋จ์ผํ ํจ์) (2) | 2023.02.14 |