본문 바로가기
SQL/이론

AVG/MIN/MAX/SUM/GROUP BY +(HAVING)/ 트리거

by SEOKIHOUSE 2023. 4. 24.

1)AVG() 평균

2)MIN() 최소값

3)MAX() 최대값

4)SUM() 합계


5)GROUP BY --그룹화하는 것

그룹화하는 컬럼명이 select에 있어야함 --->sgroup

*특정 컬럼을 그룹화 하는 GROUP BY 

*특정 컬럼을 그룹화한 결과에 조건을 거는 HAVING

HAVING


다른예시


6)trigger : 방아쇠

--테이블에 삽입, 수정, 삭제 등의 작업(이벤트)이 발생 시 자동으로 작동되는 개체

 

if)사용자가 데이터를 지워 ---> 백업이 필요한데.. --> 지운 데이터를 다른 테이블에 저장해보자 모아두자

▼▼기본적인 문법구조▼▼

-- DELEMITER구분자: 변경 실행의 끝을 //이걸로 바꿈  
-- why? 세미콜론 다른용도로 쓰인다 
DELIMITER //
CREATE TRIGGER testtrg
-- 트리거가 언제 실행되어야 하나를 알려준다
	AFTER DELETE 
	ON testtbl
	FOR EACH ROW 	 
	-- 각 행마다 적용시키겠
BEGIN
 -- trigger 실행 시 작동되는 코드를 기술하는 영역
 	SET @msg ='과일 그룹이 삭제됨'; 
 	-- msg 변수를 설정
END //
DELIMITER ;


SET @msg= '';
SELECT @msg;
SELECT @msg;

UPDATE testtbl SET txt ='소방차' WHERE id=3;

SELECT @msg;

DELETE FROM testtbl WHERE id=3;
SELECT @msg;
SELECT * FROM testtbl;

다른예시

update시 임시데이터가 만들어짐

이전데이터old  새 데이터 new 

 

--> 근데 삭제?

이전테이터는 없고 새 데이터만있음 그렇다면 insert 시 old껄 가져오자

-- 회원테이블(tbl_user)에 delete 시도되면 삭제된 데이터를
--  별도 테이블(tblUser_delete)에 보관
DESC tbl_user;

CREATE TABLE tblUser_delete(
	userno CHAR(4),
	username VARCHAR(20),
	userphone CHAR(13),
	useraddr VARCHAR(100),
	deldate DATE 
);


DELIMITER //
CREATE TRIGGER tblUser_deleteTrg
	AFTER delete
	ON tbl_user
	FOR EACH row
BEGIN
	INSERT INTO tblUser_delete VALUES(OLD.userno,OLD.username ,OLD.userphone ,OLD.useraddr,CURDATE());
END //	
DELIMITER ;

DELETE FROM tbl_user WHERE userno = 'u007';

SELECT * FROM tbl_user;
SELECT * FROM tblUser_delete;


*now로 시간까지 표현 + 누가 지웠는지 표현

 

 


업뎃이랑 딜리트랑 두개 한거 한 테이블에 넣으려면

trigger 을 두개생성해야한다 tbl_deletes ,tbl_updatedeletes

 

 

'SQL > 이론' 카테고리의 다른 글

TIMESTAMP 현재시간 + 나중에 반납일자  (0) 2023.04.20
ADD/ CHANGE/ MODIFY/ DROP  (0) 2023.04.18
view /describe/ as(별칭)/null조회/OR(where in)/  (0) 2023.04.17
외래키(foreign key)/ join  (1) 2023.04.17
cmd에 mariadb연결하기  (0) 2023.04.13