DATA BASE 3일차 강의

김용진·2023년 7월 25일
0

1. 데이터 조작어(Data Mainpulation Language, DML)

  • 데이터 조회 및 변형을 위한 명령어
  • select, update, insert, delete 가 있다.

SELECT는 수 많이 사용하였으므로 다른명령어를 알아보고자 한다.

INSERT 명령어

 insert into 테이블명 values(값1, 값2, ...)
 
 
 insert into 테이블명 (컬럼1, 컬럼2, ...)
	values(값1, 값2, ...)

컬럼을 따로 지정하는 경우는 보통 수 많은 컬럼에 원하는 컬럼만 값을 넣도록 지정할때 사용한다.

UPDATE 명령어

update 테이블명 set 컬럼1 = 값1, 컬럼2 = 값2, ....
WHERE 조건

DELETE 명령어

delete(from) 테이블명 where 조건;

UPDATE, DELETE 같은 경우, 지정하지 않으면 모두 바꾸거나, 지워버리는 특성을 가지기에,
WHERE로 명확하게 찝어주는것이 중요하다.

2. Drop vs Truncate vs Delete

  • Drop : 테이블 존재 자체가 삭제된다.

  • Truncate : 데이터만 통 삭제
    -> 테이블이 삭제되는 명령어는 아니고 테이블 안에 들어있던
    모든 레코드들을 제거하는 명령어이다.
    -> 테이블을 Drop했다가 Create한다.
    -> 모든 행을 삭제하는 가장 빠르고 효율적인 방법

  • Delete : 데이터 골라서 삭제
    -> delete는 truncate처럼 테이블 구조는 남기고 안의 데이터만
    삭제한다.
    -> delete는 부분삭제 가능
    -> 내부방식이 다르다. 한줄 한줄 삭제한다.

    Delete는 한줄 한줄 삭제하는 방식이기에 걸리는 시간이 좀 더 걸린다

3가지의 차이점을 구분지어 나열해 보았다.

3. Commit, Rollback

3-1. Commit

  • 모든 작업을 정상적으로 처리하겠다고 확정하는 명령어이다.
  • Transaction의 처리과정을 데이터베이스에 반영하기 위해서, 변경된 모든 내용을 모두 영구 저장한다.
  • Commit을 수행하면, 하나의 트랜젝션 과정을 종료하게 된다.
  • Transaction(Insert, Update, ...)작업 내용을 실제 DB에 저장한다.
  • 이전 데이터가 완전히 적용된다.
  • 모든 사용자가 변경한 데이터의 결과를 볼 수 있다.

3-2. Rollback

  • 작업중에 문제가 발생했을 떄, 트렌젝션의 처리 과정에서 발생한 변경 사항을
    취소하고, 트랜잭션 과정을 종료시킨다
  • 트랜잭션으로 인한 하나의 묶음 처리가 시작되기 이전의 상태로 되돌린다.
  • Transaction(Insert, Update, Delete) 작업 내용을 취소한다.
  • 이전 Commit 한 곳 까지만 반영한다.
  • 트랜잭션 작업 중 하나라도 문제가 발생하면 모든 작업을 취소해야 하기 때문에
    하나의 논리적은 작업문제로 구성 해 놓아야 한다.
  • 문제가 발생하면, 논리적인 작업 단위를 모두 취소해버리면 되기때문이다.

3-3. Commit, Rollback 명령어의 장점

  • 데이터 무결성이 보장된다.
  • 논리적으로 연산된 작업을 그룹화 할 수 있다.

3-4. 자동 Rollback 되는 경우

  • 비정상적인 종료

3-5. 자동 Commit 되는 경우

  • create, alter, drop, truncate - > DDL문
  • grant, revoke 권한 --> DCL문
  • insert, update,delete 작업 후, commit하지 않고, 오라클을 정상 종료시에
    commit 명령어를 입력하지 않아도 정상 commit한 후 오라클 종료

4. 데이터 제어어(Data Control Language)

  • 사용자에게 권한 생성 혹은 권한 삭제 같은 명령어
  • grant : 권한 생성
  • revoke : 권한 삭제

5. 컬럼 속성(무결성 계약조건)

  • not null : null값이 입력되지 못하게 하는 조건
  • unique : 중복된 값이 입력되지 못하게 하는 조건
  • check : 주어진 값만 허용하는 조건
  • primary key : not null + unique + index의 의미
  • foreign key : 다른 테이블의 필드(컬럼)을 참조해서 무결성을 검사하는
    조건

6. 기본키(Primary Key,PK)

  • 기본키 역시 기본적인 제약조건들을 테이블을 생성할 때 같이 정의한다.
  • 테이블당 하나만 정의가 가능하다.(두개 이상의 PK는 조합키/복합키 라고부른다. 묶어서 하나로 본다)
  • 주키/기본키/식별자/PK 등으로 부른다.
  • PK는 NOT NULL + Unique + Index
  • 자동 Index가 생성되는데 이는 검색 키로서 검색 속도를 향상시킨다.

6-1. 기본키 선언 방법

create table pkTest(
	pkCol1	varchar2(10) Primary
);


create table pkTest(
	pkCol1	varchar2(10) 
		constraints pk이름 Primary
);

create table pkTest(
	pkCol1	varchar2(10) Primary,
	pkCol2	varchar2(10) Primary,
	pkCol3	varchar2(10) Primary,
	constraints pk이름 primary key(pkCol1 )
);

7. FOREIGN KEY

  • 외부키/외래키/참조키/외부 식별자/FK등으로 불린다.
  • FK가 정의된 테이블을 자식 테이블이라고 칭한다.
  • 참조되는 테이블 즉, PK가 있는 테이블을 부모 테이블 이라고한다.
  • 부모 테이블은 PK컬럼에 존재하는 데이터만 자식 테이블에 입력할 수 있다.
  • 부모테이블은 자식의 데이터나 테이블이 삭제 된다고 영향을 받지 않는다.
  • 참조하는 데이터 컬럼과 데이터 타입은 반드시 일치해야한다.
  • 참조할 수 있는 컬럼은 기본키(PK)이거나 UNIQUE만 가능하다.
  • 보통 PK랑 엮어서 사용한다.

7-1. 외래키 정의

1안
	create table fk_test(
		department_id	varchar2(10)
		constraints fk이름 
        references departments(department_id)
	);

2안
	create table fk_test(
		department_id	varchar2(10),
		....			,
		constraints dept_fk foreign key(department_id)
		reference departments(department_id)
	);

7-2. 삭제 옵션

-ON DELETE CASCADE
-> 참조되는 부모 테이블의 행에 대한 DELETE를 허용 한다.
즉, 참조되는 부모테이블 값이 삭제되면 연쇄적으로 자식 테이블 값
역시 삭제된다.

-ON DELETE SET NULL
-> 참조되는 부모 테이블의 행에 대한 DELETE를 허용 한다.
즉, 부모테이블 값이 삭제가 되면 해당 참조하는 자식 테이블의 값들은
NULL값으로 설정된다.

profile
메모리폼

1개의 댓글

comment-user-thumbnail
2023년 7월 25일

정리가 잘 된 글이네요. 도움이 됐습니다.

답글 달기