버글버글
DataBase 수업 기록(8) DML 본문
▶ 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(수동 저장) |
'Database > database 수업 기록' 카테고리의 다른 글
DataBase 수업 기록(9) 시퀀스 (0) | 2022.09.03 |
---|---|
DataBase 수업 기록(8.5) DML예시 (0) | 2022.09.02 |
DataBase 수업 기록(7) DDL - 테이블 변경 (0) | 2022.08.31 |
DataBase 수업 기록 (6) SCOTT 계정 초기화 (0) | 2022.08.30 |
DataBase 수업 기록 (5) 모델링(Modeler) (0) | 2022.08.29 |