[SQL] 데이터 조작어(DML)

hyun-jin·2022년 8월 26일
0

SQL

목록 보기
1/1

기본 셋팅 -> DBMS: DBeaver 사용

데이터 조작어(DML)

  • 테이블에 데이터를 검색, 삽입, 삭제, 수정하는데 사용한다.
    SELECT(R), INSERT(C), DELETE(D), UPDATE(U)문 등이 있다.
    -> CRUD라고도 부른다.

1. 검색(SELECT)

  • select문의 구성 요소
    SELECT 속성이름(들) <- 또는 속성이름 자리에 *을 쓰면 전체를 다 가지고 올수 있다.
    FROM 테이블이름(들);
SELECT	EMPLOYEE_ID, LAST_NAME
 FROM   EMPLOYEES e;
 -> 직원정보 테이블에서 직원 ID와 이름만 검색

✔︎ 기본 구조
SELECT 속성이름(들)
FROM 테이블이름(들);
WHERE 조건

1) 조건 추가

1-1. where 조건

SELECT EMPLOYEE_ID, LAST_NAME
 FROM   EMPLOYEES e;
 WHERE  JOB_ID = 'SA_REP';
 -> 직원정보 테이블에서 JOB_ID가 SA_REP인 직원의 ID와 직원 검색

1-2. AND : 그리고

SELECT *
 FROM	EMPLOYEES e 
 WHERE	JOB_ID = 'SA_REP'
 AND	MANAGER_ID = 145;
-> 직원정보 테이블에서 JOB_ID가 SA_REP이고 MANAGER_ID가 145인 직원 검색

1-3. OR : 또는

SELECT *
 FROM	EMPLOYEES e 
 WHERE	DEPARTMENT_ID = 50
 OR 	MANAGER_ID  = 100;
-> 직원정보 테이블에서 DEPARTMENT_ID가 90 또는 MANAGER_ID가 100인 직원 검색

1-4. IN() : OR와 동일

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

1-5. AS : 별칭, 알리아스

✔︎ AS는 생략가능

SELECT EMPLOYEE_ID AS "ID" ,
	 	SALARY AS "SAL"
 FROM EMPLOYEES e;
-> 직원정보 테이블에서 EMPLOYEE_ID와 SALARY 명칭을 간단하게 ID와 SAL로 변경

1-6. DISTINCT : 중복제거

SELECT	DISTINCT DEPARTMENT_ID 
 FROM	EMPLOYEES e ;
-> 부서가 같은 경우 중복제거후 DEPARTMENT_ID만 검색

1-7. NOT, <>, != : 아닌경우

SELECT *
 FROM	EMPLOYEES e 
 WHERE	NOT (DEPARTMENT_ID = 50);
--
SELECT *
FROM	EMPLOYEES e 
WHERE	DEPARTMENT_ID <> 50;
--
SELECT *
FROM	EMPLOYEES e 
WHERE	DEPARTMENT_ID != 50;
-> DEPARTMENT_ID가 50이 아닌 직원만 검색

1-8. 이상/이하, BETWEEN A AND B

SELECT *
 FROM  EMPLOYEES e 
 WHERE SALARY >= 4000 AND SALARY <= 8000;
--
SELECT  *
FROM	EMPLOYEES e 
WHERE	SALARY BETWEEN 4000 AND 8000;
-> 직원의 월급이 4000이상 8000이하인 직원 검색

1-9. LIKE : #로 시작하는 직원 혹은 #로 끝나는 직원

-- 'D'로 시작하는 사람
SELECT  FIRST_NAME ,
		LAST_NAME 
FROM 	EMPLOYEES e 
WHERE 	FIRST_NAME LIKE 'D%';
-- 'd'로 끝나는 사람
SELECT  FIRST_NAME ,
		LAST_NAME 
FROM	EMPLOYEES e 
WHERE FIRST_NAME LIKE '%d';
-> 직원중 D로 시작/끝 나는 직원의 FIRST_NAME과 LAST_NAME 검색

✔︎ 중간에 #가 있는 직원

-- __a <- 이름 중간에 a가 있는 직원
SELECT	FIRST_NAME , LAST_NAME 
FROM	EMPLOYEES e 
WHERE	FIRST_NAME LIKE '__a%';

1-10. IS : ex)NULL 조회

SELECT *
 FROM	EMPLOYEES e 
 WHERE	COMMISSION_PCT IS NULL;
-> COMMISION_PCT에 NULL이 있는 직원 검색
--
-- NULL이 아닌 직원 검색
SELECT *
FROM	EMPLOYEES e 
WHERE	COMMISSION_PCT IS NOT NULL;

1-11. ORDER BY ASC : 오름차순

✔︎ ASC는 생략가능

SELECT *
 FROM	EMPLOYEES e 
 ORDER	BY SALARY ASC ;
-- 동일함
SELECT *
FROM	EMPLOYEES e 
ORDER	BY SALARY;
-> SALARY를 오름차순으로 검색

1-12. ORDER BY DESC : 내림차순

✔︎ DESC는 생략불가

SELECT *
 FROM	EMPLOYEES e 
 ORDER	BY SALARY DESC ;
-> SALARY를 내림차순으로 검색

1-13. SUM() : 합계

SELECT	SUM(salary) 
 FROM	EMPLOYEES e;
-> SALARY 합 계산

1-14. AVG() : 평균

SELECT	AVG(SALARY)
 FROM	EMPLOYEES e ;
-> 직원들 SALARY 평균 계산

1-15. COUNT(컬럼/ *) : 몇명인지 확인

SELECT	COUNT(*) 
 FROM	EMPLOYEES e 
;

1-16. MAX : 최대값

SELECT	MAX(SALARY) 
 FROM	EMPLOYEES e;
-> SALARY 최대값 검색
--
SELECT	MAX(HIRE_DATE) 
FROM	EMPLOYEES e;
-> 최근 입사한 직원 검색

1-17. MIN : 최소값

SELECT	MIN(SALARY) 
 FROM	EMPLOYEES e;
-> SALARY 최소값 검색
--
SELECT	MIN(HIRE_DATE) 
FROM	EMPLOYEES e;
-> 가장 일찍 입사한 직원 검색

0개의 댓글