독서하는 개발자's Blog

반응형

인덱스 생성하는법

CREATE INDEX 생성될 인덱스명  ON 스키마(속성명);

 

외래키에 대한 설명

  • 테이블 생성시 설정할 수 있다.
  • 외래키 값은 널 값을 가질 수 있다.
  • 한 테이블에 여러개가 존재할 수 있다.
  • 외래키 값은 참조 무결성 제약을 받을 수 있다.

 

Check  제약조건(Contstraint)은 데이터베이스에서 데이터의 무결성을 유지하기 위하여 테이블의 특정 컬럼에 설정하는 제약.

 

특정 컬럼데이터만 삭제하는 명령어

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

 

참조무결성 규정

ex) FOREIGN KEY(외래키가 될 컬럼) REFERENCES 참조할 스키마(속성명) ON DELETE CASCADE;

Delete(/Modefy) Action : Cascade, Set Null, Set Default, Restrict (부서 - 사원)

  1. Cascade : Master 삭제 시 Child 같이 삭제
  2. Set Null : Master 삭제 시 Child 해당 필드 Null
  3. Set Default : Master 삭제 시 Child 해당 필드 Default 값으로 설정
  4. Restrict : Child 테이블에 PK 값이 없는 경우만 Master 삭제 허용
  5. No Action : 참조무결성을 위반하는 삭제 / 수정 액션을 취하지 않음

 

Insert Action : Automatic, Set Null, Set Default, Dependent (부서 - 사원)

  1. Automatic : Master 테이블에 PK가 없는 경우 Master 테이블 PK를 생성 후 Child 입력
  2. Set Null : Master 테이블에 PK가 없는 경우 Child 외부키를 Null 값으로 처리
  3. Set Default : Master 테이블에 PK가 없는 경우 Child 외부키를 지정된 기본값으로 입력
  4. Dependent : Master  테이블에 PK가 존재할 때만 Child 입력 허용
  5. No Action : 참조무결성을 위반하는 입력 액션을 취하지 않음

STADIUM 테이블의 이름을 STADIUM_JSC로 변경하는 SQL을 작성하시오 ( ANSI 표준 기준 )

-> DDL언어인 RENAME을 사용하면 된다.

-> RENAME STADIUM TO  STADIUM_JSC

 

컬럼 (ID, AMT, DEGREE)일 경우

INSERT INTO TBL VALUES(1, 100) => 틀린 문법

=> 삽입 컬럼을 명시하지 않았을 경우 모든 컬럼을 삽입해야 한다.

 

A테이블(주문)을 B테이블(고객)이 참조할 경우

EX) ALTER TABLE 주문 ADD CONSTRAINT FK_001 FOFEIGN KEY (고객 ID) REFERENCES 고객 (고객ID) ON DELETE SET NULL;

=>  참조된 A테이블에 B에 없는 데이터를 INSERT를 하면 무결정 제약 오류가 발생함

 

테이블 삭제할 때, TRUNCATE TABLE 과 DROP TABLE은 로그를 남기지 않음

테이블 데이터 삭제 명령어

  • TRUNCATE TABLE

=> 특정 테이블의 모든 데이터를 삭제하고, 디스크 사용량을 초기화 하기위해서 사용 (테이블 스키마 정의 삭제안됨)

=> UNDO를 위한 데이터를 생성하지 않기 때문에 동일 데이터량 삭제시 DELETE보다 빠르다.

  • DELETE TABLE

=> 테이블의 데이터를 모두 삭제하지만, 디스크 사용량을 초기화 하지는 않는다.

  • DROP TABLE

=> 테이블의 데이터를 모두 삭제하고 디스크 사용량도 없앨(초기화) 수 있지만, 테이블의 스키마 정의도 함께 삭제됨

DROP TRUNCATE DELETE
DDL DDL(일부 DML성격) DML
ROLLBACK 불가능 ROLLBACK 불가능 COMMIT 이전 ROLLBACK가능
Auto Commit Auto Commit 사용자 Commit
테이블이 사용했던 Storage를 모두 Release 테이블이 사용했던 Storage중 최초 테이블 생성시 할당된 Storage만 남기고 Release 데이터를 모두 Delete해도 사용했던 Storage는 Release되지 않음
테이블의 정의 자체를 완전히 삭제함 테이블을 최초 생성된 초기상태로 만듬 데이터만 삭제

 

DISTINCT : 중복된 데이터가 있는경우 1건으로 처리해서 출력 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band