💡 본 글은 ‘실습과 함께하는! 데이터베이스 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;