230808 TIL Chapter 20. DB DML

최규연·2023년 8월 8일
0

TIL

목록 보기
21/57

오늘은 DB-DML

DML ( Data Manipulation Language )

데이터를 조작하는 언어로 테이블의 값을 삽입하거나(INSERT), 수정하거나(UPDATE), 삭제(DELETE) 하는 구문이다.

INSERT

테이블에 새로운 행을 추가하는 구문

테이블에 있는 모든 컬럼에 대한 값을 INSERT할 때 사용한다.

INSERT INTO 테이블명 VALUES(데이터, 데이터, 데이터, ...) 

INSERT하고자 하는 컬럼이 모든 컬럼인 경우 컬럼명 생략 가능.
단, 컬럼의 순서를 지켜서 VALUES에 값을 기입해야 함.

EX)

INSERT INTO EMPLOYEE2
VALUES(900 , '장채현' , '901230-2345678' , 'qwer_ch@kh.or.kr' , '01012345678',
'D1', 'J7', 'S3', 4300000 , 0.2 , 200 , SYSDATE , NULL , 'N');

테이블에 내가 선택한 컬럼에 대한 값만 INSERT 할 때 사용

INSERT INTO 테이블명(컬럼명1, 컬럼명2, 컬럼명3, ... ) VALUES(데이터1, 데이터2, 데이터3, ...)

선택 안된 컬럼은 값이 NULL이 들어감. (DEFAULT 존재 시 DEFAULT 값으로 삽입됨)

EX)

INSERT INTO EMPLOYEE2(EMP_ID, EMP_NAME, EMP_NO, EMAIL, PHONE, DEPT_CODE, JOB_CODE, SAL_LEVEL, SALARY)
VALUES (900, '장채현', '901123-1234567', 'jang@kh.or.kr', '01012345678', 'D1', 'J7', 'S3', 4300000);
  • (참고) INSERT시 VALUES 대신 서브쿼리 사용 가능
    EX)
CREATE TABLE EMP_01 (
	EMP_ID NUMBER,
	EMP_NAME VARCHAR2(30),
	DEPT_TITLE VARCHAR2(20)
);

서브쿼리(SELECT) 결과를 EMP_01 테이블에 INSERT
--> SELECT 조회 결과의 데이터 타입, 컬럼 개수가 INSERT 하려는 테이블의 컬럼과 일치해야함.


UPDATE

내용을 바꾸거나 추가해서 최신화, 새롭게 만드는 것으로 테이블에 기록된 컬럼의 값을 수정하는 구문

UPDATE 테이블명 SET 컬럼명 = 바꿀값
[WHERE 컬럼명 비교 연산자 비교값]

EX)

UPDATE DEPARTMENT2
SET DEPT_TITLE = '전략기획팀'
WHERE DEPT_ID = 'D9';
  • 주의!
    조건절을 설정하지 않고 UPDATE 구문 실행 시 모든 행의 컬럼값이 변경.

여러 컬럼을 한번에 수정 시 콤마(,)로 컬럼을 구분하면 됨.
EX)

UPDATE DEPARTMENT2
SET DEPT_ID = 'D0',
DEPT_TITLE = '전략기획2팀'
WHERE DEPT_ID = 'D9'
AND DEPT_TITLE = '전략기획팀';

UPDATE 시에도 서브쿼리를 사용 가능

UPDATE 테이블명 SET 컬럼명 = (서브쿼리)

EX)

UPDATE EMPLOYEE2 SET
SALARY = (SELECT SALARY FROM EMPLOYEE2 WHERE EMP_NAME = '유재식'),
BONUS = (SELECT BONUS FROM EMPLOYEE2 WHERE EMP_NAME = '유재식')
WHERE EMP_NAME = '방명수';

MERGE(병합)

구조가 같은 두개의 테이블을 하나로 합치는 기능
테이블에서 지정하는 조건의 값이 존재하면 UPDATE
조건의 값이 없으면 INSERT 됨


DELETE

테이블의 행을 삭제하는 구문
만약 WHERE 조건을 설정하지 않으면 모든 행이 다 삭제됨.

DELETE FROM 테이블명 WHERE 조건설정

TRUNCATE

테이블의 전채 행을 삭제하는 DDL (DML 아니고 DDL이다.)
DELETE 보다 수행속도가 더 빠르다.
BOLLBACK을 통해 복구할 수 없다.

1개의 댓글

comment-user-thumbnail
2023년 8월 8일

정보에 감사드립니다.

답글 달기