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값으로 설정된다.
정리가 잘 된 글이네요. 도움이 됐습니다.