Oracle #7-1 - DQL BASIC

ennakoidaΒ·2023λ…„ 6μ›” 19일
0

Oracle

λͺ©λ‘ 보기
7/13

πŸ“ DQL

DQL (Data Query Language) : 데이터 질의 μ–Έμ–΄. 데이터λ₯Ό 검색(μΆ”μΆœ)ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” μ–Έμ–΄λ‘œ, SELECT ꡬ문에 μ˜ν•΄ λ°˜ν™˜λœ ν–‰λ“€μ˜ 집합을 μ˜λ―Έν•œλ‹€. (DML에 μ†ν•œλ‹€.)

SELECT

SELECT * FROM USER_ROLE_PRIVS; -- λ‚΄ κΆŒν•œ 확인

SELECT * FROM EMPLOYEE;

SELECT문은 μ›ν•˜λŠ” 데이터λ₯Ό μ‘°νšŒν•˜λŠ” 쿼리문으둜,
FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY 의 μˆœμ„œλ‘œ μ‹€ν–‰λœλ‹€.
SELECT의 결과물은 ResultSet 으둜 λ‚˜νƒ€λ‚Έλ‹€.

πŸ’‘ DUAL
: ν•œ μ—΄λ‘œ 이루어진 νŠΉλ³„ν•œ 가상 ν…Œμ΄λΈ”. κ²°κ³Όκ°’ μ‘°νšŒν•  λ•Œ 많이 μ‚¬μš©ν•œλ‹€.
SYSDATE, USER, μ‚°μˆ μ—°μ‚°κ³Ό 같은 μ˜μ‚¬μ»¬λŸΌ 선텍에 μ‚¬μš©ν•˜λ„λ‘ ν•΄μ€€λ‹€.

SELECT * FROM DUAL; -- VARCHAR2(1)둜 'X'값이 μ‘΄μž¬ν•œλ‹€.


LIKE

-- EMPLOYEE ν…Œμ΄λΈ”μ—μ„œ 이름 끝이 μ—°μœΌλ‘œ λλ‚˜λŠ” μ‚¬μ›μ˜ 이름을 좜λ ₯ν•˜μ‹œμ˜€
SELECT EMP_NAME "μ‚¬μ›μ˜ 이름" FROM EMPLOYEE WHERE EMP_NAME LIKE '%μ—°';

-- EMPLOYEE ν…Œμ΄λΈ”μ—μ„œ EMAIL ID 쀑 @ μ•žμžλ¦¬κ°€ 5자리인 직원을 μ‘°νšŒν•˜μ‹œμ˜€

SELECT EMP_NAME FROM EMPLOYEE WHERE EMAIL LIKE '_____@%';

LIKEλŠ” λΉ„κ΅ν•˜λ €λŠ” 값이 μ§€μ •ν•œ νŠΉμ • νŒ¨ν„΄μ„ λ§Œμ‘±μ‹œν‚€λ©΄ TRUEλ₯Ό λ¦¬ν„΄ν•˜λŠ” μ—°μ‚°μžλ‘œ, β€˜%’와 β€˜_’λ₯Ό μ™€μΌλ“œμΉ΄λ“œλ‘œ μ‚¬μš©ν•  수 μžˆλ‹€

πŸ’‘ μ™€μΌλ“œμΉ΄λ“œ

  • % : 0개 μ΄μƒμ˜ λͺ¨λ“  문자λ₯Ό λ§€μΉ­ν•œλ‹€.
  • _ : ν•˜λ‚˜μ˜ μžλ¦¬μ— ν•΄λ‹Ήν•˜λŠ” λͺ¨λ“  문자λ₯Ό λ§€μΉ­ν•œλ‹€.

ESCAPE

-- EMPLOYEE ν…Œμ΄λΈ”μ—μ„œ EMAIL ID 쀑 '_' μ•žμžλ¦¬κ°€ 3자리인 직원을 μ‘°νšŒν•˜μ‹œμ˜€

