02.15 [DB] Transaction

KDH59·2024년 2월 15일

[DB]

목록 보기
3/5

Transaction

  • 데이터 베이스에서 사용되는 쪼갤 수 없는 업무처리의 단위
  • 하나의 작업 내부의 과정이 잘못되면 전부 취소 된다. ex) 송금

Roll back

  • 모든 작업을 다시 돌려 놓겠다는 명령어

commit

  • 모든 작업을 정상적으로 처리하겠다는 명령어

commit 과 Roll back은 데이터(DML)에 한정된다.

DCL, DDL 은 되돌릴 수 없다.

aurocommit 확인 방법

  • auto commit 설정 여부 -> select @@autocommit;

  • set autocommit = 1; -- autocommit 설정 on

  • set autocommit = 0; -- autocommit 설정 off

constraint (제약조건)

  • 제약조건은 컬럼에 데이터를넣을 경우 특정한 조건을 만족시켜야 할 경우 사용 한다.

1. Primary key ( 기본키 제약조건 )

  • 중복과 null을 허용하지 않음
  • 테이블 종속적이다. (하나의 테이블에서 하나의 PK)
  • 하나의 컬럼으로 하나의 PK를 만들 수 있지만 여러개의 컬럼을 합쳐서 만들 수 도 있다.( 최대 16개)

1-1 primary key 생성 방법

  • 테이블 생성 시 함께 생성 (가장 많이 활용)


    create table pktest(
    first_col int(3)
    primary key,_
    second_col varchar(4)
    );

  • 테이블 생성 후 추가
    alter table [테이블명] add constraint 제약조건 타입 ;

alter table employees add constraint primary key (emp_no);
alter table employees add primary key (emp_no);
  • upsert : 중복되는 키 값이 있으면 수정, 없으면 삽입

2. combination key (복합키)

  • 하나의 컬럼으로 하나의 키본키를 구성하는 것이 가장 좋으나.
    어쩔수 없는 경우 다수의 컬럼을 조합해서 기본키를 생성
    - 외래키를 이용해 복합키를 만드는 경우가 있는데, 이경우 UPDATE 나 INSERT에 제한을
    주므로 사용하지 않는 것이 좋다

3. not null

  • null을 허용하지 않음
    - not null은 제약조건이지만 속성으로 취급한다
    -- alter table [테이블명] modify 컬럼명;
 alter table pk_test modify second_col varchar(4) not null;
  • 제약조건 확인
select *from information_schema.TABLE_CONSTRAINTS where TABLE_NAME = 'pk_tow_test';
  • 제약조건 삭제
  • alter table [테이블] Drop [제약조건 종류];
alter table pk_tow_test drop Primary key;

Relation Data Base Mangerment System

  • 관계형 데이터 베이스

1. 참조 제약 조건 ( 외래키 제약조건 )

1) 테이블 생성 시 추가

2) 테이블 생성 후 추가

  • alter table [테이블명] add constraint 제약조건종류 references [가저올 테이블](가져올 컬럼)
alter table child_table add constraint foreign key(user_id) references parent_table(user_id);
  • 부모자식 관계란 부모의 기본키를 자식이 가져다쓰는 관계이다.

  • 이때 부모의 기본키를 나의 기본키로 사용하는 경우를 식별관계라고 한다

  • 그렇지 않을 경우는 비식별 관계 라고 한다.

  • 식별 관계는 1:1 관계에서 사용

2. 연계 참조 무결성 제약조건

  • 부모자식간에 논리적으로 앞 뒤말이 맞아야한다는 제약조건
    -> 참조한 상태로 논리적으로 연결되어 있다.
  • 부모한테 없는 값을 외래키에 넣으려고 하면 에러가 나타난다
    -> 왜? 연계 참조 무결성 제약조건이 깨지므로
    -> 부모테이블의 기본키는 user04가 없지만, 자식이 그것을 쓰려고 했다 -> 부모 없는 자식은 없다

부모 테이블을 지워보자

  • ※ 연계 참조 무결성을 해치지 않고 삭제 하려면 자식이 먼저 삭제되고, 이후에 부모가 삭제 되어야 한다.
  • ※ 이 과정을 자동으로 수행해주는 on delete cascade 옵션이 있다.
  • 단. 테이블을 생성 할때 옵션을 넣어주어야 한다.

3. Unique 제약조건

  • 중복을 허용하지 않는 제약 조건
  • 테이블에 다수 존재 할 수 있다.
  • unipue + not null = pk -> 기본키가 없다고 하면 pk가 될수있다
    -> 그래서 후보키라고도 불리운다 ( 기본키가 될 수 있는 조건을 갖추므로.. )
 alter table [테이블명] add constraint [제약조건종류](컬럼명)

4. Check 제약조건

  • 조건이 맞지 않으면 받지 않는 제약조건
  • 주의 사항 : 조건은 기존 데이터가 만족해야할 조건을 걸어야 한다.
  • 안쓰는 이유 : 조건의 유연성이 떨어짐 , 조건 변경시 DDL을 수정해야 한다.
    -> 이럴경우 자바에서 먼저 수정해주면 된다

- ※ 어떤 조건이 걸려 있는지 파악하기 쉽지 않기에 잘 사용하지 않음

질문지

  1. DML, DCL, DDL

2 Transaction?

  1. roll back , commit ?

3.1 order by 란 / order by 의 위치

  1. autocommit ?

  2. 기본키 제약조건

  3. 복합키 제약조건

  4. 외래키?

  5. 식별관계와 비식별관계

  6. unique 제약조건?

9.1 테이블에 몇개 까지 존재하는지

  1. 연계 참조 무결성 제약조건
  • 어떤 경우에 에러가 뜨는지

11 특정한 옵션을 통해 삭제해주는 것은?

profile
[JAVA]

0개의 댓글