데이터 조작
1. 정보의 운영 및 처리
- data를 운영하는데 있어 삽입, 수정, 삭제로 운영을 하며 data는 반드시 현재 시점이여야 한다. 또한 무결성을 가지고 있어야 한다.
- 정보 처리
1.일괄처리 시스템 : 특정 작업을 여러개 묶어서 한방에 장점은 시스템이 안정적이나 단점은 응답시간이 느리다.
2.실시간온라인처리 : 장점은 요청 즉시 처리해주나, 단점은 시스템이 불안정 하다.
3.분산처리 : 업무를 쪼개서 처리.
2. Transaction
- TS가 종료될 때 commit이라는 것을 하는데 이는 TS의 수행작업들을 DB에 물리적으로 영구히 저장한다.
- TS가 종료될 시점에는 반드시 commit아니면 rollback이 수행된다.
- commit은 정상적인 TS이 수행되었을 때 TS에 의해 수행된 모든 작ㅇ버이 DB에 한방에 물리적으로 저장되는 것이다.
- RollBack은 TS이 비정상적인 TS 즉, 수행 시 문제가 발생한 경우를 의미하며 RollBack이 수행되었을 때 TS가 이전 시점으로 취소됨.
- select문은 TS와 관련이 없다. DML은 문장 전체가 하나의 TS으로 관련이 있다.
- DDL, DCL은 문장 1개가 TS이며, 문장 시작과 동시에 TS가 진행된다.
3. DML 문
- insert, update, delete가 있다. transaction은 일괄처리의 기준이 되며 작업의 단위 또는 작업의 모음이라고 한다. DB에서 도믄 작업을 transaction 단위로 처리한다. (이하 TS)
- Insert, Delete는 행단위 실행이며 무조건 제일 마지막 행에 추가된다.
- 행의 순서는 상관이 없다. 왜냐하면 update를 하게되면 table 구조전체를 바꿔야 하는 소요가 생길 수 있고 사실 data운용에 있어 상관이 없기 때문이다.
- Update는 열단위로 진행된다.
4. INSERT(DML)
- insert구문 이전에 반드시 desc로 table의 data type을 숙지해야한다.
- 문법
1. insert into table_name
2. values (column별 dataType에 맞춰 입력)
1. insert into table_name(column_name)
2. values (column순서에 맞춰 입력)
-
이 insert문으로 1개당 1개의 행만 추가가 됨. (어마어마한 노가다 필요...)
-
무결성 검증 column의 무결성 PK,FK(제약조건)에 맞는 data 즉, 중복값인지 등등을 확인하여 맞는 data만 넣어야 한다.
-
당연하게도 문자 및 날짜 값은 작은 따옴표로 묶어야 한다.
-
null에 관련하여 into절을 이용하는 법은 column이름을 삭제하여 null을 자동
values절은 null을 명시를 해준다. 현업에서는 values절을 활용한다.
-
null != 'null'
-
dual table 가상의 table로써 알려지지 않은 값들을 처리할 때 사용됨. 예를 들어 그냥 계산기로도 활용 가능
-
hiredate에 insert할 땐 sysdate_라는 것을 활용하면 좋음!
-
서브쿼리를 포함하는 insert문 작성 가능(교재 327p)
5. UPDATE
update table_name
set column_name = value
where 조건 // 만약 where절이 없다면 column전체를 바꿔버림.
- 서브쿼리로 2개열을 갱신할 수 있음(교재 331p)
6. DELETE
- delete문을 사용하여 table에서 기존행을 제거할 수 있다.
- 문법
delete from table_name
where 조건문 //여기도 where절이 빠지면 전체 삭제
7. DML에 관련한 issue
- talbe구조는 반드시 어떤 table을 참조하여 부모, 자식 table관계를 설정하게 되는데 이때 서로 어떤 관계인지 명확하게 알아야 함.
- 자식 table에서 부모 table에 없는 키값을 insert, update할 수 없다.
- 부모 table에서 자식table에 있는 data를 delete, update 할 수 없다.
8. DB의 동시성
- DB에서 여러 사용자가 동시에 작업을 진행할 수 있다. 그러나!!
작업하는 data가 겹칠 수 있다. 이를 방지하기 위해 "읽기일관성" 이라는 장치가 있는데 commit전까지 변경된 값이 아닌 이전의 값을 보여준다.
- 또한 "병행제어" 도 있는 TS를 LOCK을 검으로써 철저히 보호하고 TS가 종료되면 LOCK이 기다리고 있는 다음 사용자에게 넘어간다. 컴퓨터 구조적으로 TS전에 무조껀 LOCK을 할당한다.
- 또한 2명의 사용자가 동시에 같은 data에 접근했을 때 deadlock 이 발생하는데 이를 RollBack 명령어로 탈출할 수 있다.
9. DB 컴퓨터 과학
- Sequencial : 디스크 조각 삭제되어 디스크방이 빈방임에도 쓰지 못함. 이를 조각모음으로써 해결할 수 있다. 이는 DB을 일괄처리시스템을 사용하는 이유이기도 하다 계속하여 commit을 한다면 I/O가 많이 발생하여 디스크조각들이 많아지기 때문이다.
- 이는 order by가 성능을 떨어뜨리는 이유가 이 메모리 디스크 관계에서 볼 수 있다. 메모리는 선입선출의 구조로 order by가 쓰이면 대용량의 data들이 메모리에 새로 쓰이게 된다 이러면 자주 사용하는 data가 씻겨 나갈수 있다 이를 방지하기 위해 메모리에 작은 용량을 할당하는데 이것을 order by절이 충당이 안 되면 하드 디스크까지 쓰기 시작한다. 이는 하드 디스크의 i/o를 또 많이 사용하게 됨으로써 디스크 조각들이 많이 발생한다.