SELECT EMP_NAME FROM EMPLOYEE WHERE EMAIL LIKE '___#_%' ESCAPE '#';

ESCAPEλŠ” μ™€μΌλ“œμΉ΄λ“œλ₯Ό 문자둜 μΈμ‹μ‹œμΌœμ£ΌκΈ° μœ„ν•΄ μ„€μ •ν•œλ‹€.
#, $, \ λ“±, μ˜λ―Έμ—†λŠ” 기호라면 아무 κΈ°ν˜Έλ‚˜ 지정해도 되며,
μ‚¬μš©λ²•μ€ 문자둜 μΈμ‹μ‹œν‚€κ³  싢은 μ™€μΌλ“œμΉ΄λ“œ μ•žμ—λ‹€κ°€ 적어주고, 뒀에 ESCAPE둜 μ„ μ–Έν•΄μ£Όλ©΄ λœλ‹€.


BETWEEN AND

-- μž…μ‚¬μΌμ΄ 5λ…„ 이상, 10λ…„ μ΄ν•˜μΈ μ§μ›μ˜ 이름과 μž…μ‚¬μΌμ„ κ²€μƒ‰ν•˜μ‹œμ˜€

SELECT EMP_NAME "이름", HIRE_DATE "μž…μ‚¬μΌ" FROM EMPLOYEE
WHERE ((SYSDATE - HIRE_DATE)/365) BETWEEN 5 AND 10;

BETWEEN ANDλŠ” λΉ„κ΅ν•˜λ €λŠ” 값이 μ§€μ •ν•œ λ²”μœ„(μƒν•œ κ°’κ³Ό ν•˜ν•œ κ°’μ˜ 경계도 포함됨)에 ν¬ν•¨λ˜λ©΄ TRUEλ₯Ό λ¦¬ν„΄ν•˜λŠ” μ—°μ‚°μžμ΄λ‹€.


ORDER BY

-- 이름, κ·Όμ†λ…„μˆ˜(μ†Œμˆ˜μ X)λ₯Ό κ·Όμ†λ…„μˆ˜κ°€ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜μ—¬ 좜λ ₯ν•˜μ—¬λΌ

SELECT EMP_NAME "이름"
     , FLOOR((SYSDATE-HIRE_DATE)/365) "κ·Όμ†λ…„μˆ˜" 
FROM EMPLOYEE 
--ORDER BY (SYSDATE-HIRE_DATE)/365 ASC;
ORDER BY 3 ASC; 
-- ORDER BY에 칼럼 μˆœμ„œλ₯Ό μž…λ ₯ν•΄μ„œ μ •λ ¬ν•  μˆ˜λ„ 있음

-- μ •λ ¬
-- 1. 2. 3. ... 10 / γ„±, γ„΄, γ„·, ... γ…Ž (μ˜€λ¦„μ°¨μˆœ): ASC
-- 10. 9. 8. ... 2. 1. / γ…Ž, ㅍ, γ…Œ, .... γ„±(λ‚΄λ¦Όμ°¨μˆœ): DESC

ORDER BYλŠ” μ˜€λ¦„μ°¨μˆœ, λ˜λŠ” λ‚΄λ¦Όμ°¨μˆœ 정렬을 지정해쀀닀.
칼럼λͺ…을 직접 λͺ…μ‹œν•  μˆ˜λ„ μžˆμ§€λ§Œ, 1, 2, 3 κ³Ό 같이 칼럼 μˆœμ„œλ₯Ό μ§€μ •ν•˜μ—¬ λͺ…μ‹œν•  μˆ˜λ„ μžˆλ‹€.

πŸ’‘ ORDER BY

  • ASC : μ˜€λ¦„μ°¨μˆœ. μƒλž΅μ΄ κ°€λŠ₯ν•˜λ‹€.
  • DESC : λ‚΄λ¦Όμ°¨μˆœ. μƒλž΅μ΄ λΆˆκ°€λŠ₯ν•˜λ‹€.

0개의 λŒ“κΈ€