SQL (2)

기혁·2023λ…„ 2μ›” 9일
0

DBMS ν•™μŠ΅

λͺ©λ‘ 보기
3/13
post-thumbnail

day02

πŸ“Œ κΈ°λ³Έ μ—°μ‚°μž AND OR NOT μ‚¬μš©

πŸ‘‰ as : 별칭, μ•Œλ¦¬μ•„μŠ€

// 좜λ ₯λ λ•Œ 컬λ₯¨μ˜ 이름이 μ„€μ •ν•œ κ°’μœΌλ‘œ λ°”λ€Œμ–΄μ„œ λ‚˜μ˜΄

SELECT e.EMPLOYEE_ID AS "ID"
	,  e.SALARY "SAL" // AS μƒλž΅ν•˜κ³  " " 으둜 넣어도 κ°€λŠ₯
FROM EMPLOYEES  e 
;

πŸ‘‰ distinct 쀑볡 제거

SELECT DISTINCT JOB_ID
FROM EMPLOYEES e 
;

πŸ‘‰ or 쑰건

SELECT 	EMPLOYEE_ID 
	,  	LAST_NAME 
	,  	MANAGER_ID
	,	DEPARTMENT_ID 
FROM 	EMPLOYEES e 
WHERE 	DEPARTMENT_ID = 50
OR		MANAGER_ID = 100	
;

πŸ‘‰ not λΆ€μ •

SELECT 	FIRST_NAME , LAST_NAME 
	,	DEPARTMENT_ID 
FROM 	EMPLOYEES e 
WHERE 	NOT (DEPARTMENT_ID = 50)
;

πŸ‘‰ <>

SELECT 	FIRST_NAME ,	LAST_NAME 
	,	DEPARTMENT_ID 
FROM 	EMPLOYEES e 
WHERE 	DEPARTMENT_ID <> 50
;

πŸ‘‰ !=

SELECT 	FIRST_NAME ,	LAST_NAME 
	,	DEPARTMENT_ID 
FROM 	EMPLOYEES e 
WHERE 	DEPARTMENT_ID != 50
;

πŸ‘‰ λ²”μœ„

SELECT 	FIRST_NAME	, LAST_NAME ,	SALARY 
FROM 	EMPLOYEES e
WHERE 	SALARY >= 7000
AND		SALARY <= 10000
;

πŸ‘‰ between A and B

SELECT 	FIRST_NAME	, LAST_NAME ,	SALARY 
FROM 	EMPLOYEES e
WHERE 	SALARY BETWEEN 6000 AND 10000 -- SALARY 6000μ—μ„œ 10000 사이
;

πŸ‘‰ in절 : orκ³Ό 동일

SELECT 	*
FROM 	EMPLOYEES e 
WHERE	SALARY IN (6500,7700,13000)
;

πŸ’‘ λ¬Έ1

employees ν…Œμ΄λΈ”μ—μ„œ employee_id, first_name, last_anem, job_idλ₯Ό 좜λ ₯ν•˜λŠ”λ°,
job_idκ°€ ST_MAN이고, manager_idκ°€ 100이고, salaryκ°€ 5000이상인 μ‚¬λžŒ.

SELECT	EMPLOYEE_ID	, FIRST_NAME ,	LAST_NAME  
		, JOB_ID 
FROM 	EMPLOYEES e 
WHERE 	JOB_ID = 'ST_MAN'
AND		MANAGER_ID = 100
AND		SALARY >= 5000
;

πŸ’‘ λ¬Έ2

EMPLOYEES ν…Œμ΄λΈ”μ—μ„œ EMPLOYEE_ID, first_name, last_name, JOB_ID
MANAGER_ID, SALARY λ₯Ό 쑰회
DEPARTMENT_IDκ°€ 10 λ˜λŠ” 30 λ˜λŠ” 100 λ˜λŠ” 90에 μ†ν•˜κ³ ,
κΈ‰μ—¬(SALARY)κ°€ 5000μ—μ„œ 10000사이 이고
λ§€λ‹ˆμ €(MANAGER_ID)κ°€ 100이 μ•„λ‹Œ μ‚¬λžŒμ„ 쑰회

SELECT 	EMPLOYEE_ID , FIRST_NAME , LAST_NAME , JOB_ID , MANAGER_ID , SALARY 
FROM 	EMPLOYEES e 
WHERE 	DEPARTMENT_ID IN (10, 30 , 100 , 90)
AND 	MANAGER_ID != 100
AND 	SALARY BETWEEN 5000 AND 10000
;

πŸ“Œ 각쒅 ν•¨μˆ˜ μ’…λ₯˜

πŸ‘‰ like

: d둜 λλ‚˜λŠ” μ‚¬λžŒ

SELECT 	FIRST_NAME , LAST_NAME ,
		EMPLOYEE_ID 
FROM 	EMPLOYEES e 
WHERE 	FIRST_NAME LIKE '%d'
;

πŸ‘‰ like (2)

