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;
커밋 완료.
댓글 영역