2021 K-Digital 교육 (한국SW산업협회 주관) 에서 배운 내용을 제멋대로 정리해보는 공간입니다.
모든 오류 지적은 언제나 환영입니다.
모든 자료의 저작권은 허진경 선생님께 있습니다.🎈
IF-THEN-ELSE 구문과 유사한 방법으로 표현식 해독
기본구문
DECODE(column or expression, search1, result1)
expression 해독 후 각각의 SearchN에 대해 비교, 같으면 resultN, 다르면 기본값 혹은 Null 반환
자바의 if~else 문 또는 switch ~ case와 같은 기능
SELECT job_id, salary, CASE job_id WHEN 'IT_PROG' THEN salary*1.1 ELSE salary END AS REVISED_SALARY FROM employees;
- AVG(n) : 평균 출력
- SUM(n) : 합계
- MIN(n) : 최솟값
- MAX(n) : 최댓값
- COUNT(n) : 행의 갯수
- STDDEV(n) : n의 표준편차
- VARIANCE(n) : n의 분산
❗️COUNT(*)을 제외한 상기 함수는 전부 NULL 값을 무시하고 연산
테이블의 행을 더 작은 그룹으로 나눕니다.
주의 !
GROUP BY 절에 명시 되지 않은 열은, SELECT절에서 그룹함수에 의해(ex : AVG) 호출되어야 합니다.SELECT department_id, AVG(salary) FROM employees GROUP BY department_id;
GROUP_BY 절은 HAVING 절에 의해 제한합니다.
사용 예)
급여평균이 8000을 초과하는 부서의 번호와 급여 평균 출력
SELECT department_id, AVG(salary) FROM employees GROUP BY department_id HAVING AVG(salary) > 8000;
하나 이상의 테이블로부터 데이터를 질의하기 위해 조인 사용
본 포스팅에서는 안시조인을 기본으로 다루겠습니다.
SELECT table1.column, table2.column FROM table1 \[LEFT | RIGHT | FULL] [OUTER] JOIN table2 ON join_conditions [WHERE conditions];
같은 이름을 갖는 열들에 대해 조인을 합니다.
SELECT first_name, job_title FROM employees NATURAL JOIN jobs;
원하는 특정열에 대해서만 EQUI조인을 할 수 있음
SELECT first_name, job_title FROM employees JOIN jobs USING (job_id);
ON 절 이용 시 JOIN 이후 논리 연산, 서브쿼리같은 추가 서술 가능
SELECT department_name, city, state_province FROM departments d JOIN locations l ON d.location_id = l.location_id;
WHERE 절을 추가한다면 별도의 조건으로 제한 가능
- 서브쿼리는 괄호로 둘러싸야 함
- 비교 연산자의 오른쪽에 있어야 함
기본 구문
SELECT select_list FROM table WHERE conditions START WITH top_level_condition CONNECT BY [NOCYCLE] [PRIOR] connenct_condition ORDER SIBLINGS BY order_condition;
INSERT INTO table
VALUES () ;
UPDATE table
SET column = value [, column = value] ;
- WHERE 절이 생략되면 모든 행의 데이터가 변경될 수 있음.
DELETE FROM table
[WHERE condition]
🔥 delete, truncate, drop의 차이점은?