: __a인 μ‚¬λžŒ % μ•„λ¬΄κ±°λ‚˜ 와도 μƒκ΄€μ—†μŒ

SELECT 	FIRST_NAME , LAST_NAME , EMPLOYEE_ID 
FROM 	EMPLOYEES e 
WHERE 	FIRST_NAME LIKE '__a%'
;

πŸ‘‰ is null

: null값인 μ‚¬λžŒ

SELECT 	FIRST_NAME , LAST_NAME , 
		EMPLOYEE_ID	, COMMISSION_PCT  
FROM 	EMPLOYEES e
WHERE 	COMMISSION_PCT IS null
;

πŸ‘‰ is not null

: null 값이 μ•„λ‹Œμ‚¬λžŒ

SELECT 	FIRST_NAME , LAST_NAME , 
		COMMISSION_PCT  
FROM 	EMPLOYEES e
WHERE 	COMMISSION_PCT IS NOT NULL 
;

πŸ‘‰ order by ASC

: μ˜€λ¦„μ°¨μˆœ, μƒλž΅κ°€λŠ₯

SELECT 	FIRST_NAME , LAST_NAME , 
		COMMISSION_PCT  
FROM 	EMPLOYEES e
WHERE 	COMMISSION_PCT IS NOT NULL 
ORDER BY FIRST_NAME
;

πŸ‘‰ order by desc

: λ‚΄λ¦Όμ°¨μˆœ

SELECT 	FIRST_NAME , LAST_NAME , 
		COMMISSION_PCT  
FROM 	EMPLOYEES e
WHERE 	COMMISSION_PCT IS NOT NULL 
ORDER BY FIRST_NAME DESC 
;

πŸ‘‰ 합계 sum

: κ°’ λ”ν•˜κΈ°

SELECT 	sum(SALARY) 
FROM 	EMPLOYEES e
;

πŸ‘‰ count(*)

: λͺ‡λͺ…인지 μ„Έμ£ΌλŠ”κ²ƒ

SELECT 	COUNT(*) 
FROM 	EMPLOYEES e 
;
SELECT 	COUNT(EMPLOYEE_ID) "전체 인원" 
FROM 	EMPLOYEES e 
;
SELECT 	COUNT(DEPARTMENT_ID) "μ œμ™Έ 미포함 인원"
FROM 	EMPLOYEES e 
;
SELECT COUNT(COMMISSION_PCT) "μ»€λ―Έμ…˜ 인원"
FROM EMPLOYEES e 
;

πŸ‘‰ λΆ€μ„œμ˜ 갯수, EMPLOYEES ν…Œμ΄λΈ”μ—μ„œ

SELECT 	COUNT(DISTINCT DEPARTMENT_ID) "λΆ€μ„œμ˜ 갯수"
FROM 	EMPLOYEES e 
;

πŸ‘‰ avg

: 평균

SELECT 	AVG(SALARY) 
FROM	EMPLOYEES e  
;

πŸ‘‰ max

: μ΅œλŒ€κ°’

SELECT 	MAX(SALARY) "봉급 평균"
FROM 	EMPLOYEES e 
;
SELECT 	MAX(HIRE_DATE) "제일 λŠ¦μ€ μž…μ‚¬μΌ"
FROM 	EMPLOYEES e 
;

πŸ‘‰ min

: μ΅œμ†Œκ°’

SELECT	MIN(SALARY)  "적은 κΈ‰μ—¬"
FROM 	EMPLOYEES e 
;
SELECT	MIN(HIRE_DATE)  "제일 λΉ λ₯Έ μž…μ‚¬μΌ"
FROM 	EMPLOYEES e 
;

πŸ“Œ dual

  • μ˜€λΌν΄μ—μ„œ 기본으둜 μ œκ³΅ν•˜λŠ” dummy table
  • κ°„λ‹¨ν•˜κ²Œ ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄μ„œ 계산결과값을
    확인 ν•  λ•Œ μ‚¬μš©ν•˜λŠ” ν…Œμ΄λΈ”
  • dual ν…Œμ΄λΈ”μ€ μ‚¬μš©μžκ°€ ν•¨μˆ˜(계산)λ₯Ό μ‹€ν–‰ν•  λ•Œ
    μž„μ‹œλ‘œ μ‚¬μš©ν•˜λŠ”λ° μ ν•©ν•˜λ‹€.
  • ν•¨μˆ˜μ— λŒ€ν•œ μ“°μž„μ„ μ•Œκ³  μ‹Άμ„λ•Œ νŠΉμ • ν…Œμ΄λΈ”μ„
    μ΄μš©ν•˜μ—¬ ν•¨μˆ˜μ˜ 값을 리턴 받을 수 μžˆλ‹€.

πŸ‘‰ abs

: μ ˆλŒ€κ°’

SELECT 	ABS(-23)
FROM 	dual
;

πŸ‘‰ round()

: 반올림

