05. DML

CHOISUJIN·2023년 1월 12일
0
post-thumbnail

DML (Data Manipulation Language)

데이터 조작 언어

📍 INSERT

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

1) 테이블에 모든 컬럼에 대한 값을 INSERT할 때

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

  • INSERT 하고자 하는 컬럼이 모든 컬럼인 경우 컬럼명 생략 가능!
  • 단, 컬럼의 순서를 지켜서 VALUES에 값을 기입해야 함!!
INSERT INTO EMPLOYEE2  
VALUES('900', '장채현', '901230-2345678', 'jang_ch@kh.or.kr',
		'01055569512', 'D1', 'J8', 'S3', 
        4300000, 0.2,'200', SYSDATE, NULL, 'N');

2) 테이블에 선택한 컬럼에 대한 값을 INSERT할 때

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

  • 선택 안한 컬럼은 NULL이 들어감
  • 단, DEFAULT 존재할 시 DEFAULT로 설정한 값이 삽입
INSERT INTO EMPLOYEE2(EMP_ID, EMP_NAME, EMP_NO, EMAIL,
		PHONE, DEPT_CODE, JOB_CODE, SAL_LEVEL, SALARY)  
VALUES('900', '강채현', '901123-2345678', 'jang_ch@kh.or.kr',  
        '01023456321', 'D1', 'J7', 'S3', 4300000);

+ VALUES 대신 서브쿼리 사용 가능

  • SELECT 조회 결과의 데이터 타입, 컬럼 개수가 INSERT 하려는 테이블의 컬럼과 일치해야 함

INSERT INTO 테이블명
(서브쿼리)

CREATE TABLE EMP_01( 
	EMP_ID NUMBER, 
    EMP_NAME VARCHAR2(30), 
    DEPT_TITLE VARCHAR2(20) 
);  

-- 서브쿼리용 SELECT 구문 
SELECT EMP_ID, EMP_NAME, DEPT_TITLE 
FROM EMPLOYEE2 
LEFT JOIN DEPARTMENT2 ON(DEPT_CODE = DEPT_ID) 

-- 서브쿼리 결과를 EMP_01 테이블에 INSERT 
INSERT INTO EMP_01 
(SELECT EMP_ID, EMP_NAME, DEPT_TITLE 
FROM EMPLOYEE2 
LEFT JOIN DEPARTMENT2 ON(DEPT_CODE = DEPT_ID));

📍 UPDATE

테이블에 기록된 컬럼의 값을 수정 또는 추가(NULL일 경우)하는 구문

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

  • UPDATE할 컬럼과 조건을 WHERE절에서 정하기 때문에 WHERE 조건 중요!
  • 조건절을 설정하지 않고 UPDATE 구문 실행 시 모든 행의 컬럼값이 변경
UPDATE EMPLOYEE2  
SET DEPT_CODE = 'D6' 
WHERE EMP_NAME = '문기혁';
  • 여러 컬럼을 한번에 수정할 시 콤마(,)로 컬럼을 구분하면 됨
UPDATE DEPARTMENT2  
SET DEPT_ID = 'D0', 	
	DEPT_TITLE ='전략기획2팀' 
WHERE DEPT_ID = 'D9' AND DEPT_TITLE = '전략기획팀';

+ 서브쿼리 사용 가능

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

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

📍 DELETE

테이블의 행을 삭제하는 구문

DELETE FROM 테이블명 WHERE 조건설정;

DELETE FROM EMPLOYEE2 
WHERE EMP_NAME = '채현';
  • WHERE 조건을 설정하지 않으면, 모든 행이 삭제됨
DELETE FROM EMPLOYEE2; --전체 삭제

📍 TRUNCATE

TRUNCATE TABLE EMPLOYEE3;

  • ROLLBACK해도 복구되지 않음!
  • DELETE : 휴지통 버리기 / TRUNCATE : 완전 삭제

📍 (SELECT)

SELECT는 DDL 또는 DML이다 !
--> 보통 DDL로 분류..!

📍 MERGE

*** 참고만 !

  • 구조가 같은 두 개의 테이블을 하나로 합치는 기능.
  • 테이블에서 지정하는 조건의 값이 존재하면 UPDATE, 조건의 값이 없으면 INSERT됨
profile
매일매일 머리 터지는 중 ᕙ(•̀‸•́‶)ᕗ

0개의 댓글