본문으로 바로가기

[DB&SQL] 데이터조작(DML)

category Personal Studying~/DB & SQL 2021. 1. 5. 09:53
728x90
반응형
SMALL

DML


행 추가 삭제 수정

트랜잭션: 데이터 구조의 변경작업을 일으키는 작업

1.SELECT-트랜잭션에 영향을 미치지 않음 

*DDL

*DCL

:문장 하나가 1개의 트랜잭션 ,DML 같은경우 롤백으로 복구 가능하나  DDL. DCL은 불가능!!!

2.INSERT (가장 많이 error 발생)

insert into 테이블이름(데이터순서 및 타입) values (데이터,데이터,데이터);

:데이터 삽입시, 무결성 검사

  1. Column 무결성
  2. pk.fk (제약조건) 무결성

[삽입]

into 절 column  삭제 => 자동으로 null 삽입

values 절 null 직접 삽입

 

[행 단위 연산수행]

*INSERT

3.DELETE

[열 단위 연산수행]

4.UPDATE

더보기

UPDATE 테이블 이름

 SET  해당컬럼=새로운 데이터

WHERE  조건절;

 

emp(자식)

e_id      d_id                 1)insert        10->o  40->x

100       10                      2)update     10->o   10->50 x

101       20                     3)delete       10->o

102       10

 

d_id   dname(부모)

10     a                   1)insert     10-> x     40->o

20     b                   2)update  10->20 x    30->50 o.x (자식에서 참조하지 않으면 업뎃가능)

30     c                  3)delete    10->x

    

 

DB의 병행 제어

DB의 데이터 보호 기능

   왼쪽은 업데이트 명령어 쓴 데이터 오른쪽은 기존 데이터

오른쪽 기존DB가 왼쪽의 트랜잭션중인 DB에 껴들기 위해 업데이트를 진행하였으나 LOCK 걸린 상태이므로 커서만 깜빡거림을 확인할수 있음

트랜잭션이 진행됨과 동시에 해당 db에는 lock 이 걸림

 

DB의 동시성 제어

동읠 테이블 안에서의 서로 다른 ID를 트랜잭션 중임

 

DB 의 DEADLOCK  발생시 

한쪽의 DB를 rollback 하던지 한쪽의 트랜잭션을 종료하기 위해서 commit 해줘야함

 

트랜잭션의 크기가 작을시

lock 의 수가 많아짐으로 동시성 또한 상승됨

트랜잭션의 크기가 클시

lock 의 수가 떨어짐으로 동시성 또한 감소

 

DDL


 (구조를 가지고 있는 애들.객체)

1.CREATE

더보기

create  table  테이블명(컬럼명,컬럼타입(length));

*컬럼타입

char() 성능우선시  저장공간 선정시 생각 많이 해야함!!

varchar2() 저장공간 활용 

number(9,2) 9개 자리중 2번짜 자리 부터 소수점

date

timestamp: 소수점 이하 초까지 포함하는 날짜(년월일시간분초 까지 확인가능)

ex)

hire_date timestamp

[서브쿼리 수행시]

create  는 데이터와 데이터의 구조까지 가져옴

더보기

create table dept80
    as
    select employee_id, last_name,
       salary*12 ANNSAL,
      hire_date
    from       employees
   where department_id=80;

 

insert 데이터의 값만 가져옴

insert into 테이블명 values (테이터값,데이터값);

더보기

insert into dept80
select employee_id, last_name, salary*12, hire_date
from employees
where department_id=80

 

2.ALTER

더보기

ALTER TABLE 테이블명 add (컬럼명 컬럼타입)

*옵션

modify:데이터 타입 변경 /길이변경 (기존 데이터 존재시 유의해야함)

더보기
ALTER TABLE 테이블명 modify (컬럼명 컬럼타입)

DROP: 데이터 삭제/ 컬럼구조 삭제/저장공간 삭제 

ALTER TABLE 테이블명  DROP COLUMN 컬럼명;


DROP은 DDL로서 수행시 테이블 전체의 LOCK 을 걸게된다.

이로서 DB의 동시성이 하락함..현업에서 자주사용치 않음


DROP 대신 UNUSED를 사용함

데이터와 공간의 삭제가 안되며, 오로지 상태정보만 변경(DB가 데이터를 인식할수 없도록함)

동시성이 극대화 되며(LOCK 이 걸리지 않음), 그러나 공간이 남아있음

더보기

ALTER TABLE 테이블명 
 SET UNUSED (컬럼명);

이때문에 DROP과 UNUSED를 합친 아래와 같이 많이 사용함

더보기
ALTER TABLE 테이블명
  DROP UNUSED COLUMNS;

 

3.DROP

더보기
DROP TABLE 테이블명;

참조하고있는 테이블이 존재시 삭제가 불가능.

 

DELETE        DATA            저장공간남음              ROLLBACK 가능

 

TRUNCATE   DATA            테이블구조남음,DATA저장공간 삭제     ROLLBACK 불가/백업 해야됨

DB에서의 성능이 가장 우수

 

DROP         DATA/테이블구조        ALL삭제                            ROLLBACK 불가/백업 해야됨

 

 

728x90
반응형
LIST

'Personal Studying~ > DB & SQL' 카테고리의 다른 글

[DB&SQL] DCL & 제약조건 & TOP-N & 시퀀스  (0) 2021.01.06
[DB & SQL] 그룹함수,서브쿼리  (0) 2021.01.04
[DB &SQL] 셀프조인  (0) 2020.12.31
[DB&SQL] alias-리터럴-where  (0) 2020.12.30
조인  (0) 2020.12.24