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과정은 생략하도록 하겠습니다..
[ 모든 상품의 가격을 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 도 가능하다.
개인 공부 기록용 입니다:)
'· LANGUAGE > └ Database' 카테고리의 다른 글
[ SQL ] 대소문자를 구분하지 않는 SQL 문 작성 (0) | 2024.03.11 |
---|---|
[ DB / Oracle ] 삭제(DELETE) (0) | 2024.01.20 |
[ DB / Oracle ] 정렬 (ORDER BY) (0) | 2024.01.17 |
[ DB / Oracle ] 데이터 조회(SELECT)에 조건(WHERE) 추가(2) (0) | 2024.01.16 |
[ DB / Oracle ] 데이터 조회(SELECT)에 조건(WHERE) 추가 (2) | 2024.01.15 |