DB

DB_4강

삼색이삼랑해 2022. 10. 5. 16:21

  트랜잭션(Transaction)

트랜잭션은 INSERT, UPDATE, DELETE 작업의 기본 단위를 말한다.

한 작업이 중단 단게에서 실패할 경우 최초의 상태로 되돌리며, 데이터베이스가 변경되는 작업에 한해 트랜잭션 처리를 수행한다. 작업 완료에 대한 최종 승인 또는 되돌림 처리가 가능하다.

 

  • COMMIT : 최종 승인 명령
  • ROLLBACK : 되돌림 명령

데이터의 삽입, 수정, 삭제 작업을 프로그램을 통해서가 아닌 Warkbench를 통해서 했을 경우, 반드시 COMMIT을 수행해야 하며, COMMIT을 하기 전에는 임시로 저장된 데이터이기 때문에 프로그램에서 해당 데이터를 받을 수 없다.

COMMIT;
ROLLBACK;

-- 자동 commit 설정 상태 확인(1은 설정 상태, 0은 설정 해제)
SELECT @@autocommit;

-- autocommit 설정 변경
SET AUOTCOMMIT = 0;

  집계함수

집계함수는 행에 대한 산술적인 연산을 수행하는 함수이다. 주로 숫자 타입의 컬럼에 적용한다.

  • count(컬럼) :전체 또는 특정 컬럼의 값이 있는 행의 개수
    count( * ) = 모든 행의 개수
    count(컬럼명) = 해당 컬럼의 값이 null이 아닌 행의 개수
  • sum(컬럼) : 해당 컬럼의 모든 행의 합산
  • avg(컬럼) : 해당 컬럼의 모든 행의 평균값
  • min(컬럼) : 해당 컬럼의 모든 행 중 가장 작은 값
  • max(컬럼) : 해당 컬럼의 모든 행 중 가장 큰 값
  • stdev(컬럼) : 표준편차 함수
  • var_samp(컬럼) : 분산을 구하는 함수
-- 전체 사원 수
SELECT count(*)
FROM emp
;

-- comm을 받는 사원 수
SELECT count(comm)
FROM emp
;

-- 회사의 전체 인건비는 얼마?
SELECT sum(sal)
FROM emp;

-- 회사의 평균 인건비(급여)는 얼마?
SELECT avg(sal)
FROM emp;

-- 최소 급여와 최대 급여는?
SELECT min(sal), max(sal)
FROM emp;

  GROUP BY와 HAVING

'GROUP BY HAVING'은 행을 그룹으로 묶어주는 역할을 한다. 집계 함수를 사용할 수 있다.

여기서 HAVING은 그룹화에 대한 조건을 작성하는 구문으로, 항상 GROUP BY와 함께 사용하며 단독으로 사용할 수 없다.

'WITH ROLLUP'은 HAVING처럼 GROUP BY와 함께 사용되며 그룹의 중간 합계 및 총합을 알아낼 수 있다.

-- 사원 수가 5명 이상인 부서는?
SELECT deptno, count(*)
FROM emp
GROUP BY deptno
HAVING count(*) >= 5
;

-- WITH ROLLUP 사용
SELECT deptno, job, sum(sal), count(*)
FROM emp
GROUP BY deptno, job
WITH ROLLUP
;