INSERT INTO / DELETE / UPDATE / PROCEDURE

SOOYEON·2022년 8월 11일
0

SQL

목록 보기
21/54

INSERT INTO

INSERT INTO TABLE_NAME (COLUMN1, COLUMN2, COLUMN3, ...) 
VALUES (VALUE1, VALUE2, VALUE3, ...);

여러 줄 추가

VALUES의 값을 COMMA로 구분하여 여러 줄을 입력

INSERT INTO TABLE_NAME (COLUMN1, COLUMN2, COLUMN3, ...) 
VALUES (VALUE1, VALUE2, VALUE3, ...),
VALUES (VALUE1, VALUE2, VALUE3, ...),
VALUES (VALUE1, VALUE2, VALUE3, ...);
  • EX
INSERT INTO PRODUCT (상품 번호, 카테고리, 색상, 성별, 사이즈, 원가) 
VALUES ('A003', '트레이닝', 'PURPLE', 'F', 'XS', '80,000);

DELETE

DELETE FROM TABLE_NAME
WHERE SOME_COLUMN = SOME_VALUE
  • EX
DELETE FROM PRODUCT
WHERE 상품 번호 = 'A003';

UPDATE

UPDATE TABLE_NAME
SET COLUMN_NAME = 'NEW VALUE'
WHERE CONDITION;
  • EX

상품 번호 A002의 원가를 70,000으로 변경

UPDATE PRODUCT 
SET 원가 = 70,000
WHERE 상품 번호 = 'A002';

& 카테고리를 '피트니스'로 변경

UPDATE PRODUCT 
SET 원가 = 70,000
카테고리 = '피트니스'
WHERE 상품 번호 = 'A002';

PROCEDURE

매크로처럼 반복되는 내용을 하나의 단위(=PROCEDURE) 로 생성

  • 주문 취소 건이 발생할 경우 자동으로 매출에 마이너스(-) 처리될 수 있도록 쿼리를 작성
UPDATE PRODUCT
SET 원가 = (-1)*원가
WHERE 취소 여부 = 'Y';

위 쿼리를 실행 시 취소 여부가 'Y'인 데이터의 원가에 -1을 곱한 값을 원가로 대체하게 된다.
해당 쿼리는 22.08.22 에 실행했을 경우 22.08.22 까지의 매출 건 중 취소 여부가 'Y'인 데이터의 원가가 음수(-)처리 되며
다음날인 23일 매출 건에도 실행되어야 한다.

23일에 해당 쿼리가 실행되면 22일의 취소 건의 원가에 다시 -1이 곱해지므로 취소 건의 원가가 +가 된다.

쿼리 실행 시점 이전과 이후의 시점까지 적용될 수 있도록 한다면

UPDATE PRODUCT
SET 원가 = (-1)*DNJSRK
WHERE 취소 여부 = 'Y' 
AND 판매 일자 = CURDATE()-1; 

CURDATE : 현재의 일자를 알려주는 MYSQL 함수
위 쿼리가 매일 같은 시간에 실행된다면, 판매일이 전일인 데이터만 취소 건의 원가가 변경

PROCEDURE 생성

생성된 프로시저는 call 프로시저 명으로 실행 가능,
스케줄을 통해 특정 상황에서 실행할 수도 있다.

DELIMITER //
CREATE PROCEDURE 프로시저 명()
BEGIN 
쿼리 ;
END //
DELIMITER;
  • EX
DELIMITER //
CREATE PROCEDURE SALE_MINUS()
BEGIN 
UPDATE PRODUCT
SET 원가 = (-1)*원가
WHERE 취소 여부 = 'Y'
AND 판매 일자 = CURDATE() -1
END //
DELIMITER ;

0개의 댓글