IT STUDY LOG

[Oracle] DML 본문

computer science/database

[Oracle] DML

roheerumi 2023. 9. 1. 16:38

# INSERT 

- 테이블에 새로운 행을 삽입하는 명령어 

  

하나의 행 삽입 

INSERT INTO dept 
VALUES (50, 'EDUCATION', 'D1'); 
SELECT * FROM dept; 

INSERT INTO dept(dname, deptno) 
VALUES ('MARKETING', 60); -- 입력하지 않은 값은 NULL로 입력 
       
INSERT INTO dept 
VALUES (70, 'FINANCE', NULL); -- 명시적으로 NULL로 입력 가능 

COMMIT; -- 지금까지 변경된 작업을 반영 
SELECT * FROM dept;

  

특정 값을 갖는 행 삽입 

- 단일행 함수를 활용해 입력 가능 (그룹함수는 불가) 

  • 특정 값을 갖는 행 삽입 
  • 현재 사용자 이름 입력: USER 함수 사용 
  • 날짜 값을 입력할 때는 TO_DATE로 변환 

  

서브쿼리를 사용해 한 번에 여러행 삽입 

INSERT INTO dept 
(SELECT deptno+5, dname||'_1', null FROM dept); 

COMMIT; 
SELECT * FROM dept;

  

# UPDATE 

- 테이블에 있는 행을 변경  

 

WHERE절 생략 시 전체 행 변경 

 

  

특정 행 수정 

UPDATE dept 
SET    loc_code = 'E1' 
WHERE  loc_code IS NULL; 

COMMIT; 
SELECT * FROM dept; 

ROLLBACK; -- 마지막 COMMIT 시점으로 롤백 
SELECT * FROM dept;

 

서브쿼리를 이용한 행 변경 

- 비상관 업데이트, 상관 업데이트 존재  

  

# DELETE 

- 테이블에 있는 행을 삭제  

 

WHERE절 생략 시 전체 행 삭제 

DELETE  
FROM   dept;

  

특정 행 삭제 

DELETE dept 
WHERE  dname LIKE '%1'; 

SELECT * FROM dept; 
COMMIT;

  

서브쿼리를 이용한 행 삭제 

- 비상관 딜리트, 상관 딜리트 존재  

  

# MERGE 

- UPDATE + INSERT, 테이블에 이미 데이터가 존재시 UPDATE하고 새 데이터면 INSERT  

Comments