[DB_SQL활용] 데이터 조작어(DML)

예지성준·2024년 5월 13일

DB

목록 보기
11/19
post-thumbnail

데이터를 추가, 수정, 삭제하는 데이터 조작어

INSERT: 추가
UPDATE: 수정
DELETE: 삭제
SELECT: 조회 - DQL

DML은 COMMIINT 하면 영구반영, COMMIT 전에는 ROLLBACK 가능

테이블에 데이터 추가하기

1. 실습 - 테이블 생성하기

CREATE TABLE 테이블명 AS SELECT ...

👩‍🏫참고)
DDL
CREATE 대상 - 생성
ALTER 대상 - 수정
DROP 대상 - 삭제

  • 실행과 동시에 COMMIT이 진행, 데이터 바로 반영, ROLLBACK 불가능

EMP_JOIN, DEPT_JOIN 삭제하기

DROP TABLE DEPT_JOIN;
DROP TABLE EMP_JOIN;

2. INSERT문 실습 전 유의점

3. 문법

INSERT INTO 테이블명(컬럼1, 컬럼2,...) VALUES(값1, 값2...);

  • 값: 문자 -> '값'
  • 숫자: 값

4. 실습

1) DEPT_TEMP 테이블에 데이터 추가하기

INSERT INTO DEPT_TEMP (DEPTNO, DNAME, LOC)
	VALUES(50,'WEB','SEOUL');

2) INSERT문으로 데이터 입력하기(열 지정을 생략할 때)

(컬럼1,컬럼2): 전체 데이터를 추가하는 상황, 컬럼의 순서가 동일할 때 생략 가능

대신 순서가 동일해야함 !!!

5. 테이블에 NULL 테이터 입력하기

1) NULL을 지정하여 입력하기

2) 빈 공백 문자열로 NULL을 입력하기

  • 오라클은 NULL로 기록

    👩‍🏫참고) MySQL은 비어있는 문자열 데이터로 기록
    특정 필드가 비어있는지 체크
    -> 필드명 <> " AND 필드명 IS NOT NULL;

3) 열 데이터를 넣지 않는 방식으로 NULL 데이터 입력하기


데이터 추가 없이 테이블 구조만 복사


6. 테이블에 날짜 데이터 입력하기

👩‍🏫참고) 자료형 변환 함수
TO_NUMBER(): 형식화된 문자열 숫자 -> 숫자
TO_DATE(): 형식화된 문자열 날짜 -> 날짜
TO_CHAR(): 숫자 또는 문자 -> 형식화된 문자열로 변환

TO_DATE 함수를 사용하여 날짜 데이터 입력하기

🔼 인식 못함

🔽TO_DATE 사용

SYSDATE를 사용하여 날짜 데이터 입력하기

  • 시스템의 현재 날짜와 시간

7. 서브 쿼리를 사용하여 한 번에 여러 데이터 추가하기

1) 서브 쿼리로 여러 데이터 추가하기

2) INSERT문에서 서브쿼리를 사용할 때 유의할 점
- VALUES 절은 사용하지 않는다.
- 데이터가 추가되는 테이블의 열 개수와 서브쿼리의 열 개수가 일치해야 한다.
- 데이터가 추가되는 테이블의 자료형과 서브쿼리의 자료형이 일치해야 한다.

테이블에 있는 데이터 수정하기

  • UPDATE문을 사용
  1. UPDATE 문의 기본 사용법

  2. 데이터 전체 수정하기
    참고) ROLLBACK

  3. 데이터 일부분 수정하기

서브쿼리를 사용하여 데이터 수정하기

  1. 서브쿼리로 데이터 일부분 수정하기
  2. 열 하나하나를 수정하는 경우
  3. UPDATE문의 WHERE절에 서브쿼리 사용하기
UPDATE DEPT_TEMP3
	SET (DNAME, LOC) = 
	(SELECT DNAME, LOC FROM DEPT WHERE DEPTNO=40)
WHERE DEPTNO = 40;

UPDATE DEPT_TEMP3
	SET
		LOC = (SELECT LOC FROM DEPT WHERE DEPTNO=20)
WHERE DEPTNO = 40;

테이블에 있는 데이터 삭제하기

  1. DELETE문의 기본 형식
    DELETE FROM 테이블명 WHERE 조건식;

  2. WHERE절을 사용하여 데이터 일부분만 삭제하기

--JOB에 MANAGER만 삭제하기
DELETE FROM EMP_TEMP2 WHERE JOB='MANAGER';

ROLLBACK;
-- 급여등급이 3등급인 직원들 삭제 - 서브쿼리 이용
DELETE FROM EMP_TEMP2 
WHERE EMPNO IN (SELECT E.EMPNO FROM EMP E, SALGRADE S
	WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL AND S.GRADE = 3);--비등가조회
	
SELECT * FROM EMP_TEMP2;
  1. 테이블에 있는 전체 데이터 삭제하기
CREATE TABLE EMP_TEMP2 AS SELECT * FROM EMP;

SELECT * FROM EMP_TEMP2;


DELETE FROM EMP_TEMP2;

ROLLBACK;
profile
꽁꽁 얼어붙은 한강 위로 😺

0개의 댓글