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
;