1. DML

  • 참조 무결성 옵션
    CASCADE : 부모 삭제 시 자식도 함께 삭제
    SET NULL : 부모 삭제 시 자식 FK 값을 NULL로 변경
    RESTRICT : 자식 테이블에 참조하는 행이 없을 경우에만 부모 삭제 허용
    AUTOMATIC : 부모에 PK가 없으면 자동으로 부모 행 먼저 삽입
    DEPENDENT : 부모 테이블에 PK가 존재할 때만 자식 행 입력 허용
  • DISTINCT
    • 중복 데이터는 1건으로 취급
    • 여러 컬럼이 올 경우 → 주어진 컬럼 값이 모두 동일한 행들만 중복 처리
  • NOT NULL 컬럼에 INSERT 시 값 미지정 → 오류 발생! (✕ 자동 NULL 입력 아님)
  • DELETE / TRUNCATE / DROP 비교
    구분 DELETE TRUNCATE DROP
    분류 DML DDL DDL
    롤백 가능 불가
    (auto commit)
    불가
    (auto commit)
    속도 느림 빠름 빠름
    테이블 구조 유지 유지(테이블 값 지움) 삭제(테이블 삭제)

2. TCL - 트랜잭션 특징 (ACID)

  • 원자성(Atomicity): All or Nothing - 전부 실행되거나 전부 실행되지 않아야 함
  • 일관성(Consistency): 실행 전 정상이면 실행 후에도 정상 상태 유지
  • 고립성(Isolation): 실행 중 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들면 안 됨
  • 지속성(Durability): 성공적으로 수행되면 갱신 내용은 영구적으로 저장

3. DDL

  • 제약조건 문법
    CONSTRAINT 이름 PRIMARY KEY (컬럼명)
    REGR_NO NUMBER(10) → NULL 허용 (기본값)
    REGR_NO NUMBER(10) NOT NULL → NULL 불가
  • SQL Server ALTER COLUMN: 한 번에 하나의 컬럼만 변경 가능 (여러 컬럼 동시 수정 불가!)
    ALTER TABLE 기관분류 ALTER COLUMN 분류명 VARCHAR(30)
    NOT NULL
    ALTER TABLE 기관분류 ALTER COLUMN 등록일자 DATE NOT NULL;
    
    ALTER TABLE 기관분류 ALTER COLUMN (분류명 VARCHAR(30), 
    등록일자 DATE NOT NULL);
    => 여러개 컬럼 동시 수정 불가능!


  • 테이블 생성 시 주의사항
    • 컬럼 뒤 데이터 유형 반드시 지정 (o)
    • 예약어는 테이블명/컬럼명으로 사용 불가 (x)
    • 테이블명은 단수형 사용 (복수형 x)
  • 외래키(FK)
    • FK는 NULL을 가질 수 있다. (o NULL 값허용)
    • FK는 참조 무결성 제약을 받을 수 있다. (○)
  • 각 행을 유일하게 식별할 수 있는 속성 또는 집합 → 후보키
    다른 테이블 기본키 참조 키워드 → REFERENCES (외래키)
    인위적 식별자 → 대리키(Surrogate Key)
  • 컬럼 삭제: ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
  • Oracle DDL 특징: DDL 실행 시 묵시적 COMMIT 자동 수행
    SQL Server는 DDL도 트랜잭션 내에서 롤백 가능

4. DCL

  • REVOKE로 권한 취소 시 → WITH GRANT OPTION으로 다른 사용자에게 부여한 권한도 연쇄적으로 모두 취소

 

 

+ Recent posts