버글버글

DataBase 수업 기록(8) DML 본문

Database/database 수업 기록

DataBase 수업 기록(8) DML

Bugle 2022. 9. 1. 00:00
반응형

▶ DML 

1. Data Manipulation Language
2. 데이터 조작어
3. 행(Row, Record, Tuple) 단위 삽입, 수정, 삭제
4. 트랜잭션(작업) 완료를 위해 COMMIT이 필요
5. 트랜잭션(작업) 취소를 위해 ROLLBACK 사용 가능
6. 종류
        1) INSERT INTO VALUES
        2) UPDATE SET WHERE
        3) DELETE FROM WHERE

** COMMIT을 꼭 해줘야 한다.

 

* 트래잭션

1. 트래잭션이란?

        1) 데이터베이스에서 처리되는 여러 SQL 명령들을 하나의 논리적 작업 단위로 처리하는 것이다.

        2) 작업이 시작되면 중간에 멈추지 않고, 반드시 종료해야 하는 작업 단위이다. (은행, 이체 프로그램 설치)

        3) 중간에 멈추게 되면 아무 일도 하지 않은 상태로 돌아간다.

2. 트랜젝션 제어 명령

        1) COMMIT : 

        2) ROLLBACK :

        3) SAVEPOINT :

 

▶ 행 삽입 

1. 지정한 칼럼에 데이터 삽입

INSERT INTO 테이블(칼럼1, 칼럼2) VALUES(값1, 값2)


2. 모든 칼럼에 데이터 삽입(칼럼 리스트 생략)   

INSERT INTO 테이블 VALUES(값1, 값2)

 

* 부모 테이블(관계에서 PK를 가진 테이블)에 먼저 삽입을 해야 함

* 자식 테이블(관계에서 FK를 가진 테이블)은 참조 무결성에 위배되지 않는 데이터만 삽입 가능

 

 

▶ 외부 데이터 import 

1. 테이블 선택 후 우클릭 - [데이터 임포트] 클릭

2. 체크 된 부분 설정 후, 다음(N) >  클릭

▶ 테이블 수정 

- 칼럼명B가 '선택데이터'인 칼럼명A를 '바꿀데이터'로 수정

UPDATE 테이블명
   SET 칼럼명A = '바꿀데이터'
 WHERE 칼럼명B = '선택데이터';

예시)

-- 부서번호가 1인 부서의 지역을 '인천'으로 수정
UPDATE DEPARTMENT
   SET LOCATION = '인천'
 WHERE DEPT_NO = 1;

예시) 

부서 사원
1 1
2 1
3 2
4 2
5 3

* 부서번호가 3인 부서의 부서번호를 6으로 수정
 - DEPARTMENT의 부서번호를 EMPLOYEE가 참조중이므로 수정이 안 됨
* 해결책
 1. 외래키 일시중지
 2. 수정
 3. 외래키 재시작

ALTER TABLE EMPLOYEE
    DISABLE CONSTRAINT FK_EMPLOYEE_DEPARTMENT;  -- 외래키 중지

UPDATE EMPLOYEE
   SET DEPART = 6
 WHERE DEPART = 3;

UPDATE DEPARTMENT
   SET DEPT_NO = 6
 WHERE DEPT_NO = 3;

ALTER TABLE EMPLOYEE
    ENABLE CONSTRAINT FK_EMPLOYEE_DEPARTMENT;  -- 외래키 시작

예시)

-- 부서번호 1인 사원들의 월급을 100000 인상
UPDATE EMPLOYEE
   SET SALARY = SALARY + 100000
 WHERE DEPART = 1;

-- 직급이 '과장'인 사원들의 월급을 10% 인상
UPDATE EMPLOYEE
   SET SALARY = SALARY * 1.1
 WHERE POSITION = '과장';

 

▶ 테이블 삭제 

테이블명의 칼럼명 A인 데이터 삭제

1. 참조하는 칼럼이 없으면 정상 삭제

DELETE
  FROM 테이블명
 WHERE 칼럼명 = A;

 

 

- 외래키 참조할때, ON DELETE SET NULL 값을 주면, NULL 값으로 삭제 됨

 

▶ 기타 사항 

* DDL과 DML의 차이

  DDL DML
대상 DB Object (테이블, 사용자) Row
커밋 유무(저장)
(취소 할 수 있는지)
X(자동 저장) O(수동 저장)

 

반응형