1)AVG() 평균
2)MIN() 최소값
3)MAX() 최대값
4)SUM() 합계
5)GROUP BY --그룹화하는 것
그룹화하는 컬럼명이 select에 있어야함 --->sgroup
*특정 컬럼을 그룹화 하는 GROUP BY
*특정 컬럼을 그룹화한 결과에 조건을 거는 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 |