SELECT 	ROUND(0.123) , ROUND(0.5678)  -- 0 / 1 좜λ ₯
FROM 	dual
;

πŸ‘‰ trunc

: μ†Œμˆ«μ  자리 자λ₯΄κΈ°

SELECT 	TRUNC(1234.56789)	-- 1234 좜λ ₯
FROM	dual
;
SELECT 	TRUNC(1234.56789,2)	-- 	1234.56 κ°’ 좜λ ₯
FROM	dual
;
SELECT 	TRUNC(1234.56789,-1)  -- 1230 κ°’ λ‚˜μ˜¨λ‹€ 
FROM	dual
;

πŸ“Œ μ‘μš© λ¬Έμ œλ“€

πŸ’‘ λ¬Έ 1

연봉이 12000 μ΄μƒλ˜λŠ” μ§μ›λ“€μ˜ LAST_NAME 및 연봉을 μ‘°νšŒν•œλ‹€.
단, κΈ‰μ—¬ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ 쑰회

SELECT 		LAST_NAME , SALARY 
FROM 		EMPLOYEES e 
WHERE  		SALARY >= 12000
ORDER BY 	SALARY
;

πŸ’‘ λ¬Έ 2

μ‚¬μ›λ²ˆν˜Έκ°€ 176 인 μ‚¬λžŒμ˜ LAST_NAME κ³Ό λΆ€μ„œ 번호λ₯Ό μ‘°νšŒν•œλ‹€.

 SELECT 	EMPLOYEE_ID , LAST_NAME , DEPARTMENT_ID
FROM 	EMPLOYEES e 
WHERE 	EMPLOYEE_ID = 176
;

πŸ’‘ λ¬Έ 3

연봉이 5000 μ—μ„œ 12000의 λ²”μœ„ 이외인 μ‚¬λžŒλ“€μ˜
LAST_NAME 및 연봉을 μ‘°νšŒνžŒλ‹€.

SELECT 	LAST_NAME , SALARY 
FROM 	EMPLOYEES e 
WHERE 	SALARY NOT BETWEEN 5000 AND 12000 
;

πŸ’‘ λ¬Έ 4

20 번 및 50 번 λΆ€μ„œμ—μ„œ κ·Όλ¬΄ν•˜λŠ” λͺ¨λ“  μ‚¬μ›λ“€μ˜
LAST_NAME 및 λΆ€μ„œ 번호λ₯Ό μ•ŒνŒŒλ²³μˆœμœΌλ‘œ μ‘°νšŒν•œλ‹€.

SELECT 		LAST_NAME , DEPARTMENT_ID 
FROM 		EMPLOYEES e 
WHERE 		DEPARTMENT_ID = 20
OR 			DEPARTMENT_ID = 50
ORDER BY 	LAST_NAME  ASC  
;

πŸ’‘ λ¬Έ 5

20 번 및 50 번 λΆ€μ„œμ— κ·Όλ¬΄ν•˜λ©°,
연봉이 5000 ~ 12,000 사이인 μ‚¬μ›λ“€μ˜
LAST_NAME 및 연봉을 μ‘°νšŒν•œλ‹€.

 SELECT 	LAST_NAME , SALARY , DEPARTMENT_ID 
FROM 	EMPLOYEES e 
WHERE 	DEPARTMENT_ID IN (20, 50)
AND 	SALARY BETWEEN 5000 AND 12000
;

πŸ’‘ λ¬Έ 6

LAST_NAME 첫 κΈ€μžκ°€ A 인 μ‚¬μ›λ“€μ˜ LAST_NAME 을 μ‘°νšŒν•œλ‹€.

SELECT 	LAST_NAME 
FROM 	EMPLOYEES e
WHERE 	LAST_NAME LIKE 'A%'
;

πŸ’‘ λ¬Έ 7

λ§€λ‹ˆμ €κ°€ μ—†λŠ” μ‚¬λžŒλ“€μ˜ LAST_NAME 및 JOB_ID λ₯Ό μ‘°νšŒν•œλ‹€.

 SELECT 	LAST_NAME , JOB_ID , MANAGER_ID 
FROM 	EMPLOYEES e 
WHERE 	MANAGER_ID IS NULL
;

πŸ’‘ λ¬Έ 8

μ»€λ―Έμ…˜μ„ λ²„λŠ” λͺ¨λ“  μ‚¬μ›λ“€μ˜ LAST_ANME,
연봉 및 μ»€λ―Έμ…˜μ„ μ‘°νšŒν•œλ‹€.
단,연봉 μ—­μˆœ μ •λ ¬ν•œλ‹€.

SELECT 		LAST_NAME , SALARY , COMMISSION_PCT 
FROM 		EMPLOYEES e 
WHERE 		COMMISSION_PCT IS NOT NULL
ORDER BY 	SALARY DESC
;
profile
β­οΈλ‚΄κ°€λ§Œλ“ μΏ ν‚€β­οΈ

0개의 λŒ“κΈ€