Oracle 12c 데이터베이스 07 - 스키마 정의, 자료형, 제약조건

💡 본 글은 ‘실습과 함께하는! 데이터베이스 Oracle 12c’ 강의 내용을 바탕으로 정리하였습니다.

스키마 정의, 자료형, 제약조건

자료형

구분 설명
NUMBER(a, b) 숫자 다루는 데이터 타입
number(10, 2): 소수점 기준으로 10자리, 소수점 이하 2자리
다른 시스템/언어와의 호환성을 위해 int/float 허용
문자열 CHAR(size): 고정 길이 문자열
VARCHAR2(size): 가변길이 문자열
LONG 2GB 이내의 문자열 처리
DATE 날짜와 관련한 데이터를 저장하는 데이터 타입
CLOB 4GB 이하의 문자열을 저장하는 데이터 타입
BLOB 4GB 이하의 바이너리 데이터를 저장하는 데이터 타입

스키마 정의

  • DDL(Datat Definition Language)
    • 데이터베이스와 테이블을 CRUD
    • 테이블에 대한 정보는 메타데이터로 데이터사전에 저장, 관리

(문법)

  -- 데이터베이스 생성
  CREATE DATABSE 데이터베이스명;

  -- 테이블 생성
  CREATE TABLE 테이블명 (컬럼명1 데이터타입(크기), 컬럼명2, ...);

제약조건

  • 입력 데이터의 제약 조건을 걸어 해당되지 않는 데이터는 입력되지 않음(일종의 유효성 검사)
  • 종류
구분 설명
NOT NULL NULL 값 저장 불가
UNIQUE 동일한 값 입력 불가
PRIMARY KEY 기본키 제약 조건(UNIQUE, NOT NULL)
FOREIGN KEY 외래키 제약 조건
CHECK 입력값 체크(ex. age >= 0)
DEFAULT 컬럼값이 입력되지 않으면 기본값 입력

💡 desc 테이블명으로는 제약조건이 다 나오지 않음. user_constraints 테이블을 조회하면 확인 가능.

(문법)

  CREATE 테이블명 (컬럼명1 데이터타입(크기) 제약조건, 칼럼명2, ...)

(예시)

  -- PRIMARY KEY
  CREATE TABLE cards (id int not null, name varchar2(255), address varchar2(255), PRIMARY KEY(id));

  -- FOREIGN KEY
  CREATE TABLE salary (id number not null, salary_amount number, card_id not null, PRIMARY KEY (id), FOREIGN KEY (card_id) REFERENCES cards(id));

시퀀스

  • 자동번호 생성기
    • 기본키로 사용하기 편하도록 숫자를 정해진 규칙에 의해 생성
    • 다른 DBMS의 AUTO_INCREMENT 속성에 대응하는 개념
  • 시퀀스 조회함수
    • CURRVAL()
    • NEXTVAL()

(문법)

  -- 시퀀스 생성
  CREATE SEQUENCE 시퀀스명 (START WITH N) (INCREMENT BY N);

  -- 시퀀스 조회
  SELECT 시퀀스명.NEXTVAL FROM DUAL;
  SELECT 시퀀스명.CURRVAL FROM DUAL;