본문 바로가기
BackEnd/DB, SQL

SQL 14편: 데이터 조작어 DML(INSERT, DELETE, UPDATE)

by summer_light 2021. 12. 30.

INSERT문

INSERT INTO 테이블 이름 (열1, 열2, ...) (생략시= 테이블을 만들 때 설정한 순서)

VALUES (열1 값, 열2 값, ...);

 

특정 테이블에 데이터를 새로 추가할 때 사용한다. 열 지정을 생략하면 해당 테이블을 만들 때 설정한 열 순서대로 모두 나열되어 있다고 가정하고 데이터를 작성하면 된다. 

 

 

NULL을 INSERT하고 싶은 경우 세 가지 방법

1. NULL이라고 작성하기 - VALUES(1, 'A', NULL);

2. ''으로 표현하기 - VALUES(1, 'A', '');

3. INSERT INTO 절에서 열 이름을 생략하는 방법 - INSERT INTO 테이블 이름 (열1, 열2) VALUES(1, 'A')

 

 

날짜 데이터를 INSERT하고 싶은 경우 

1. '2021/12/30' - 운영체제의 종류나 사용하는 기본 언어군에 따라 오류가 발생할 수 있다. 

2. '2021-12-30' - 운영체제의 종류나 사용하는 기본 언어군에 따라 오류가 발생할 수 있다. 

3. TO_DATE('12/30/2021', 'DD/MM/YYYY') - 기본 언어군에 따라 날짜 표기방식이 달라 발생할 수 있는 버그를 미리 방지할 수 있다.

 

 

여러 데이터를 한 번에 INSERT하고 싶은 경우

VALUES절 없이 서브 쿼리를 사용하면 된다. (SELECT 열1, 열2 FROM 테이블B 부분)

INSERT INTO 테이블A (열1, 열2)
SELECT 열1, 열2
FROM 테이블B

 

 

 

 

UPDATE문

UPDATE 변경할테이블

SET 열=데이터, 열=데이터, ... 

WHERE 변경 대상 행 선정 조건(생략시= 전체 행)

 

저장된 데이터를 변경할 때 사용한다. UPDATE문을 실행하면 저장된 데이터가 변경되기 때문에, UPDATE문을 실행하기 전에 SELECT문을 활용하여 WHERE절을 검증하는 작업이 반드시 필요하다.

 

 

수정한 내용을 되돌리고 싶을 때: ROLLBACK 명령문 사용

ROLLBACK;

 

여러 열을 수정하고 싶은 경우 

UPDATE 테이블A
SET
열1 = (SELECT 서브쿼리),
열2= (SELECT 서브쿼리)
WHERE 조건;

 

 

 

 

DELETE문

DELETE FROM 테이블 이름

WHERE 삭제할 대상 행 선정 조건(생략시= 전체 행)

 

테이블에 있는 데이터를 삭제할 때 사용한다.

 

 

서브쿼리를 이용하여 데이터 삭제하기

DELETE FROM 테이블A
WHERE 열1 IN (SELECT 서브쿼리);

 

 

 

 

CREATE문

테이블을 새로 생성할 때

CREATE TABLE 테이블이
AS SELECT * FROM 테이블이름

 

 

급하게 테이블 형식만 복사하고 싶은 경우

WHERE 1<>1; 조건 때문에 행은 복사되지 않고, 열 구조만 같게 복사 된다.

CREATE TABLE EMP_TEMP
AS SELECT * 
FROM EMP 
WEHRE 1<>1;

 

 

 

 

DROP문

테이블을 잘못 만들었거나 지워야 할 때

DROP TABLE 테이블 이름

 

댓글