[Oracle/정리] 오라클 생성 시 자료형, 제약조건

2022. 9. 5. 23:03·🚀 from error to study/DB

<테이블 생성 시 오라클 자료형, 제약조건>

 

테이블이란?

행(ROW), 열(COLUMN)로 구성되는 가장 기본적인 데이터베이스 객체

모든 데이터는 테이블을 통해서 저장됨

(즉, 데이터를 보관하고자 한다면 테이블을 만들어야 함)

 

[ 표현법 ]

CREATE TABLE 테이블명 (

             컬럼명 자료형,

             컬럼명 자료형,

             …

);

 

<자료형>

CHAR(바이트 수): 최대 2000BYTE까지 지정 가능,

고정 길이(아무리 적은 값이 들어와도 공백으로 채워서 처음에 할당한 크기 유지)

성별, 주민등록번호처럼 주로 들어올 값의 글자 수가 정해져 있을 경우에 사용함

 

VARCHAR2(바이트 수): 최대 4000BYTE까지 지정 가능

가변 길이(적은 값이 들어오면 그 담긴 값에 맞춰 크기가 줄어듦)

집 주소, 아이디처럼 주로 값의 길이가 정해지지 않은 경우에 사용함

 

NUMBER: 정수/실수에 관계없이 숫자형을 표현함

 

DATE: 년, 월, 일, 시, 분, 초를 모두 포함한 개념

 

<컬럼에 주석을 다는 표현법>

COMMENT ON COLUMN 테이블명.컬럼명 IS ‘주석내용’;

 

 

제약조건(CONSTRAINT)이란?

원하는 데이터값만 보관하기 위해서 특정 컬럼마다 설정하는 제약이며,

제약조건이 부여된 컬럼에 들어올 데이터에 문제가 있는지 없는지 자동으로 검사할 목적으로 쓰임(= 데이터 무결성)

 

컬럼에 제약조건을 부여하는 방식

1) 컬럼레벨 방식: 컬럼명 자료형 CONSTRAINT 제약조건명 제약조건

▶ 제약조건을 부여하고자 하는 컬럼 뒤에 곧바로 기술하는 방식

 

2) 테이블레벨 방식: 컬럼명 자료형 모두 기술 후 앞에 콤마(,)를 반드시 찍고

CONSTRAINT 제약조건명 제약조건 (컬럼명)

 

▶ 제약조건명을 적지 않으면 오류 메시지가 SYS_C~~와 같은 방식으로 출력되기 때문에 파악하기 어려우므로 제약조건명을 붙이는 것을 권장함

 

<제약조건 종류>

1. NOT NULL 제약 조건 (오직 컬럼레벨만 사용 가능)

해당 컬럼에 반드시 값이 존재해야 할 경우 사용

▶ NOT NULL 제약조건 설정 시 해당 컬럼에는 NULL값이 들어올 수 없음

 

2. UNIQUE 제약 조건

컬럼에 중복값을 제한하는 제약조건

 

3. CHECK 제약조건:  CHECK(조건식)

컬럼에 기록될 수 있는 값에 대한 “조건”을 설정해 둘 수 있음

 

▶ 특정 컬럼에 들어올 값에 대해서 기본값 설정 가능

ex) MEM_DATE DATE DEFAULT SYSDATE NOT NULL

 

4. PRIMARY KEY(기본키, 주 키)

테이블에서 각 행들의 정보를 유일하게 식별할 수 있는 컬럼에 부여하는 제약조건

▶ 각 행들을 구분 지을 수 있는 식별자의 역할

▶ 식별자의 특징상 중복되지 않고, 존재해야만 하고, 값이 변할 일 없는 컬럼에 부여

▶ 한 테이블당 한 개의 컬럼에만 설정 가능

 

5. FOREIGN KEY(외래키)

해당 컬럼에 “다른 테이블에 존재하는 값만” 들어와야 하는 컬럼에 부여하는 제약조건

▶ 참조된 다른 테이블이 제공하고 있는 값만 들어올 수 있음

▶ 다른 테이블간의 관계를 형성할 수 있음( JOIN )

 

 

컬럼레벨 방식

컬럼명 자료형 CONSTRAINT 제약조건명 REFERENCES 참조할테이블명(참조할컬럼명)

 

테이블레벨 방식

CONSTRAINT 제약조건명 FOREIGN KEY (컬럼명) REFERENCES 참조할테이블명(참조할컬럼명)

*FOREIGN KEY 삭제 옵션

1) ON DELETE RESTRICTED: 삭제 제한 옵션, 자식 데이터가 존재하는 부모 데이터를 삭제하지 못함

▶ 생략 시 기본값으로 지정됨

2) ON DELETE SET NULL: 부모 데이터 삭제 시 해당 데이터를 사용하는 자식 데이터를 NULL로 변경하는 옵션

3) ON DELETE CASCADE: 부모 데이터 삭제 시 해당 데이터를 사용하는 자식 데이터를 같이 삭제하는 옵션

저작자표시 비영리 변경금지 (새창열림)
'🚀 from error to study/DB' 카테고리의 다른 글
  • [오라클] 시퀀스의 NEXTVAL 값 수정하기
  • [ORACLE] 오류 보고 정리
  • [Oracle] DML(SELECT)_JOIN 연습문제
  • [Oracle] DML(SELECE)_GROUP BY 연습문제
천재강쥐
천재강쥐
  • 천재강쥐
    디버거도 버거다
    천재강쥐
  • 전체
    오늘
    어제
    • Category (467)
      • 진짜 너무 궁금한데 이걸 나만 몰라...? (0)
      • 💾 Portfolio (2)
      • 🐤 CodingTest (28)
        • Java (20)
        • ᕕ(ꐦ°᷄д°᷅)ᕗ❌ (5)
      • 🚀 from error to study (142)
        • AI (1)
        • Cloud (2)
        • DB (12)
        • Front-End (16)
        • Github (14)
        • Java (39)
        • Mac (7)
        • Normal (29)
        • Server (22)
      • 📘 certificate (44)
        • 📘 리눅스마스터1급 (1)
        • 📘⭕️ 정보처리기사 (40)
        • 📘⭕️ SQLD (3)
      • 📗 self-study (234)
        • 📗 inflearn (35)
        • 📗 생활코딩 (8)
        • 📗 KH정보교육원 당산지원 (190)
      • 🎨 Scoop the others (0)
        • 📖 Peeking into other people.. (0)
        • 🇫🇷 (0)
        • 📘⭕️ 한국사능력검정시험 심화 (11)
        • 오블완 (4)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.1
천재강쥐
[Oracle/정리] 오라클 생성 시 자료형, 제약조건
상단으로

티스토리툴바