이 게시글은 패스트캠퍼스의 '데이터베이스와 SQLD 합격패스 Online' 강의를 요약한 내용입니다.
INSERT는 데이터를 입력하는 명령어이다.
DROP TABLE DISCOUNTS;
CREATE TABLE DISCOUNTS
(
DISCOUNT_ID NUMBER GENERATED BY DEFAULT AS IDENTITY
, DISCOUNT_NAME VARCHAR2(255) NOT NULL
, AMOUNT NUMBER(3, 1) NOT NULL
, START_DATE DATE NOT NULL
, EXPIRED_DATE DATE NOT NULL
);
DISCOUNTS 라는 테이블을 만들고 FIELD를 지정
INSERT INTO
DISCOUNTS (
DISCOUNT_NAME
, AMOUNT
, START_DATE
, EXPIRED_DATE
)
VALUES ( 'Summer Promotion'
, 9.5
, DATE '2017-05-01'
, DATE '2017-08-31'
);
COMMIT;
필드에 VALUES를 INSERT를 통해서 넣을 수 있다.
COMMIT은 데이터를 입력했을 때, 이 SESSION에서만 데이터가 저장되는 것이 아니라
실제 데이터베이스에 반영되도록 하는 명령어이다.
ROLLBACK은 데이터를 입력했을 때, 해당 SESSION에서만 데이터가 저장되는 명령어이다.
DBeaver 의 경우 'AUTO COMMIT MODE'가 있어서, 자동으로 COMMIT 명령어가 입력되니, 필요할 경우 이를 꺼두면 된다.
UPDATE는 데이터를 수정하는 명령어이다.
CREATE TABLE PARTS
(
PART_ID NUMBER GENERATED BY DEFAULT AS IDENTITY
, PART_NAME VARCHAR(50) NOT NULL
, LEAD_TIME NUMBER(2, 0) NOT NULL
, COST NUMBER(9, 2) NOT NULL
, STATUS NUMBER(1, 0) NOT NULL
, PRIMARY KEY (PART_ID)
);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('sed dictum',5,134,0);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('tristique neque',3,62,1);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('dolor quam,',16,82,1);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('nec, diam.',41,10,1);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('vitae erat',22,116,0);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('parturient montes,',32,169,1);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('metus. In',45,88,1);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('at, velit.',31,182,0);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('nonummy ultricies',7,146,0);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('a, dui.',38,116,0);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('arcu et',37,72,1);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('sapien. Cras',40,197,1);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('et malesuada',24,46,0);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('mauris id',4,153,1);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('eleifend egestas.',2,146,0);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('cursus. Nunc',9,194,1);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('vivamus sit',37,93,0);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('ac orci.',35,134,0);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('arcu. Aliquam',36,154,0);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('at auctor',32,56,1);
INSERT INTO PARTS (PART_NAME,LEAD_TIME,COST,STATUS) VALUES ('purus, accumsan',33,12,1);
COMMIT;
아래와 같이 데이터가 입력되어 있다.
SELECT
*
FROM PARTS
ORDER BY PART_ID
;
UPDATE PARTS
SET COST = 130
WHERE PART_ID = 1
;
COMMIT;
------------------------
UPDATE PARTS
SET LEAD_TIME = 30
, COST = 120
, STATUS = 1
WHERE PART_ID = 5
;
COMMIT;
UPDATE 명령어와 조건절을 활용하여 데이터 일부를 수정할 수 있다.
UPDATE PARTS
SET COST = COST * 1.05
;
COMMIT;
데이터의 원본을 보존하지 않고 변경하는 경우 (WHERE절로 조건을 주지 않는 경우), DBeaver에서 아래와 같이 경고를 한다.
(위험한 코드라는 뜻) 그러니 한 번더 확인하고 명령을 내리는 것이 좋다.
코드를 실행시키면 COST가 일괄적으로 5% 씩 증가했음을 알 수 있다.
DELETE는 데이터를 삭제하는 명령어이다.
CREATE TABLE SALES AS
SELECT
A.ORDER_ID
, B.ITEM_ID
, B.PRODUCT_ID
, B.QUANTITY
, B.UNIT_PRICE
, A.STATUS
, A.ORDER_DATE
, A.SALESMAN_ID
FROM ORDERS A
, ORDER_ITEMS B
WHERE A.ORDER_ID = B.ORDER_ID
;
------------------------------
SELECT *
FROM SALES
테이블과 데이터가 제대로 생성되었는지 확인
DELETE
FROM SALES
WHERE ORDER_ID = 1
AND ITEM_ID = 1
;
COMMIT;
----------------------
DELETE
FROM SALES
WHERE ORDER_ID = 1
;
COMMIT;
조건을 지정하여 데이터를 삭제할 수 있다. (ORDER_ID = 1 데이터가 모두 사라진 것을 확인할 수 있다.)
DELETE
FROM SALES
;
COMMIT;
전체행을 DELETE 할 경우 UPDATE의 경우와 마찬가지로 경고창이 뜬다.
모든 데이터가 사라졌음을 확인할 수 있다.