DDL (CREATE)

DONI·2021년 9월 30일
0

Oracle

목록 보기
10/22
post-thumbnail

🏹 데이터 딕셔너리

자원을 효율적으로 관리하기 위한 다양한 정보를 저장하는 시스템 테이블
사용자가 테이블을 생성하거나 사용자를 변경하는 등의 작업을 할 때
데이터베이스 서버에 의해 자동으로 갱신되는 테이블

  • USER_TABLES : 사용자가 작성한 테이블을 확인하는 뷰
    SELECT * FROM USER_TABLES;

  • DESC : 테이블의 구조 표시
    DESC MEMBER;


🏹 오라클 객체 종류

테이블(TABLE), 뷰(VIEW), 시퀀스(SEQUENCE), 인덱스(INDEX),
프로시저(PROCEDURE), 트리거(TRIGGER), 함수(FUNCTION),
패키지(PACKAGE), 동의어(SYNONYM), 사용자(USER)


🏹 오라클 자료형

  • NUMBER : 숫자 데이터 (정수, 실수 40자리)
  • CHAR : 고정길이 문자 데이터 (2000Byte)
  • VARVHAR2 : 가변길이 문자 데이터 (4000Byte) - 바이트 길이
  • NVARCHAR2 : 가변길이 문자 데이터 (4000Byte) - 문자 길이
  • DATE : 날짜 데이터
  • TIMESTAMP : DATE 확장형 (+ 밀리세컨드 단위)
  • BLOB : 대용량 이진 데이터 (4GB) - 파일 저장용 (이미지, 동영샹, 음악 등)
  • CLOB : 대용량 문자 데이터 (4GB) - 문자 저장용

🏹 컬럼 주석

테이블의 컬럼에 주석을 다는 구문
COMMENT ON COLUMN 테이블명.컬럼명 IS '주석내용';


🏹 제약 조건 (CONSTRAINTS)

사용자가 원하는 조건의 데이터를 유지하기 위해 특정 컬럼에 사용하는 제약 조건
입력 데이터에 문제가 있는지, 데이터의 수정/삭제 가능 여부 등을 자동으로 검사하기 위해 사용
  🌼 데이터 무결성 : 저장된 데이터의 정확성과 일관성을 보증하는 것 (중복 데이터 X)

  • USER_CONSTRAINTS : 사용자가 작성한 제약 조건을 확인하는 딕셔너리 뷰
  • USER_CONS_COLUMNS : 제약 조건이 걸려 있는 컬럼을 확인하는 딕셔너리 뷰

🏹 제약 조건 종류

  • NOT NULL
    : 데이터에 NULL을 허용하지 않음 (반드시 값이 기록되어야 하는 경우 사용)
      삽입/수정 시 NULL 값을 허용하지 않도록 컬럼 레벨에서 제한

  • UNIQUE
    : 중복된 값을 허용하지 않음 (단, NULL 값은 중복 삽입 가능)
      컬럼 레벨, 테이블 레벨에서 설정 가능

  • PRIMARY KEY한 테이블에 하나만 설정 가능
    : NULL과 중복 값을 허용하지 않음 → 식별자(Identifier) 역할
      컬럼 레벨, 테이블 레벨에서 설정 가능

  • FOREIGN KEY
    : 참조되는 테이블의 컬럼의 값이 존재하면 허용 (참조 무결성 제약 조건)
      PRIMARY KEY 컬럼, UNIQUE 컬럼만 외래키로 사용 가능
      참조되는 값은 제공되는 값 외에 NULL 사용 가능

    • FOREIGN KEY 삭제 옵션
      • ON DELETE SET NULL : 부모키 삭제 시 자식키를 NULL로 변경
      • ON DELETE CASCADE : 부모키 삭제 시 자식키도 함께 삭제
  • CHECK
    : 저장 가능한 데이터 값의 범위나 조건을 지정하여 설정한 값만 허용
      비교값은 리터럴만 사용 가능 (변하는 값 또는 함수 사용 불가)

 ⭐ 여러 컬럼을 묶어서 하나의 제약 조건으로 설정하였을 경우,
      각 컬럼이 모두 제약 조건에 위배될 경우에만 에러 발생


🚩 소스코드 - FOREIGN KEY 제약 조건

  • 컬럼 레벨
CREATE TABLE USER_USED_FK(
  USER_NO NUMBER PRIMARY KEY,
  USER_NAME VARCHAR2(30),
  GRADE_CODE NUMBER REFERENCES USER_GRADE (GRADE_CODE)
  -- 컬럼 레벨 (제약 조건명 미지정)
  GRADE_CODE NUMBER
);
  • 테이블 레벨
CREATE TABLE USER_USED_FK(
  USER_NO NUMBER PRIMARY KEY,
  USER_NAME VARCHAR2(30),
  GRADE_CODE NUMBER,
  FOREIGN KEY (GRADE_CODE) REFERENCES USER_GRADE 
  -- 테이블 레벨(제약 조건명 미지정, 참조 컬럼 생략)
);
profile
틀린 내용이 있다면 댓글 또는 이메일로 알려주세요 ❤ꔛ❜

0개의 댓글