상세 컨텐츠

본문 제목

Oracle - UPDATE 실습1

IT/DBMS

by TMI1 2025. 7. 10. 16:58

본문

SELECT USER
FROM DUAL;
--==>> SCOTT

--■■■ UPDATE ■■■-- 

--1. 테이블에서 기존 데이터를 변경하는 구문.

-- 2. 형식 및 구조
/*
UPDATE 테이블명
SET 컬럼명=변경할값[, 컬럼명=변경할값, ...]
[WHERE 조건절] --작성순서1
*/

SELECT *
FROM TBL_SAWON;

--○ TBL_SAWON 테이블에서 사원번호 1003번 사원의
--   주민번호를 [000417] -> 9904171234567]로 수정한다.

UPDATE TBL_SAWON
SET JUBUN='9904171234567'
WHERE SANO=1003; 
--==>> 1 행 이(가) 업데이트되었습니다.

SELECT *
FROM TBL_SAWON;
-- 1003	유한	9904171234567	2011-01-03	3000

-- 실행 후 COMMIT 또는 ROLLBACK 을 반드시 선택적으로 실행
COMMIT;
-- 커밋 완료.

DESC TBL_SAWON;
--==>> 
/*
이름       널? 유형           
-------- -- ------------ 
SANO        NUMBER(4)    
SANAME      VARCHAR2(30) 
JUBUN       CHAR(13)     
HIREDATE    DATE         
SAL         NUMBER(10)  
*/
--○ TBL_SAWON 테이블에서 1005번 사원의 입사일과 급여를
-- 각각 2018-07-10, 7700 으로 변경한다.

UPDATE TBL_SAWON
SET HIREDATE= TO_DATE('2018-07-10', 'YYYY-MM-DD')
    ,SAL = 7700
WHERE SANO=1005;
--==>> 
-- 1005	아이유	9302022234567	2018-07-10	7700

COMMIT;

-- TBL_INSA 테이블 복사(데이터복사)
CREATE TABLE TBL_INSABACKUP
AS
SELECT *
FROM TBL_INSA;
-- Table TBL_INSABACKUP이(가) 생성되었습니다.

DESC TBL_INSABACKUP;
/*
이름       널?       유형           
-------- -------- ------------ 
NUM      NOT NULL NUMBER(5)    
NAME     NOT NULL VARCHAR2(20) 
SSN      NOT NULL VARCHAR2(14) 
IBSADATE NOT NULL DATE         
CITY              VARCHAR2(10) 
TEL               VARCHAR2(15) 
BUSEO    NOT NULL VARCHAR2(15) 
JIKWI    NOT NULL VARCHAR2(15) 
BASICPAY NOT NULL NUMBER(10)   
SUDANG   NOT NULL NUMBER(10)   

*/
--○ TBL_INSABACKUP 테이블에서 직위가 과장과 부장만 수당 10% 인상
SELECT NAME, JIKWI, SUDANG, SUDANG *1.1 --"10인상된 수당" 
UPDATE TBL_INSABACKUP
SET SUDANG = SUDANG + SUDANG *1.1 
WHERE JIKWI IN('과장','부장');

UPDATE TBL_INSABACKUP
SET SUDANG = SUDANG *1.1 --"10인상된 수당" 
WHERE JIKWI IN('과장','부장');
-- 15개 행 이(가) 업데이트되었습니다.
-- 위의 행과 비교 후 커밋

COMMIT;

--○ TBL_INSABACKUP 테이블에서 전화번호가 016, 017, 018, 019 로 시작하는
--   전화번호인 경우 이를 모두 010으로 변경한다.
--   EX) 국번만 변경하는거 

DESC TBL_INSABACKUP;

SELECT *
FROM TBL_INSABACKUP;

SELECT *
FROM TBL_INSABACKUP
WHERE TEL IN (016, 017, 018, 019); -- X 
-- 에러
/*
ORA-01722: invalid number
01722. 00000 -  "invalid number"
*Cause:    The specified number was invalid.
*Action:   Specify a valid number.
*/

SELECT *
FROM TBL_INSABACKUP
WHERE TEL IN ('016', '017', '018', '019'); 
-- 조회결과없음 전화번호가 016..  인 경우만 찾는거니까

UPDATE TBL_INSABACKUP
SET 전화번호 = 기존 전화번호의 앞 세자리만 '010'으로 수정하고 나머지 번호는 그대로 유지 
WHERE 전화번호 앞 3자리가 중 하나일 경우;

UPDATE TBL_INSABACKUP
SET 전화번호 = 기존 전화번호의 앞 세자리만 '010'으로 수정하고 나머지 번호는 그대로 유지 
WHERE SUBSTR(TEL, 1, 3) IN ('016~019');

UPDATE TBL_INSABACKUP
SET TEL='010' || SUBSTR(TEL,4) 
WHERE SUBSTR(TEL, 1, 3) IN ('016', '017', '018', '019'); 
-- 24개 행 이(가) 업데이트되었습니다.

COMMIT; 
커밋 완료.

'IT > DBMS' 카테고리의 다른 글

Oracle - 테이블 전체 컬럼 이름UPDATE  (1) 2025.07.11
Oracle - UPDATE 실습2  (0) 2025.07.10
Oracle - DEFAULT 표현식 실습  (1) 2025.07.09
Oracle - NOT NULL 실습  (1) 2025.07.09
Oracle - FOREIGN KEY 설정 실습  (0) 2025.07.09

관련글 더보기

댓글 영역