DML(조작어)

Lee kyu min·2024년 2월 26일

SQL

목록 보기
9/11

1. INSERT(삽입)

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

ex)

INSERT INTO actor(actor_id, first_name, last_name, last_update)
VALUES (201, '최', '민식', now());
  • actor 테이블
    actor_id 열에 201,
    first_name 열에 최,
    last_name 열에 민식,
    last_update열에 지금 시간을 저장)
  • 데이터 추가시 영구저장되는게 아니라 메모리 상에만 추가된 것이다. 영구적으로 저장하지 않으려면 rollback명령어로 취소, 영구적으로 저장할려면 commit 명령어 실행
commit;

1) 오류사항

(1) INSERT문에 지정한 열 개수와 각 열에 입력할 데이터 개수가 일치하지 않는 경우
(2) 자료형이 맞지 않는 경우
(3) 열 길이를 초과하는 데이터를 지정하는 경우

2) 지정하는 열은 생략할 수도 있다

이 때, 테이블 구성하는 열 개수나 자료형 및 길이는 맞춰야한다
ex)

INSERT INTO DEPT_TEMP	//DEPT_TEMP테이블엔 순서대로 DEPTNO, DNAME, LOC 열이있음
VALUES(60, 'NETWORK', 'BUSAN';	//DEPTNO = 60, DNAME = NETWORK, LOC = BUSAN 데이터 저장

3) 추가할 데이터에 NULL값을 넣을 수도 있다.

(VALUES에 NULL을 입력하거나 INSERT문에 NULL이 들어갈 열 자체를 입력하지 않는 경우)

4) 날짜데이터 추가시 유의 점

  • 운영체제나 언어군에 따라 날짜 표기방식이 달라 데이터 저장시 TO_DATE함수, SYSDATE(현재 시점 날짜)사용
VALUES (TO_DATE('07/01/2001', 'DD/MM/YYYY'), SYSDATE)

5) INSERT문에 서브쿼리를 사용

  • SELECT문으로 한번에 여러 행의 데이터를 추가할 수 있다.
  • 이 경우 VALUES 절은 사용하지 않는다
    ex)
INSERT INTO EMP_TEMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
	SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM, E.DEPTNO)
    FROM EMP E, SALGRADE S
    WHERE S.SAL BETWEEN S.LOSAL AND S.HISAL
    AND S.GRADE = 1;

2. UPDATE(수정)

UPDATE 변경할테이블명
SET [변경할열1] = [데이터], [변경할열2] = [데이터], ...
WHERE 데이터를 변경할 대상 행을 선별할 조건;

ex)

UPDATE ACTOR
SET FIRST_NAME = '김', LAST_NAME = '수진', LAST_UPDATE = NOW()
WHERE ACTOR_ID = 203;

1) 수정내용 되돌리기(ROLLBACK)

ROLLBACK;
  • DML 명령어(INSERT, UPDATE, DELETE) 등 실행 후 사용시 이전으로 돌아감

2) 여러 열 한번에 수정( 서브쿼리 사용 )

ex)

UPDATE DEPT_TEMP2
SET (DNAME, LOC) = (SELECT DNAME, LOC
					FROM DEPT
                    WHERE DEPTNO = 40)
WHERE DEPTNO = 40;
  • 위험성이 큰 명령어이므로 명령어 실행 전 SELECT문으로 WHERE절 조건식이 정확한지 확인

3. DELETE(삭제)

DELETE FROM 테이블이름
WHERE 삭제할 행 선별할 조건식;

ex)

DELETE FROM ACTOR
WHERE ACTOR_ID > 200;

0개의 댓글