[ DB / Oracle ] 수정(Update), Auto-Commit 해제 방법

2024. 1. 19. 17:06· LANGUAGE/└ Database

환경 : DBeaver

 

수정(Update) : 데이터의 값을 수정하고자 할 때 사용

UPDATE 테이블명 SET 변경구문 [ WHERE 조건 ] 

 

(참고) 해당 글에서 사용될 데이터베이스 생성 및 데이터 삽입 구문 입니다.

CREATE TABLE vehicle (
  vehicle_id NUMBER PRIMARY KEY,	--차량 고유 숫자
  model_name VARCHAR2(30) NOT NULL,	--차량 모델
  vehicle_type VARCHAR2(15) CHECK(vehicle_type IN ('Sedan', 'SUV', 'Truck', 'Motorcycle')),
  price NUMBER,	--차량 종류
  manufacture_date DATE,	--차량 제조일자
  registration_expire_date DATE	--차량 등록 만료일
);
DROP TABLE vehicle;

INSERT INTO vehicle VALUES(1, 'Toyota Camry', 'Sedan', 25000, '2021-01-15', '2023-01-17');
INSERT INTO vehicle VALUES(2, 'Honda CR-V', 'SUV', 30000, '2020-12-10', '2023-12-10');
INSERT INTO vehicle VALUES(3, 'Ford F-150', 'Truck', 40000, '2020-11-05', '2020-12-05');
INSERT INTO vehicle VALUES(4, 'Harley-Davidson Sportster', 'Motorcycle', 12000, '2022-02-20', '2023-02-20');
INSERT INTO vehicle VALUES(5, 'Tesla Model Y', 'SUV', 50000, '2021-03-30', '2024-03-30');
INSERT INTO vehicle VALUES(6, 'Chevrolet Silverado', 'Truck', 35000, '2020-08-15', '2023-08-15');
INSERT INTO vehicle VALUES(7, 'Yamaha MT-07', 'Motorcycle', 8000, '2021-05-01', '2023-02-01');
INSERT INTO vehicle VALUES(8, 'Nissan Altima', 'Sedan', 23000, '2020-07-10', '2023-07-15');
INSERT INTO vehicle VALUES(9, 'Ducati Panigale V4', 'Motorcycle', 25000, '2022-04-05', '2024-04-05');
INSERT INTO vehicle VALUES(10, 'Jeep Wrangler', 'SUV', 35000, '2020-10-01', '2023-11-30');

 해당 실습을 들어가기 전, UPDATE 구문을 바로 쓰게되면, 기존에 만들어둔 값이 변경되어 저장(auto commit)되기 때문에 실습에는 번거로움이 있습니다. 따라서, 수동 저장으로 바꾼 후 진행하겠습니다. 

 

++  Commit과 Rollback을 계속 해줘야 하는데, 적용되지 않는다면 프로그램 재시작 해주세요..

변경사항 커밋 팝업이 뜨는데, 아니오(N) 누르고 프로그램 재시작 해줘야 한다. (심지어 두 번 뜸..)

 

++ Commit/Rollback과정은 생략하도록 하겠습니다..

윈도우(W) → 설정  → 연결  → 연결 유형  → Auto-commit by default 체크 해제 


 

[ 모든 상품의 가격을 0원으로 변경 ]

SELECT * FROM vehicle;	-- 이전 데이터 확인
commit; -- 작업내용 저장
UPDATE vehicle SET price = 0;	-- 가격을 0으로 변경
SELECT * FROM vehicle;	-- 변경된 값 확인
Rollback; -- 이전 저장으로 돌아가기 (재실행 필수)

   (+) 작업내용을 저장(Commit)해 준 후 데이터 값을 변경해줘야, 이전 데이터의 값을 기억하고 있어 되돌아(Rollback) 갈 수 있습니다. 

 

[ vehicle_id가 1인 차량의 가격을 100원으로 변경하기 ]

UPDATE vehicle SET price = 100 WHERE vehicle_id=1;

   (+) WHERE 절에 조건을 주어 해당 데이터의 값을 변경할 수 있게 해준다.

   (+) (주의) vehicle_id에 없는 값을 주어도 update문이 실행된다. 

 

 

 

[Jeep Wrangler의 가격을 100원, 종류를 Sedan 으로 바꾸기]

UPDATE vehicle SET price = 100, VEHICLE_TYPE = 'Sedan' WHERE MODEL_NAME = 'Jeep Wrangler';

 

 

 

[Jeep Wrangle의 가격을 10% 인상]

UPDATE VEHICLE SET price = (price + (price*0.1)) WHERE MODEL_NAME = 'Jeep Wrangler';

  (+) 오라클에는 누적연산이 존재하지 않으므로, 계산식을 사용할 땐 풀어서 적어줘야 한다. 

  (+) 원래 가격인 35,000원에서 38,500원이 된 것을 확인할 수 있다. 

  (+) 계산식은 PRICE*110/100, PRICE*1.1 도 가능하다.


 

 

 

 

 

 

 

개인 공부 기록용 입니다:)

728x90